C/C++ Secure Coding Training Course
Developing robust C and C++ applications demands proactive defense against malicious exploitation, memory corruption, and vulnerabilities that bypass input validation. This course explores common vulnerability patterns such as buffer overflows, use-after-free errors, integer overflows, and type confusion. Participants will implement secure coding standards, leverage static analysis tools, and adopt defensive programming practices to remove weaknesses, ensure proper input sanitization, and build software that is resilient to cyber threats.
This course is available as onsite live training in Kenya or online live training.Course Outline
- C/C++ programming bugs
- Protection principles
- Input validation
- Improper error and exception handling
- Buffer overflow
- Stack overflow
- Heap overflow
- Protection against stack overflow
- Address Space Layout Randomization (ASLR)
- Secure coding resources
Requirements
Fundamental knowledge of C/C++
Need help picking the right course?
southafrica@nobleprog.co.za or +27 (0)10 005 5793
C/C++ Secure Coding Training Course - Enquiry
Testimonials (6)
Experience sharing, it's teacher's know-how and valuable.
Carey Fan - Logitech
Course - C/C++ Secure Coding
the balance between lectures and practice, the rhythm, the trainer knowledge and pedagogic skill
Armando Pinto - EID
Course - C/C++ Secure Coding
The trainer provided up-to-date information and valuable references and tools.
Jose Vicente - EID
Course - C/C++ Secure Coding
to get a lot of good info about the course subject
Paulo Pereira - EID
Course - C/C++ Secure Coding
The coach solid knowledge and the experience, nice slides, good examples.
Celso Almeida - EID
Course - C/C++ Secure Coding
General course information
Paulo Gouveia - EID
Course - C/C++ Secure Coding
Related Courses
Advanced C++
35 HoursThis instructor-led, live training in Kenya (online or onsite) is aimed at developers who wish to use advanced C++ programming techniques to develop complex, secure, and high-performance systems and applications.
By the end of this training, participants will be able to:
- Set up a development environment that includes all C++ libraries, packages and frameworks.
- Understand the features, components, and basic elements of C++.
- Create complex C++ applications using advanced programming techniques.
- Learn how to write readable, fast, and secure code in C++.
- Know the common security pitfalls in C++ language and how to mitigate them.
- Implement test strategies for code quality and security control.
- Use the diagnostics and debugging tools in C++ development.
Network Security and Secure Communication
21 HoursBuilding a secure networked application can be challenging, even for developers who have prior experience with cryptographic building blocks like encryption and digital signatures. To help participants grasp the role and application of these cryptographic primitives, this course first establishes a solid foundation on the core requirements of secure communication: secure acknowledgment, integrity, confidentiality, remote identification, and anonymity. It also highlights common threats that compromise these requirements alongside practical, real-world solutions.
Since cryptography is a critical component of network security, the course covers essential cryptographic algorithms in symmetric cryptography, hashing, asymmetric cryptography, and key agreement. Rather than focusing on complex mathematical theories, these concepts are explored from a developer's perspective, featuring typical use-case examples and practical considerations such as public key infrastructures. The course also introduces security protocols used across various domains of secure communication, with a detailed examination of widely adopted protocol families like IPSEC and SSL/TLS.
Common cryptographic vulnerabilities are discussed in relation to specific algorithms and protocols, including BEAST, CRIME, TIME, BREACH, FREAK, Logjam, Padding oracle, Lucky Thirteen, POODLE, and the RSA timing attack. For each issue, practical implications and potential consequences are outlined, avoiding deep mathematical derivations.
Finally, given that XML technology is central to data exchange for networked applications, the course addresses XML security. This includes the use of XML in web services and SOAP messages, along with protective measures such as XML Signature and XML Encryption. It also covers weaknesses in these protections and XML-specific security issues, including XML injection, XML external entity (XXE) attacks, XML bombs, and XPath injection.
Participants attending this course will
- Understand basic concepts of security, IT security, and secure coding
- Understand the requirements of secure communication
- Learn about network attacks and defenses at different OSI layers
- Have a practical understanding of cryptography
- Understand essential security protocols
- Understand some recent attacks against cryptosystems
- Get information about some recent related vulnerabilities
- Understand security concepts of Web services
- Get sources and further readings on secure coding practices
Audience
Developers, Professionals
Advanced Java Security
21 HoursEven seasoned Java developers often do not fully master the diverse security services provided by Java, nor are they always aware of the various vulnerabilities that impact web applications built with Java.
In addition to introducing the security components of Standard Java Edition, this course addresses security concerns within Java Enterprise Edition (JEE) and web services. The discussion of specific services begins with the fundamentals of cryptography and secure communication. Participants will explore declarative and programmatic security techniques in JEE through various exercises, while also examining both transport-layer and end-to-end security for web services. Practical exercises allow participants to apply these APIs and tools, providing hands-on experience with all discussed components.
The course also covers and explains the most common and severe programming flaws associated with the Java language and platform, as well as web-related vulnerabilities. Beyond typical bugs committed by Java developers, the security vulnerabilities addressed include both language-specific issues and problems arising from the runtime environment. All vulnerabilities and corresponding attacks are demonstrated through clear, understandable exercises, followed by recommended coding guidelines and potential mitigation strategies.
Participants attending this course will
- Understand the fundamental concepts of security, IT security, and secure coding
- Learn about web vulnerabilities beyond the OWASP Top Ten and how to avoid them
- Understand the security concepts of web services
- Learn to utilize various security features within the Java development environment
- Gain a practical understanding of cryptography
- Understand the security solutions offered by Java EE
- Learn about typical coding mistakes and how to prevent them
- Gain information on recent vulnerabilities in the Java framework
- Acquire practical knowledge in using security testing tools
- Receive resources and further reading materials on secure coding practices
Audience
Developers
.NET, C# and ASP.NET Security Development
14 HoursToday, a variety of programming languages can be used to compile code for the .NET and ASP.NET frameworks. While this environment offers robust tools for security development, developers must understand how to apply architecture-level and code-level programming techniques to implement the required security functionality, avoid vulnerabilities, and limit their potential exploitation.
This course aims to equip developers with practical skills through numerous hands-on exercises. Participants will learn how to prevent untrusted code from executing privileged actions, secure resources via strong authentication and authorization, manage remote procedure calls, handle sessions effectively, and explore various implementations for specific functionalities.
The course introduces various vulnerabilities by highlighting typical programming errors made when using .NET. It also examines ASP.NET vulnerabilities in the context of different environment settings and their impact. Furthermore, the topic of ASP.NET-specific vulnerabilities covers general web application security challenges as well as specialized issues and attack methods, such as ViewState attacks and string termination attacks.
Participants attending this course will
- Understand the fundamental concepts of security, IT security, and secure coding
- Learn about web vulnerabilities beyond the OWASP Top Ten and how to avoid them
- Master the use of various security features within the .NET development environment
- Gain practical knowledge on using security testing tools
- Identify typical coding mistakes and learn how to prevent them
- Stay informed about recent vulnerabilities in .NET and ASP.NET
- Access sources and further reading materials on secure coding practices
Audience
Developers
Secure coding in PHP
21 HoursThis course equips PHP developers with the essential skills needed to build applications that are resilient against modern internet-based attacks. The curriculum explores web vulnerabilities using practical PHP examples that extend beyond the OWASP Top Ten, addressing a wide range of issues such as various injection attacks, script injections, session handling weaknesses in PHP, insecure direct object references, file upload problems, and more. PHP-specific vulnerabilities are categorized into standard vulnerability types, including missing or inadequate input validation, improper error and exception handling, misuse of security features, and time- and state-related issues. For the latter category, we examine attacks such as open_basedir circumvention, denial-of-service via magic float manipulation, and hash table collision attacks. In every scenario, participants will learn the critical techniques and functions required to mitigate these risks.
A significant emphasis is placed on client-side security, tackling security concerns related to JavaScript, Ajax, and HTML5. The course introduces several PHP security extensions, such as hash, mcrypt, and OpenSSL for cryptographic purposes, as well as Ctype, ext/filter, and HTML Purifier for robust input validation. Best practices for hardening are discussed in the context of PHP configuration (specifically php.ini), Apache, and server-level settings in general. Furthermore, the course provides an overview of various security testing tools and techniques available to developers and testers, including security scanners, penetration testing methods, exploit packs, sniffers, proxy servers, fuzzing tools, and static source code analyzers.
Both the introduction of vulnerability concepts and configuration practices are reinforced through numerous hands-on exercises. These demonstrations illustrate the consequences of successful attacks, show how to apply mitigation strategies, and guide participants in using various extensions and tools effectively.
Participants attending this course will
- Grasp the fundamental concepts of security, IT security, and secure coding
- Understand web vulnerabilities that extend beyond the OWASP Top Ten and learn how to prevent them
- Acquire knowledge of client-side vulnerabilities and secure coding standards
- Develop a practical understanding of cryptography
- Learn to utilize various built-in security features of PHP
- Identify typical coding mistakes and understand how to avoid them
- Stay informed about recent vulnerabilities within the PHP framework
- Gain practical experience in using security testing tools
- Access resources and further readings on secure coding practices
Audience
Developers
Microsoft SDL Core
14 HoursThis comprehensive SDL core training offers an in-depth look at secure software design, development, and testing via the Microsoft Secure Development Lifecycle (SDL). It presents a foundational Level 100 overview of SDL's essential components, followed by design strategies aimed at identifying and rectifying vulnerabilities during the early stages of the development process.
Focusing on the development phase, the course outlines common security-related programming errors in both managed and native code. Attack vectors associated with these vulnerabilities are discussed alongside mitigation techniques, all illustrated through practical, hands-on exercises that engage participants in live hacking scenarios. The training introduces various security testing methods and demonstrates the effectiveness of different testing tools. Participants gain a clear understanding of how these tools operate by applying them to previously discussed vulnerable code through practical exercises.
By the end of this course, participants will be able to
Comprehend fundamental concepts of security, IT security, and secure coding
Familiarize themselves with the key steps of the Microsoft Secure Development Lifecycle
Acquire knowledge of secure design and development practices
Understand principles of secure implementation
Grasp the methodology of security testing
- Access resources and further reading materials on secure coding practices
Target Audience
Developers, Managers
C++ for Embedded Systems
21 HoursIs C++ appropriate for embedded systems like microcontrollers and real-time operating systems?
Should object-oriented programming be applied in microcontroller environments?
Is C++ too abstracted from the hardware to ensure efficiency?
This instructor-led live training explores these questions, demonstrating through discussion and hands-on practice how C++ can be utilized to develop embedded systems with code that is precise, readable, and efficient. Participants will apply theoretical knowledge by building a sample embedded application in C++.
Upon completion of this training, participants will be able to:
- Grasp the principles of object-oriented modeling, embedded software programming, and real-time programming
- Generate code for embedded systems that is compact, fast, and secure
- Prevent code bloat resulting from templates, exceptions, and other language features
- Understand challenges associated with using C++ in safety-critical and real-time systems
- Debug a C++ program on a target device
Audience
- Developers
- Designers
Format of the course
- A blend of lectures, discussions, exercises, and extensive hands-on practice
C++ 11 Programming
14 HoursThis two-day course is designed for C++ developers looking to implement the C++11 standard in their professional work. It is especially beneficial for those working on financial applications, covering all new features with practical coding examples to be carried out in the lab.
Accelerated C++ Programming with CUDA
8 HoursThis instructor-led, live training in Kenya (online or onsite) targets C++ developers who want to use CUDA to accelerate applications, write high-performance GPU kernels, and leverage parallel algorithm libraries for scientific computing, data processing, and machine learning workloads.
DevOps Security: Creating a DevOps Security Strategy
7 HoursIn this instructor-led, live course in Kenya, participants will learn how to formulate an effective security strategy to address the challenges posed by DevOps security.
EC-Council Certified DevSecOps Engineer (ECDE)
28 HoursThe EC-Council Certified DevSecOps Engineer (ECDE) is a practical course designed to empower professionals with the skills necessary to integrate security throughout the DevOps lifecycle, ensuring secure software development from the initial planning stages through to deployment.
This instructor-led live training, available either online or on-site, targets intermediate-level software and DevOps professionals aiming to embed security practices into Continuous Integration and Continuous Deployment (CI/CD) pipelines, thereby guaranteeing the delivery of secure and compliant code.
Upon completion of this training, participants will be able to:
- Comprehend the core principles and practices of DevSecOps.
- Safeguard every stage of the CI/CD pipeline using automated security tools.
- Adopt secure coding methodologies and implement vulnerability scanning techniques.
- Effectively prepare for the ECDE certification through practical lab exercises and review sessions.
Course Format
- Engaging interactive lectures and discussions.
- Practical application of DevSecOps tools within simulated pipelines.
- Guided exercises centred on secure development and deployment processes.
Course Customization Options
- To request tailored training for this course that aligns with your team’s specific workflows or toolchain, please contact us to make arrangements.
Using C++ in Embedded Systems - Applying C++11/C++14
21 HoursThis training program aims to present C++ as the natural extension of C for object-oriented embedded system development. Because C++ encompasses C, the course guides participants through a seamless transition from C to C++, examining the internal mechanisms of C++ implementation. This insight is particularly crucial when deploying C++ in resource-constrained embedded environments. With the C++ standard undergoing significant updates with C++11 and the forthcoming C++14, this course focuses on key features introduced in these revisions that are highly beneficial for embedded development, such as high-performance memory management, concurrency in multicore systems, and bare-metal programming close to the hardware.
OBJECTIVES AND BENEFITS
The primary goal of this course is to enable you to utilize C++ in a correct and effective manner.
- Introduce C++ as an object-oriented alternative within the context of embedded systems
- Highlight the similarities and differences between C++ and C
- Understand various memory management strategies, with a focus on move semantics introduced in C++11
- Examine the underlying mechanics to understand how different C++ paradigms translate to machine code
- Utilize templates to create type-safe, high-level abstractions for bare-metal, hardware-proximate programming (including memory-mapped I/O and interrupts), particularly leveraging variadic templates from C++11
- Present useful design patterns applicable to embedded contexts
- Include practical exercises to reinforce concept understanding
TARGET AUDIENCE
This training is designed for C++ programmers who wish to begin applying C++ in embedded system projects.
PREREQUISITES
The course assumes fundamental knowledge of C++ programming, equivalent to completing our 'C++ – Level 1' and 'C++ Level 2 – Introducing C++11' courses.
PRACTICAL EXERCISES
Throughout the training, you will practice the concepts presented through a series of exercises. We will utilize the open-source and free Eclipse integrated development environment.
How to Write Secure Code
35 HoursThis Course in Kenya aims to help in the following:
- Help Developers to master the techniques of writing Secure Code
- Help Software Testers to test the security of the application before publishing to the production environment
- Help Software Architects to understand the risks surrounding the applications
- Help Team Leaders to set the security base lines for the developers
- Help Web Masters to configure the Servers to avoid miss-configurations
Secure Developer Java (Inc OWASP)
21 HoursThis course explores secure coding principles and practices for Java, utilizing the testing methodology of the Open Web Application Security Project (OWASP). The OWASP is an online community dedicated to producing freely accessible articles, methodologies, documentation, tools, and technologies aimed at enhancing web application security.
Secure Developer .NET (Inc OWASP)
21 HoursThis course examines secure coding concepts and principles within ASP.NET, utilizing the testing methodology of the Open Web Application Security Project (OWASP). OWASP is an online community that produces freely available articles, methodologies, documentation, tools, and technologies dedicated to web application security.
The course delves into the security features of the .NET Framework and demonstrates how to secure web applications.