Formation Programmation sécurisée en C/C++
Écrire du code C et C++ sécurisé exige une défense rigoureuse contre les exploitations malveillantes, la corruption de la mémoire et les contournements de la validation des entrées. Ce programme examine des modèles de vulnérabilités tels que les débordements de tampon, l'utilisation après libération, les débordements entiers et les erreurs de type. Les participants appliquent des directives de codage sécurisé, des outils d'analyse statique et des techniques de programmation défensive pour éliminer les faiblesses, imposer la sanitisation des entrées et livrer un logiciel durci résistant aux cyberattaques.
Plan du cours
- Bugs de programmation en C/C++
- Principes de protection
- Validation des entrées
- Mauvaise gestion des erreurs et des exceptions
- Débordement de tampon
- Débordement de pile
- Débordement de tas
- Protection contre le débordement de pile
- Randomisation de l'emplacement de l'espace d'adressage (ASLR)
- Ressources de codage sécurisé
Pré requis
Les bases du C/C++
Les formations ouvertes requièrent plus de 3 participants.
Formation Programmation sécurisée en C/C++ - Réservation
Formation Programmation sécurisée en C/C++ - Demande de renseignements
Nos clients témoignent (6)
Le partage d'expérience, c'est le savoir-faire et la valeur de l'enseignant.
Carey Fan - Logitech
Formation - C/C++ Secure Coding
Traduction automatique
l'équilibre entre les cours magistraux et la pratique, le rythme, les connaissances du formateur et ses compétences pédagogiques
Armando Pinto - EID
Formation - C/C++ Secure Coding
Traduction automatique
Le formateur a fourni des informations à jour et des références et outils précieux.
Jose Vicente - EID
Formation - C/C++ Secure Coding
Traduction automatique
pour obtenir de nombreuses informations utiles sur le sujet du cours
Paulo Pereira - EID
Formation - C/C++ Secure Coding
Traduction automatique
Le coach possède une solide connaissance et de l'expérience, des diapositives agréables, de bons exemples.
Celso Almeida - EID
Formation - C/C++ Secure Coding
Traduction automatique
Informations générales sur le cours
Paulo Gouveia - EID
Formation - C/C++ Secure Coding
Traduction automatique
Cours à venir
Cours Similaires
C++ avancé
35 HeuresCette formation en présentiel ou en ligne, dispensée par un formateur à Belgique, s'adresse aux développeurs souhaitant utiliser des techniques de programmation C++ avancées pour créer des systèmes et des applications complexes, sécurisés et à haute performance.
À l'issue de cette formation, les participants seront capables de :
- Configurer un environnement de développement incluant toutes les bibliothèques, packages et frameworks C++.
- Comprendre les fonctionnalités, les composants et les éléments de base du C++.
- Créer des applications C++ complexes en utilisant des techniques de programmation avancées.
- Apprendre à écrire du code lisible, rapide et sécurisé en C++.
- Connaître les pièges de sécurité courants dans le langage C++ et savoir comment les atténuer.
- Mettre en œuvre des stratégies de test pour le contrôle de la qualité et de la sécurité du code.
- Utiliser les outils de diagnostic et de débogage dans le développement C++.
Sécurité des réseaux et communications sécurisées
21 HeuresLa mise en œuvre d'une application réseau sécurisée peut s'avérer difficile, même pour des développeurs ayant préalablement utilisé divers composants cryptographiques (tels que le chiffrement et les signatures numériques). Afin que les participants comprennent le rôle et l'utilisation de ces primitives cryptographiques, nous établirons d'abord des bases solides sur les exigences principales de la communication sécurisée – accusé de réception sécurisé, intégrité, confidentialité, identification à distance et anonymat – tout en présentant les problèmes typiques susceptibles de compromettre ces exigences, ainsi que des solutions concrètes.
La cryptographie étant un aspect critique de la sécurité des réseaux, nous aborderons également les algorithmes cryptographiques les plus importants en cryptographie symétrique, en hachage, en cryptographie asymétrique et en échange de clés. Au lieu de proposer un fondement mathématique approfondi, ces éléments sont examinés du point de vue du développeur, avec des exemples d'utilisations typiques et des considérations pratiques liées à l'usage du chiffrement, telles que les infrastructures à clés publiques. Les protocoles de sécurité dans de nombreux domaines des communications sécurisées sont présentés, avec un examen approfondi des familles de protocoles les plus répandues, comme IPSEC et SSL/TLS.
Les vulnérabilités cryptographiques courantes sont analysées, tant en lien avec certains algorithmes cryptographiques qu'avec les protocoles de chiffrement, notamment BEAST, CRIME, TIME, BREACH, FREAK, Logjam, l'attaque par oracle de rembourrage (Padding oracle), Lucky Thirteen, POODLE et similaires, ainsi que l'attaque par chronométrage sur RSA. Dans chaque cas, les implications pratiques et les conséquences potentielles de chaque problème sont décrites, sans entrer dans les détails mathématiques approfondis.
Enfin, la technologie XML étant centrale pour l'échange de données entre applications réseau, nous décrirons les aspects de sécurité liés au XML. Cela inclut l'utilisation du XML dans les services Web et les messages SOAP, ainsi que les mesures de protection telles que la signature XML et le chiffrement XML – mais aussi les faiblesses de ces mécanismes de protection et les problèmes de sécurité spécifiques au XML, comme l'injection XML, les attaques par entités externes XML (XXE), les bombes XML et l'injection XPath.
Les participants suivant cette formation apprendront à
- Comprendre les concepts de base de la sécurité, de la sécurité informatique et du codage sécurisé
- Comprendre les exigences d'une communication sécurisée
- Apprendre les attaques et les défenses réseau aux différentes couches du modèle OSI
- Acquérir une compréhension pratique de la cryptographie
- Comprendre les protocoles de sécurité essentiels
- Comprendre certaines attaques récentes contre les systèmes cryptographiques
- Obtenir des informations sur certaines vulnérabilités récentes apparentées
- Comprendre les concepts de sécurité des services Web
- Disposer de sources et de lectures complémentaires sur les pratiques de codage sécurisé
Public cible
Développeurs, Professionnels
Sécurité avancée de Java
21 HeuresMême les programmeurs Java expérimentés ne maîtrisent pas nécessairement tous les services de sécurité offerts par Java et ne sont pas non plus conscients des différentes vulnérabilités pertinentes pour les applications web écrites en Java.
Le cours – outre l’introduction aux composants de sécurité de la plate-forme Standard Java Edition – traite des questions de sécurité liées à Java Enterprise Edition (JEE) et aux services web. L’analyse des services spécifiques est précédée par les fondements de la cryptographie et de la communication sécurisée. Divers exercices portent sur les techniques de sécurité déclarative et programmatique dans JEE, tandis que la sécurité au niveau du transport et de bout en bout des services web est abordée. L’utilisation de tous les composants est présentée à travers plusieurs exercices pratiques, permettant aux participants d’expérimenter eux-mêmes les API et outils discutés.
Le cours explore également et explique les failles de programmation les plus fréquentes et graves du langage Java et de sa plateforme, ainsi que les vulnérabilités liées au web. Outre les bugs typiques commis par les programmeurs Java, les vulnérabilités de sécurité introduites couvrent à la fois les problèmes spécifiques au langage et les problèmes découlant de l’environnement d’exécution. Toutes les vulnérabilités et les attaques associées sont démontrées à travers des exercices compréhensibles, suivis des directives de codage recommandées et des techniques d’atténuation possibles.
Les participants suivant ce cours sauront
- Comprendre les concepts de base de la sécurité, de la sécurité informatique et du codage sécurisé
- Apprendre les vulnérabilités web au-delà de l’OWASP Top Ten et savoir comment les éviter
- Comprendre les concepts de sécurité des services web
- Savoir utiliser diverses fonctionnalités de sécurité de l’environnement de développement Java
- Avoir une compréhension pratique de la cryptographie
- Comprendre les solutions de sécurité de Java EE
- Se familiariser avec les erreurs de codage courantes et leur prévention
- Obtenir des informations sur certaines vulnérabilités récentes dans le framework Java
- Acquérir des connaissances pratiques sur l’utilisation des outils de test de sécurité
- Obtenir des sources et des lectures complémentaires sur les pratiques de codage sécurisé
Public
Développeurs
Développement de la sécurité avec .NET, C# et ASP.NET
14 HeuresAujourd'hui, de nombreux langages de programmation permettent de compiler du code pour les environnements .NET et ASP.NET. Cet environnement offre des outils puissants pour le développement de la sécurité, mais les développeurs doivent savoir appliquer les techniques de programmation au niveau de l'architecture et du code afin d'implémenter les fonctionnalités de sécurité souhaitées, éviter les vulnérabilités ou limiter leur exploitation.
Ce cours a pour objectif d'apprendre aux développeurs, à travers de nombreux exercices pratiques, comment empêcher du code non fiable d'effectuer des actions privilégiées, protéger les ressources grâce à une authentification et une autorisation robustes, fournir des appels de procédure à distance (RPC), gérer les sessions, présenter différentes implémentations pour certaines fonctionnalités, et bien plus encore.
L'introduction aux différentes vulnérabilités commence par la présentation de problèmes de programmation typiques commis lors de l'utilisation de .NET. La discussion sur les vulnérabilités d'ASP.NET traite également de divers paramètres d'environnement et de leurs effets. Enfin, le sujet des vulnérabilités spécifiques à ASP.NET aborde non seulement certains défis généraux de sécurité des applications web, mais aussi des problèmes particuliers et des méthodes d'attaque, telles que l'attaque de ViewState ou les attaques par terminaison de chaîne.
Les participants à ce cours seront capables de
- Comprendre les concepts de base de la sécurité, de la sécurité informatique et du codage sécurisé
- Apprendre les vulnérabilités web au-delà du OWASP Top Ten et savoir comment les éviter
- Apprendre à utiliser les diverses fonctionnalités de sécurité de l'environnement de développement .NET
- Obtenir des connaissances pratiques sur l'utilisation des outils de test de sécurité
- Apprendre à connaître les erreurs de codage courantes et savoir comment les éviter
- Obtenir des informations sur certaines vulnérabilités récentes dans .NET et ASP.NET
- Obtenir des sources et des lectures complémentaires sur les pratiques de codage sécurisé
Public cible
Développeurs
Programmation sécurisée en PHP
21 HeuresLe cours dispensent les compétences essentielles pour les développeurs PHP afin de rendre leurs applications résistantes aux attaques contemporaines via Internet. Les vulnérabilités web sont abordées à travers des exemples en PHP qui dépassent le OWASP Top Ten, traitant de divers types d'attaques par injection, d'injections de scripts, d'attaques contre la gestion de session de PHP, de références directes d'objets non sécurisées, de problèmes liés aux téléchargements de fichiers, et bien d'autres. Les vulnérabilités liées à PHP sont présentées regroupées par les types standards de vulnérabilités : validation d'entrée manquante ou inadéquate, gestion incorrecte des erreurs et des exceptions, utilisation inadéquate des fonctionnalités de sécurité et problèmes liés au temps et à l'état. Pour ces derniers, nous discuterons d'attaques comme l'évasion de open_basedir, le déni de service par le biais de magic float ou l'attaque par collision de table de hachage. Dans tous les cas, les participants prendront familiarité avec les techniques et fonctions les plus importantes à utiliser pour atténuer les risques énumérés.
Un accent particulier est mis sur la sécurité côté client, en abordant les problèmes de sécurité de JavaScript, Ajax et HTML5. Un certain nombre d'extensions liées à la sécurité pour PHP sont introduites comme hash, mcrypt et OpenSSL pour la cryptographie, ou Ctype, ext/filter et HTML Purifier pour la validation des entrées. Les meilleures pratiques de durcissement sont données en relation avec la configuration de PHP (paramètres de php.ini), Apache et le serveur en général. Enfin, une vue d'ensemble est donnée sur divers outils et techniques de test de sécurité que les développeurs et testeurs peuvent utiliser, y compris les scanners de sécurité, les tests de pénétration, les paquets d'exploitation, les analyseurs de paquets, les serveurs proxy, les outils de fuzzing et les analyseurs statiques de code source.
Tant l'introduction des vulnérabilités que les pratiques de configuration sont soutenues par un certain nombre d'exercices pratiques démontrant les conséquences des attaques réussies, montrant comment appliquer les techniques d'atténuation et introduire l'utilisation de diverses extensions et outils.
Les participants suivants de ce cours vont
- Comprendre les concepts de base de la sécurité, la sécurité informatique et la programmation sécurisée
- Apprendre les vulnérabilités web au-delà du OWASP Top Ten et savoir comment les éviter
- Apprendre les vulnérabilités côté client et les pratiques de programmation sécurisée
- Avoir une compréhension pratique de la cryptographie
- Apprendre à utiliser diverses fonctionnalités de sécurité de PHP
- Apprendre les erreurs courantes de codage et comment les éviter
- Être informé des récentes vulnérabilités du framework PHP
- Obtenir des connaissances pratiques sur l'utilisation des outils de test de sécurité
- Obtenir des sources et lectures complémentaires sur les pratiques de programmation sécurisée
Public
Développeurs
Microsoft SDL Core
14 HeuresLa formation fondamentale combine du SDL (Secure Development Lifecycle) offre un aperçu de la conception sécurisée, du développement et des tests logiciels via le Cycle de Développement Sécurisé de Microsoft (SDL). Elle propose une vue d'ensemble de niveau 100 des blocs de construction fondamentaux du SDL, suivie de techniques de conception à appliquer pour détecter et corriger les failles aux étapes précoces du processus de développement.
En ce qui concerne la phase de développement, le cours présente un aperçu des bugs de programmation courants ayant une incidence sur la sécurité, tant pour le code managé que natif. Les méthodes d'attaque sont exposées pour les vulnérabilités discutées, ainsi que les techniques d'atténuation associées, le tout expliqué à travers une série d'exercices pratiques offrant aux participants une expérience de piratage concret et interactif. L'introduction des différentes méthodes de tests de sécurité est suivie par la démonstration de l'efficacité de divers outils de test. Les participants peuvent comprendre le fonctionnement de ces outils grâce à de nombreux exercices pratiques consistant à appliquer ces outils sur du code vulnérable déjà étudié.
Les participants suivant ce cours
Comprendront les concepts de base de la sécurité, de la sécurité informatique et de la programmation sécurisée.
Se familiariseront avec les étapes essentielles du Cycle de Développement Sécurisé de Microsoft.
Apprendront les pratiques de conception et de développement sécurisées.
Apprendront les principes de mise en œuvre sécurisée.
Comprendront la méthodologie des tests de sécurité.
- Obtiendront des sources et des lectures complémentaires sur les pratiques de codage sécurisé.
Public cible
Développeurs, Responsables.
C++ pour les systèmes embarqués
21 HeuresLe C++ est-il adapté aux systèmes embarqués tels que les microcontrôleurs et les systèmes d'exploitation temps réel (RTOS) ?
Faut-il utiliser la programmation orientée objet sur les microcontrôleurs ?
Le C++ est-il trop éloigné du matériel pour être performant ?
Ce formation dirigée par un instructeur répond à ces questions et démontre, par des échanges et des exercices pratiques, comment le C++ peut être utilisé pour développer des systèmes embarqués avec du code précis, lisible et efficace. Les participants mettent en pratique la théorie en créant une application embarquée exemple en C++.
À l'issue de cette formation, les participants seront capables de :
- Comprendre les principes de la modélisation orientée objet, de la programmation de logiciels embarqués et de la programmation temps réel.
- Produire du code pour systèmes embarqués qui soit compact, rapide et sûr.
- Éviter l'inflation du code due aux gabarits (templates), aux exceptions et aux autres fonctionnalités du langage.
- Comprendre les problématiques liées à l'utilisation du C++ dans les systèmes critiques et temps réel.
- Débugger un programme C++ sur un dispositif cible.
Public visé
- Développeurs
- Concepteurs
Format de la formation
- Alterner cours, discussions, exercices et pratique intensive
Programmation C++ 11
14 HeuresCe cours de 2 jours s’adresse aux programmeurs C++ souhaitant appliquer la nouvelle norme C++11 dans leur domaine professionnel. Il est particulièrement utile pour les développeurs d’applications financières, couvrant toutes les nouvelles fonctionnalités avec des exemples de code exécutables en laboratoire.
Sécurité DevOps : Élaborer une stratégie de sécurité DevOps
7 HeuresDans ce cours en direct dirigé par un formateur à Belgique, les participants apprendront comment élaborer une stratégie de sécurité appropriée pour relever le défi de la sécurité DevOps.
Ingénieur DevSecOps Certifié EC-Council (ECDE)
28 HeuresL'Ingénieur DevSecOps Certifié EC-Council (ECDE) est un cours pratique conçu pour doter les professionnels des compétences nécessaires pour intégrer la sécurité tout au long du cycle de vie DevOps, permettant ainsi un développement logiciel sécurisé, de la planification au déploiement.
Ce cours en présentiel animé par un instructeur (en ligne ou sur site) s'adresse aux professionnels intermédiaires du développement logiciel et de l'ingénierie DevOps qui souhaitent intégrer des pratiques de sécurité dans les pipelines CI/CD, garantissant ainsi la livraison d'un code sécurisé et conforme.
À l'issue de cette formation, les participants seront capables de :
- Comprendre les principes et pratiques du DevSecOps.
- Sécuriser chaque étape du pipeline CI/CD à l'aide d'outils automatisés.
- Mettre en œuvre des pratiques de codage sécurisé et des analyses de vulnérabilités.
- Se préparer à la certification ECDE grâce à des laboratoires pratiques et une révision ciblée.
Format de la formation
- Cours interactif et discussions.
- Mise en pratique des outils DevSecOps dans des pipelines simulés.
- Exercices guidés axés sur le développement et le déploiement sécurisés.
Options de personnalisation de la formation
- Pour demander une formation personnalisée pour ce cours, adaptée aux workflows ou à la chaîne d'outils de votre équipe, veuillez nous contacter pour en convenir.
Utilisation de C++ dans les systèmes embarqués - Application de C++11/C++14
21 HeuresCe cours a pour objectif de présenter C++ comme l'extension commune de C pour le développement de systèmes embarqués orientés objet. Puisque C++ englobe C, cette formation nous conduit de C à C++ de manière naturelle, tout en explorant les mécanismes sous-jacents de son implémentation. Cette compréhension est particulièrement précieuse lorsqu'on utilise C++ dans un environnement embarqué aux ressources limitées. La norme C++ a récemment fait l'objet d'une révision majeure, connue sous le nom de C++11, et une nouvelle révision, C++14, est en cours. Ce cours aborde les sujets introduits par ces révisions qui sont particulièrement utiles, tels que la gestion de la mémoire haute performance, la prise en compte de l'environnement multicœur pour la concurrence, ainsi que la programmation proche du matériel (bare-metal).
OBJECTIF/AVANTAGES
L'objectif principal de ce cours est que vous soyez capable d'utiliser C++ de manière « correcte ».
- Présenter C++ comme une alternative orientée objet dans le contexte des systèmes embarqués
- Montrer les similarités et les différences avec le langage C
- Comprendre les différentes stratégies de gestion de la mémoire, en particulier la sémantique de mouvement (move semantics) introduite avec C++11
- Explorer les mécanismes sous-jacents et comprendre comment les différents paradigmes de C++ se traduisent en code machine
- Utiliser les gabarits (templates) pour obtenir des abstractions de haut niveau sûres au niveau des types, adaptées à la programmation proche du matériel – y compris l'E/S mappée en mémoire et les interruptions – en mettant l'accent sur les gabarits à nombre variable d'arguments (variadic templates) introduits avec C++11
- Proposer quelques patrons de conception (design patterns) particulièrement applicables dans un contexte embarqué
- Proposer quelques exercices pour mettre en pratique certains concepts
PUBLIC/CIBLE
Ce cours s'adresse aux programmeurs C++ qui souhaitent commencer à utiliser C++ dans un contexte de systèmes embarqués.
CONNAISSANCES PRÉALABLES
Le cours suppose des connaissances de base en programmation C++, correspondant à nos formations « C++ – Niveau 1 » et « C++ Niveau 2 – Introduction à C++11 ».
EXERCICES PRATIQUES
Pendant la formation, vous pratiquerez les concepts présentés à travers une série d'exercices. Nous utiliserons l'environnement de développement intégré (IDE) open source et gratuit d'Eclipse.
Programmation orientée objet avec C++
7 HeuresCette formation en direct, animée par un instructeur, est dispensée dans <lieu> (en ligne ou en présentiel) et s'adresse aux développeurs souhaitant utiliser C pour appliquer des techniques de programmation orientée objet et améliorer la conception logicielle.
À l'issue de cette formation, les participants seront en mesure d'implémenter des concepts orientés objet en C, de concevoir des applications modulaires, d'appliquer l'encapsulation et l'abstraction, et de structurer des bases de code maintenables.
Comment écrire un Code Sécurisé
35 HeuresCe cours dans Belgique vise à aider à ce qui suit :
- Aider les développeurs à maîtriser les techniques d'écriture de code sécurisé
- Aider les testeurs logiciels à vérifier la sécurité de l'application avant sa publication en environnement de production
- Aider les architectes logiciels à comprendre les risques liés aux applications
- Aider les chefs d'équipe à définir les bases de sécurité pour les développeurs
- Aider les responsables web à configurer les serveurs afin d'éviter les erreurs de configuration
Développeur Java sécurisé (incluant OWASP)
21 HeuresCe cours couvre les concepts et principes de codage sécurisé avec Java, en se basant sur la méthodologie de test du Open Web Application Security Project (OWASP). Le Open Web Application Security Project est une communauté en ligne qui crée des articles, méthodologies, documentation, outils et technologies librement accessibles dans le domaine de la sécurité des applications web.
Développeur sécurisé .NET (inclus OWASP)
21 HeuresCe cours aborde les concepts et principes de codage sécurisé avec ASP.NET à travers la méthodologie de test du Open Web Application Security Project (OWASP). OWASP est une communauté en ligne qui crée des articles, méthodologies, documentation, outils et technologies freely disponibles dans le domaine de la sécurité des applications web.
Ce cours explore les fonctionnalités de sécurité du framework .NET et comment sécuriser les applications web.