
Concevoir et mettre en œuvre la sécurité logicielle pour tous
Description
Introduction au livre
Un guide indispensable des bonnes pratiques de sécurité pour tous les ingénieurs impliqués dans le développement logiciel !
L'auteur, qui a été un pionnier des technologies de sécurité modernes chez Microsoft et Google et qui a créé les certificats numériques, possède 20 ans d'expertise !
Il a été le premier à créer le concept de certificats à clé publique et le concept de modélisation des menaces STRIDE chez Microsoft.
Un ouvrage complet de Lauren Kornfelder, pionnière dans le domaine des technologies de sécurité modernes !
Ce guide concis et élégant sur la sécurité logicielle, fruit de 20 ans d'expérience de l'auteure Lauren Kornfelder dans le secteur de la sécurité, s'adresse à un large éventail de professionnels du logiciel, notamment les architectes logiciels, les concepteurs, les développeurs et les responsables informatiques.
L'auteur insiste sur l'importance d'intégrer la sécurité dès le début de la conception du logiciel et d'impliquer toute l'équipe dans le processus.
La première partie commence par expliquer les concepts fondamentaux de la sécurité : la confiance, les menaces, l’atténuation, les modèles de conception de sécurité et le chiffrement.
La deuxième partie aborde le processus de conception et de révision des logiciels en tenant compte de la sécurité.
Les trois dernières parties explorent les défauts de codage qui conduisent à des vulnérabilités, à l'aide de divers exemples de code écrits en C et en Python.
Regorgeant de bonnes pratiques modernes et pratiques, d'idées et de perspectives pour l'avenir du logiciel, ce livre est une lecture incontournable pour tous ceux qui travaillent dans le secteur informatique.
L'auteur, qui a été un pionnier des technologies de sécurité modernes chez Microsoft et Google et qui a créé les certificats numériques, possède 20 ans d'expertise !
Il a été le premier à créer le concept de certificats à clé publique et le concept de modélisation des menaces STRIDE chez Microsoft.
Un ouvrage complet de Lauren Kornfelder, pionnière dans le domaine des technologies de sécurité modernes !
Ce guide concis et élégant sur la sécurité logicielle, fruit de 20 ans d'expérience de l'auteure Lauren Kornfelder dans le secteur de la sécurité, s'adresse à un large éventail de professionnels du logiciel, notamment les architectes logiciels, les concepteurs, les développeurs et les responsables informatiques.
L'auteur insiste sur l'importance d'intégrer la sécurité dès le début de la conception du logiciel et d'impliquer toute l'équipe dans le processus.
La première partie commence par expliquer les concepts fondamentaux de la sécurité : la confiance, les menaces, l’atténuation, les modèles de conception de sécurité et le chiffrement.
La deuxième partie aborde le processus de conception et de révision des logiciels en tenant compte de la sécurité.
Les trois dernières parties explorent les défauts de codage qui conduisent à des vulnérabilités, à l'aide de divers exemples de code écrits en C et en Python.
Regorgeant de bonnes pratiques modernes et pratiques, d'idées et de perspectives pour l'avenir du logiciel, ce livre est une lecture incontournable pour tous ceux qui travaillent dans le secteur informatique.
- Vous pouvez consulter un aperçu du contenu du livre.
Aperçu
indice
Partie 1 | Concepts de base pour les logiciels sécurisés
Chapitre 1 : Principes fondamentaux de la sécurité
Comprendre la sécurité
foi
__Confiance
__bits sont invisibles
__Compétence et imperfection
La confiance est un spectre
Décision de confiance
Composants implicitement fiables
__Améliorer la fiabilité du produit
Principes classiques
Principes de sécurité de l'information de la CIA
__Étalon-or
__Confidentialité
Chapitre 2 Modélisation des menaces
perspective hostile
Quatre questions
Modélisation des menaces
Travail basé sur un modèle
__Identification des actifs
__Identifier la surface d'attaque
__Identifier les limites de la confiance
Identification des menaces
__Atténuation des menaces
Considérations relatives à la confidentialité
Modélisation des menaces : L'omniprésence
Chapitre 3 : Atténuer les menaces à la sécurité
Gestion des menaces
Stratégie d'assouplissement structurel
__Réduire la surface d'attaque
__Fenêtre de vulnérabilité étroite
__Minimiser l'exposition des données
Politiques d'accès et contrôle d'accès
interface
communication
Stockage
Chapitre 4 Modèles de conception de sécurité
propriétés de conception
Modèles économiques de conception
Conception transparente
Réduisez l'exposition
__Privilèges minimaux
Informations minimales
La sécurité est le fondement
__Autoriser la liste plutôt que de bloquer la liste
__Éviter la prévisibilité
Défaillance sécurisée
application stricte
Arbitrage complet
Mécanisme commun minimal
redondance
Défense en profondeur
séparation des privilèges
Confiance et responsabilité
__Résistance à la confiance
__Accepter la responsabilité en matière de sécurité
anti-motif
Agent confus
__Le contrecoup de la confiance
__Hooks tiers
Composants non patchables
Chapitre 5 : Techniques de chiffrement pour la sécurité
Outils de chiffrement
nombre aléatoire
__Numéro aléatoire du docteur
__Nombres pseudo-aléatoires cryptographiquement sécurisés
Code d'authentification du message
Utilisez des codes d'authentification des messages pour empêcher toute falsification.
__Attaque par rejeu
Communication MAC sécurisée
Cryptage symétrique
serviettes hygiéniques jetables
Norme de chiffrement avancée
Utilisez le chiffrement symétrique
Chiffrement asymétrique
Système de chiffrement RSA
signature numérique
certificat numérique
échange de clés
Utilisez le chiffrement
Partie 2 | Conception de logiciels sécurisés
Chapitre 6 Principes de conception de la sécurité
Intégrer la sécurité dans la conception
__Clarification des hypothèses de conception
Définition de la portée
Définir les exigences de sécurité
Modélisation des menaces
Mise en œuvre de mesures d'atténuation
Conception d'interface
Conception du traitement des données
Intégrer la protection de la vie privée dans la conception des logiciels
Planification complète du cycle de vie des logiciels
Traitement des compromis
Simplicité du design
Chapitre 7 : Examen de la conception de la sécurité
Plan de mise en œuvre pour l'examen de la conception de sécurité
Objectif de la représentation
Période de performance
La documentation est essentielle
Processus d'examen de la conception de la sécurité
__examiner
__question
__discrimination
__coopération
__écrire
Mesures de suivi
Évaluation de la sécurité de la conception
Utilisez les quatre questions comme guide
Si on creuse un peu plus, on découvre…
Examen de la confidentialité
__Mise à jour de l'avis
Gérer les désaccords
__Communiquer avec tact
Étude de cas : Avis difficiles
__Réconciliation des désaccords
Pratiquez, pratiquez, pratiquez
Partie 3 | Mise en œuvre de la sécurité
Chapitre 8 : Programmation sécurisée
Pourquoi la programmation sécurisée est difficile
influence malveillante
__Une vulnérabilité est un bug
Chaîne de vulnérabilité
__Bugs et entropie
__prudence
Étude de cas : Vulnérabilité Goto Fail
__Vulnérabilité dans une seule ligne de code
Attention au pistolet à pied
Leçons tirées de l'échec de __goto
vulnérabilités du code
__atomique
Attaque par différence de temps
__Sérialisation
principal suspect
Chapitre 9 : Exemples de vulnérabilités dans le codage de bas niveau
Vulnérabilité arithmétique
Vulnérabilité liée aux entiers de largeur fixe
Vulnérabilité liée à la précision des nombres à virgule flottante
Exemple : Dépassement de capacité négatif en virgule flottante
Exemple : Dépassement de capacité d’entier
Fonctionnement sûr
vulnérabilité d'accès à la mémoire
Gestion de la mémoire
Dépassement de tampon
Exemple : Vulnérabilité liée à l'allocation de mémoire
Étude de cas : La faille de sécurité Heartbleed
Chapitre 10 : Menaces de sécurité liées aux entrées non fiables
Validation des entrées
__Détermination de la validité
__Critères d'inspection
__Rejeter les entrées invalides
__Correction d'une entrée incorrecte
Vulnérabilité de la chaîne
Problème de longueur de chaîne
Problèmes Unicode
vulnérabilité par injection
Injection SQL
Navigation dans le chemin
__Expression régulière
Les dangers du XML
Mesures d'atténuation des attaques par injection
Chapitre 11 : Sécurité Web
Construction à ossature bois
Modèle de sécurité Web
Protocole HTTP
__Certificats numériques et HTTPS
Politique de source identique
Cookies Web
Vulnérabilités Web courantes
__Injection de scripts intersites (XSS)
Falsification de requête intersite (CSRF)
Autres vulnérabilités et mesures d'atténuation
Chapitre 12 Tests de sécurité
Qu'est-ce qu'un test de sécurité ?
Tests de sécurité pour les vulnérabilités Goto Fail
Test fonctionnel
__Test des fonctions présentant des vulnérabilités
__Cas de tests de sécurité
__Limites des tests de sécurité
Rédaction de cas de test de sécurité
Tests de validation des entrées
Tests de vulnérabilité XSS
Tests de fuzz
Tests de régression de sécurité
Tests de disponibilité
__Consommation de ressources
Test de seuil
Attaque par déni de service distribué (attaque DDoS)
Meilleures pratiques en matière de tests de sécurité
Développement piloté par les tests
__Utilisation des tests intégrés
__Rattrapez votre retard en matière de tests de sécurité
Chapitre 13 : Meilleures pratiques en matière de développement sécuritaire
Qualité du code
Habitudes de gestion du code
Gestion des exceptions et des erreurs
__Documentation de sécurité
Révision du code de sécurité
Dépendance
__Sélectionnez les composants de sécurité
Sécurité de l'interface
__Ne réinventez pas les outils de sécurité
Concurrencer les systèmes de sécurité traditionnels
Classification des vulnérabilités
Évaluation __DREAD
__Création d'un code d'attaque fonctionnel
Décision de classification
Maintenir un environnement de développement sûr
__Séparation des environnements d'exploitation et de développement
Sécurité des outils de développement
Lancement du produit
Chapitre 14 : Le voyage sans fin de la sécurité
Pratique et action
La sécurité est l'affaire de tous.
__Internalisation de la sécurité
L'avenir de la sécurité
__Améliorer la qualité des logiciels
__Gérer la complexité
__De la minimisation de la transparence à la maximisation de la transparence
Améliorer l'authenticité, la confiance et la responsabilité des logiciels
Le dernier kilomètre : franchir la dernière étape
En conclusion
Annexe A Exemple de document de conception logicielle
Annexe B Glossaire
Annexe C : Questions à examiner
Annexe D : Résumé des principaux documents
Chapitre 1 : Principes fondamentaux de la sécurité
Comprendre la sécurité
foi
__Confiance
__bits sont invisibles
__Compétence et imperfection
La confiance est un spectre
Décision de confiance
Composants implicitement fiables
__Améliorer la fiabilité du produit
Principes classiques
Principes de sécurité de l'information de la CIA
__Étalon-or
__Confidentialité
Chapitre 2 Modélisation des menaces
perspective hostile
Quatre questions
Modélisation des menaces
Travail basé sur un modèle
__Identification des actifs
__Identifier la surface d'attaque
__Identifier les limites de la confiance
Identification des menaces
__Atténuation des menaces
Considérations relatives à la confidentialité
Modélisation des menaces : L'omniprésence
Chapitre 3 : Atténuer les menaces à la sécurité
Gestion des menaces
Stratégie d'assouplissement structurel
__Réduire la surface d'attaque
__Fenêtre de vulnérabilité étroite
__Minimiser l'exposition des données
Politiques d'accès et contrôle d'accès
interface
communication
Stockage
Chapitre 4 Modèles de conception de sécurité
propriétés de conception
Modèles économiques de conception
Conception transparente
Réduisez l'exposition
__Privilèges minimaux
Informations minimales
La sécurité est le fondement
__Autoriser la liste plutôt que de bloquer la liste
__Éviter la prévisibilité
Défaillance sécurisée
application stricte
Arbitrage complet
Mécanisme commun minimal
redondance
Défense en profondeur
séparation des privilèges
Confiance et responsabilité
__Résistance à la confiance
__Accepter la responsabilité en matière de sécurité
anti-motif
Agent confus
__Le contrecoup de la confiance
__Hooks tiers
Composants non patchables
Chapitre 5 : Techniques de chiffrement pour la sécurité
Outils de chiffrement
nombre aléatoire
__Numéro aléatoire du docteur
__Nombres pseudo-aléatoires cryptographiquement sécurisés
Code d'authentification du message
Utilisez des codes d'authentification des messages pour empêcher toute falsification.
__Attaque par rejeu
Communication MAC sécurisée
Cryptage symétrique
serviettes hygiéniques jetables
Norme de chiffrement avancée
Utilisez le chiffrement symétrique
Chiffrement asymétrique
Système de chiffrement RSA
signature numérique
certificat numérique
échange de clés
Utilisez le chiffrement
Partie 2 | Conception de logiciels sécurisés
Chapitre 6 Principes de conception de la sécurité
Intégrer la sécurité dans la conception
__Clarification des hypothèses de conception
Définition de la portée
Définir les exigences de sécurité
Modélisation des menaces
Mise en œuvre de mesures d'atténuation
Conception d'interface
Conception du traitement des données
Intégrer la protection de la vie privée dans la conception des logiciels
Planification complète du cycle de vie des logiciels
Traitement des compromis
Simplicité du design
Chapitre 7 : Examen de la conception de la sécurité
Plan de mise en œuvre pour l'examen de la conception de sécurité
Objectif de la représentation
Période de performance
La documentation est essentielle
Processus d'examen de la conception de la sécurité
__examiner
__question
__discrimination
__coopération
__écrire
Mesures de suivi
Évaluation de la sécurité de la conception
Utilisez les quatre questions comme guide
Si on creuse un peu plus, on découvre…
Examen de la confidentialité
__Mise à jour de l'avis
Gérer les désaccords
__Communiquer avec tact
Étude de cas : Avis difficiles
__Réconciliation des désaccords
Pratiquez, pratiquez, pratiquez
Partie 3 | Mise en œuvre de la sécurité
Chapitre 8 : Programmation sécurisée
Pourquoi la programmation sécurisée est difficile
influence malveillante
__Une vulnérabilité est un bug
Chaîne de vulnérabilité
__Bugs et entropie
__prudence
Étude de cas : Vulnérabilité Goto Fail
__Vulnérabilité dans une seule ligne de code
Attention au pistolet à pied
Leçons tirées de l'échec de __goto
vulnérabilités du code
__atomique
Attaque par différence de temps
__Sérialisation
principal suspect
Chapitre 9 : Exemples de vulnérabilités dans le codage de bas niveau
Vulnérabilité arithmétique
Vulnérabilité liée aux entiers de largeur fixe
Vulnérabilité liée à la précision des nombres à virgule flottante
Exemple : Dépassement de capacité négatif en virgule flottante
Exemple : Dépassement de capacité d’entier
Fonctionnement sûr
vulnérabilité d'accès à la mémoire
Gestion de la mémoire
Dépassement de tampon
Exemple : Vulnérabilité liée à l'allocation de mémoire
Étude de cas : La faille de sécurité Heartbleed
Chapitre 10 : Menaces de sécurité liées aux entrées non fiables
Validation des entrées
__Détermination de la validité
__Critères d'inspection
__Rejeter les entrées invalides
__Correction d'une entrée incorrecte
Vulnérabilité de la chaîne
Problème de longueur de chaîne
Problèmes Unicode
vulnérabilité par injection
Injection SQL
Navigation dans le chemin
__Expression régulière
Les dangers du XML
Mesures d'atténuation des attaques par injection
Chapitre 11 : Sécurité Web
Construction à ossature bois
Modèle de sécurité Web
Protocole HTTP
__Certificats numériques et HTTPS
Politique de source identique
Cookies Web
Vulnérabilités Web courantes
__Injection de scripts intersites (XSS)
Falsification de requête intersite (CSRF)
Autres vulnérabilités et mesures d'atténuation
Chapitre 12 Tests de sécurité
Qu'est-ce qu'un test de sécurité ?
Tests de sécurité pour les vulnérabilités Goto Fail
Test fonctionnel
__Test des fonctions présentant des vulnérabilités
__Cas de tests de sécurité
__Limites des tests de sécurité
Rédaction de cas de test de sécurité
Tests de validation des entrées
Tests de vulnérabilité XSS
Tests de fuzz
Tests de régression de sécurité
Tests de disponibilité
__Consommation de ressources
Test de seuil
Attaque par déni de service distribué (attaque DDoS)
Meilleures pratiques en matière de tests de sécurité
Développement piloté par les tests
__Utilisation des tests intégrés
__Rattrapez votre retard en matière de tests de sécurité
Chapitre 13 : Meilleures pratiques en matière de développement sécuritaire
Qualité du code
Habitudes de gestion du code
Gestion des exceptions et des erreurs
__Documentation de sécurité
Révision du code de sécurité
Dépendance
__Sélectionnez les composants de sécurité
Sécurité de l'interface
__Ne réinventez pas les outils de sécurité
Concurrencer les systèmes de sécurité traditionnels
Classification des vulnérabilités
Évaluation __DREAD
__Création d'un code d'attaque fonctionnel
Décision de classification
Maintenir un environnement de développement sûr
__Séparation des environnements d'exploitation et de développement
Sécurité des outils de développement
Lancement du produit
Chapitre 14 : Le voyage sans fin de la sécurité
Pratique et action
La sécurité est l'affaire de tous.
__Internalisation de la sécurité
L'avenir de la sécurité
__Améliorer la qualité des logiciels
__Gérer la complexité
__De la minimisation de la transparence à la maximisation de la transparence
Améliorer l'authenticité, la confiance et la responsabilité des logiciels
Le dernier kilomètre : franchir la dernière étape
En conclusion
Annexe A Exemple de document de conception logicielle
Annexe B Glossaire
Annexe C : Questions à examiner
Annexe D : Résumé des principaux documents
Image détaillée
.jpg)
Avis de l'éditeur
| Ce que ce livre aborde |
- Identifiez les actifs critiques, les surfaces d'attaque et les limites de confiance de votre système.
- Évaluer l'efficacité des différentes mesures d'atténuation des menaces
- Utiliser des mesures d'atténuation et des modèles de conception de sécurité bien connus
- Des vulnérabilités telles que les attaques XSS (Cross-Site Scripting), CSRF (Cross-Site Request Forgery) et les défauts de mémoire
- Identification préventive des vulnérabilités du code grâce aux tests de sécurité
- Évaluation objective de la conception logicielle pour détecter les failles de sécurité
| Public cible de ce livre |
- Les personnes qui découvrent le monde de la sécurité, en particulier celles qui trouvent la sécurité difficile.
- Les lecteurs intéressés par la sécurité mais qui manquent de connaissances et de sensibilisation en la matière.
- Des experts en sécurité à la pointe du domaine de la sécurité
[Ce que ce livre aborde]
L'ouvrage se compose de 14 chapitres et son contenu global est divisé en trois parties couvrant les concepts, la conception et la mise en œuvre.
[Partie 1 : Concepts de base pour les logiciels sécurisés]
La première partie pose les bases conceptuelles de cet ouvrage.
Le chapitre 1, « Principes fondamentaux de la sécurité », décrit les principes fondamentaux de la sécurité de l'information et de la protection des renseignements personnels.
Le chapitre 2, « Modélisation des menaces », présente la modélisation des menaces et concrétise les concepts fondamentaux de surface d'attaque et de limite de confiance dans le contexte de la protection des actifs.
Les trois chapitres suivants présentent des outils précieux mis à la disposition des lecteurs pour concevoir des logiciels sécurisés.
Le chapitre 3, « Atténuation des menaces à la sécurité », décrit les stratégies couramment utilisées pour atténuer de manière défensive les menaces identifiées, et le chapitre 4, « Modèles de conception de sécurité », présente plusieurs modèles de conception de sécurité efficaces et examine certains anti-modèles à éviter.
Le chapitre 5, « Techniques cryptographiques », couvre des techniques complexes qui utilisent des bibliothèques cryptographiques standard pour atténuer les risques courants, mais n'aborde pas les mathématiques sous-jacentes (qui sont rarement nécessaires en pratique).
[Partie 2, Conception de logiciels sécurisés]
La deuxième partie aborde les sujets les plus originaux et probablement les plus utiles pour le public visé par le livre.
Les chapitres 6, « Principes de conception sécurisée », et 7, « Revues de conception de sécurité », fournissent des conseils sur la conception de logiciels sécurisés et des techniques pratiques pour y parvenir, en abordant les sujets du point de vue du concepteur et du réviseur, respectivement.
Cela explique également pourquoi il est important d'intégrer la sécurité dès le début de la conception logicielle.
Dans la deuxième partie, nous explorons des méthodologies spécifiques pour intégrer les idées abordées dans la première partie à la conception de la sécurité.
La méthodologie d'évaluation repose sur mon expérience du secteur et propose également une démarche étape par étape que vous pouvez appliquer à votre propre travail.
Pour illustrer comment mettre cette idée en pratique, examinons le document de conception type figurant à l'annexe A.
[Partie 3, Mise en œuvre de la sécurité]
Les chapitres 8 à 14 traitent de la sécurité pendant la phase de mise en œuvre, en examinant le déploiement, les opérations et les étapes de fin de vie.
Dans la continuité de la conception sécurisée, la troisième partie de cet ouvrage explore comment développer des logiciels tout en empêchant l'introduction de nouvelles vulnérabilités.
Chaque chapitre de la partie 3 contient du code, expliquant comment les vulnérabilités peuvent être exploitées dans le code et comment les prévenir.
Le chapitre 8, « Programmation sécurisée », présente les problèmes de sécurité auxquels les programmeurs sont confrontés et décrit à quoi ressemblent les vulnérabilités réelles dans le code.
Le chapitre 9, « Exemples de vulnérabilités dans le codage de bas niveau », explique comment les faiblesses de l'arithmétique informatique et la gestion explicite de l'allocation dynamique de mémoire de style C compromettent la sécurité.
Le chapitre 10, « Menaces de sécurité liées aux entrées non fiables », et le chapitre 11, « Sécurité Web », traitent de divers bugs courants qui sont connus depuis longtemps mais qui restent encore non résolus (tels que les attaques par injection, la traversée de chemin, les vulnérabilités XSS et CSRF).
Le chapitre 12, « Tests de sécurité », aborde des techniques de test sous-utilisées mais qui peuvent contribuer à garantir la sécurité du code.
Le chapitre 13, « Meilleures pratiques de développement sécurisé », conclut le guide de mise en œuvre sécurisée en abordant certaines meilleures pratiques et les pièges courants.
Le code traité dans la partie 3 présente généralement des vulnérabilités qu'il convient d'éviter, suivies de versions corrigées montrant comment sécuriser le code (marquées respectivement « Code vulnérable » et « Code corrigé »).
Par conséquent, le code contenu dans ce livre n'est pas destiné à être copié et utilisé directement dans le logiciel d'un environnement d'exploitation.
Même un code modifié peut introduire des vulnérabilités et d'autres problèmes dans différents environnements ; par conséquent, le code présenté dans ce livre ne doit pas être considéré comme sûr pour toutes les applications.
Enfin, le chapitre 14, « Le voyage sans fin de la sécurité », décrit plusieurs façons dont nous prévoyons que ce livre aura un impact positif.
Nous résumons les points clés abordés dans ce livre et nous nous tournons vers l'avenir.
De plus, il commence par exposer une vision de la manière dont ce livre peut contribuer à améliorer la sécurité des logiciels, puis aborde des idées expérimentales qui pourraient contribuer à améliorer progressivement la sécurité des logiciels.
[supplément]
L’annexe A est un exemple de document de conception qui illustre une conception prenant en compte la sécurité dans le monde réel.
L’annexe B est un glossaire des termes de sécurité logicielle utilisés tout au long de ce livre.
L’annexe C contient plusieurs exercices et questions ouverts que les lecteurs motivés pourraient être intéressés à explorer.
L’annexe D est un recueil de documents résumant les concepts et processus clés.
[Note de l'auteur]
Ce livre est un guide destiné aux professionnels du logiciel qui souhaitent mieux comprendre les concepts essentiels de la sécurité logicielle et apprendre à concevoir et à mettre en œuvre des logiciels sécurisés.
J'ai eu la chance d'innover sur certains des sujets abordés ici, et j'ai vu d'autres évoluer et s'implanter.
D’après mon expérience dans le secteur, ce livre regorge d’idées concrètes pour sécuriser les logiciels que vous utilisez.
Ce livre aborde deux thèmes centraux.
Encourager les professionnels du logiciel à se concentrer sur la sécurité dès le début du processus de développement logiciel et veiller à ce que toute l'équipe assume non seulement la responsabilité de la sécurité, mais participe également au processus de sécurité.
Il est clair qu'il existe encore une marge de progression considérable dans ces deux domaines, et ce livre montre comment atteindre ces objectifs.
J'ai eu la rare opportunité de travailler en première ligne de la sécurité logicielle tout au long de ma carrière, et je souhaite maintenant partager ce que j'ai appris le plus largement possible.
Il y a plus de 20 ans, j'ai travaillé chez Microsoft dans une équipe pionnière en matière de modélisation des menaces pour une grande entreprise de logiciels.
Quelques années plus tard, je travaillais chez Google au développement de cette même technique, et c'était une approche totalement inédite des problèmes.
La deuxième partie de ce livre explore les enseignements que j'ai tirés de plus de 100 analyses de conception que j'ai réalisées.
En jetant un regard en arrière sur le chemin parcouru, nous acquérons une perspective plus large et pouvons tout expliquer d'une manière nouvelle.
La conception, la construction et l'exploitation de systèmes logiciels comportent des risques inhérents.
Chaque choix effectué à chaque étape augmente ou diminue le risque d'introduire des failles de sécurité.
Ce livre traite de ce que je connais le mieux et de ce que j'ai appris par l'expérience directe.
Dans ce livre, je présenterai les principes fondamentaux de la sécurité et j'examinerai comment la sécurité peut être intégrée tout au long du développement.
Les exemples de conception et de code fournis dans ce cours sont largement indépendants de toute technologie et donc très largement applicables.
Le texte contient diverses anecdotes, métaphores et exemples pour transmettre des idées abstraites aussi efficacement que possible.
Il existe des différences individuelles dans la manière dont nous acquérons une réflexion sur la sécurité.
Ainsi, en vous aidant à développer votre intuition, j'espère vous aider à trouver de nouvelles façons de promouvoir une perspective de sécurité logicielle dans votre travail.
D'après mon expérience, j'aimerais ajouter que même ceux qui ont un don naturel pour la sécurité peuvent toujours acquérir de nouvelles connaissances.
Ce livre aborde une vaste quantité de sujets de manière concise, et lors de sa rédaction, j'ai senti que cette concision était essentielle à son succès.
La sécurité logicielle est un domaine vaste et complexe, j'espère donc que ce livre sera plus largement lu s'il est concis.
J’espère que les lecteurs trouveront cette nouvelle perspective utile pour réfléchir à la sécurité et pourront facilement l’appliquer à leur propre travail.
- Lauren Kornfelder
[Note du traducteur]
Le sujet de la sécurité peut paraître un peu rigide et difficile.
Il est considéré comme un domaine de spécialisation en raison de ses concepts complexes et de ses mathématiques difficiles, et bien qu'il présente un grand intérêt pour tous, il est considéré comme difficile d'accès.
Cependant, ce livre offre un divertissement d'un genre différent des autres ouvrages professionnels sur la sécurité.
Ce livre est une introduction à l'ingénierie de la sécurité, couvrant les concepts fondamentaux de la sécurité et diverses pratiques de sécurité dans le développement logiciel.
Bien que de nombreux ouvrages aient été publiés sur le thème de la sécurité, je crois qu'il en existe peu qui s'adressent à la fois aux professionnels de la sécurité et aux développeurs de logiciels.
L'auteure Lauren Kornfelder, figure clé dans les domaines de la sécurité des réseaux et de la cryptographie, qui a proposé le concept d'infrastructure à clés publiques (PKI) et développé le modèle STRIDE, une réalisation remarquable dans le domaine de la modélisation des menaces, affirme avec Praerit Garg que la sécurité est un élément très important dans le développement logiciel moderne.
Dans cet ouvrage, Kornfelder propose un guide complet, du conceptuel au pratique, sur la manière dont les développeurs de logiciels et les professionnels de la sécurité peuvent prendre en compte la sécurité lors de la conception et du développement de logiciels.
Plutôt que d'énumérer des concepts difficiles, l'auteur utilise des exemples concrets et des études de cas tirés de son domaine pour faciliter l'approche de la sécurité, ce qui sera d'une grande aide aux développeurs.
Ce livre couvre un large éventail de sujets liés à la sécurité, allant des concepts de sécurité à l'analyse des menaces et des vulnérabilités, en passant par la modélisation de la sécurité et les études de cas.
Il contient également de nombreux conseils utiles pour mettre en œuvre la sécurité dans chaque organisation ou entreprise, tels que la revue de conception de sécurité (SDR).
Par conséquent, ce livre peut servir de référence à toute personne impliquée dans la sécurité, notamment les développeurs, les experts en sécurité, les architectes système et les responsables de la sécurité qui souhaitent intégrer la sécurité dans le processus de développement logiciel.
Je suis convaincu que ce livre sera d'une grande aide pour le développement de logiciels plus sûrs.
- Kim Young-gi
De nos jours, il est courant de recevoir des messages d'hameçonnage prétendant que votre compte a été consulté depuis un nouvel appareil, depuis l'étranger, ou que vous possédez des actifs inutilisés qui doivent être récupérés immédiatement.
Certaines sont si sophistiquées qu'il est devenu courant de craindre d'y accéder accidentellement et de se faire pirater son PC ou son téléphone.
L'été dernier, une erreur dans un fichier de mise à jour logicielle de la société de cybersécurité CrowdStrike a provoqué un grand nombre d'écrans bleus sur les PC Windows, empêchant le bon démarrage de Windows et causant le chaos dans les banques, les compagnies aériennes et les stations de diffusion du monde entier, et même une paralysie informatique dans un aéroport de Corée du Sud.
En fait, ces problèmes sont devenus si courants qu'il est difficile de les compter sur les doigts d'une main.
Avec tout connecté à Internet, nous vivons dans un monde où même une petite erreur ou une seule attaque malveillante peut causer d'énormes dégâts.
Pourtant, dans le développement logiciel, la sécurité est souvent reléguée au second plan.
Face à la difficulté de suivre le rythme des marchés en constante évolution et des exigences des consommateurs, la sécurité n'est souvent prise en compte qu'aux dernières étapes du développement.
De plus, pour beaucoup dans le secteur informatique, la sécurité est encore perçue comme une question difficile et intimidante qui doit être laissée aux experts.
À l'avenir, les attaques malveillantes deviendront beaucoup plus sophistiquées grâce à leur combinaison avec la technologie de l'IA, et les dommages qui en résulteront pourraient être inimaginables.
Nous sommes entrés dans une ère où la sécurité des logiciels ne peut plus être laissée uniquement aux experts.
La vérité, c'est que cela aurait dû être ainsi depuis longtemps, et nous avons tout simplement fermé les yeux.
Nous sommes entrés dans une ère où non seulement les développeurs et les experts en sécurité, mais aussi tous les professionnels du secteur doivent exercer leurs fonctions en gardant la sécurité à l'esprit afin de se protéger eux-mêmes, leurs organisations et les précieux actifs de leurs clients contre les attaques malveillantes et les accidents.
L'objectif principal de cet ouvrage est d'expliquer les concepts et les méthodologies nécessaires aux développeurs de logiciels pour concevoir et implémenter des logiciels sécurisés, en intégrant pleinement les principes de sécurité. Il s'attache toutefois à développer l'état d'esprit indispensable à la sécurité, en s'appuyant sur une compréhension approfondie de son essence. Lors de sa traduction, j'ai eu le sentiment qu'il s'agissait d'un livre idéal pour appréhender la sécurité, non seulement pour les développeurs, mais aussi pour tous les professionnels du secteur.
Lauren Kornfelder, l'auteure de ce livre, est mieux placée que quiconque pour parler de l'essence de la sécurité.
Il fut un pionnier de la sécurité qui a non seulement posé les bases des techniques de sécurité modernes chez Microsoft et Google, mais qui a également été le pionnier du système de certificats numériques, qui constitue le fondement de la technologie de chiffrement largement utilisée aujourd'hui.
L'expérience pratique approfondie et la profonde perspicacité de l'auteur, acquises sur plus de 20 ans, transparaissent tout au long de cet ouvrage.
En traduisant ce livre, j'ai également eu le sentiment que les connaissances fragmentées en matière de sécurité que j'avais acquises en travaillant longtemps dans le secteur informatique se rassemblaient pour former un tout cohérent.
J'espère que les lecteurs de ce livre vivront des expériences similaires et le trouveront utile pour protéger leurs logiciels et leurs actifs numériques.
- Park Ki-seong
- Identifiez les actifs critiques, les surfaces d'attaque et les limites de confiance de votre système.
- Évaluer l'efficacité des différentes mesures d'atténuation des menaces
- Utiliser des mesures d'atténuation et des modèles de conception de sécurité bien connus
- Des vulnérabilités telles que les attaques XSS (Cross-Site Scripting), CSRF (Cross-Site Request Forgery) et les défauts de mémoire
- Identification préventive des vulnérabilités du code grâce aux tests de sécurité
- Évaluation objective de la conception logicielle pour détecter les failles de sécurité
| Public cible de ce livre |
- Les personnes qui découvrent le monde de la sécurité, en particulier celles qui trouvent la sécurité difficile.
- Les lecteurs intéressés par la sécurité mais qui manquent de connaissances et de sensibilisation en la matière.
- Des experts en sécurité à la pointe du domaine de la sécurité
[Ce que ce livre aborde]
L'ouvrage se compose de 14 chapitres et son contenu global est divisé en trois parties couvrant les concepts, la conception et la mise en œuvre.
[Partie 1 : Concepts de base pour les logiciels sécurisés]
La première partie pose les bases conceptuelles de cet ouvrage.
Le chapitre 1, « Principes fondamentaux de la sécurité », décrit les principes fondamentaux de la sécurité de l'information et de la protection des renseignements personnels.
Le chapitre 2, « Modélisation des menaces », présente la modélisation des menaces et concrétise les concepts fondamentaux de surface d'attaque et de limite de confiance dans le contexte de la protection des actifs.
Les trois chapitres suivants présentent des outils précieux mis à la disposition des lecteurs pour concevoir des logiciels sécurisés.
Le chapitre 3, « Atténuation des menaces à la sécurité », décrit les stratégies couramment utilisées pour atténuer de manière défensive les menaces identifiées, et le chapitre 4, « Modèles de conception de sécurité », présente plusieurs modèles de conception de sécurité efficaces et examine certains anti-modèles à éviter.
Le chapitre 5, « Techniques cryptographiques », couvre des techniques complexes qui utilisent des bibliothèques cryptographiques standard pour atténuer les risques courants, mais n'aborde pas les mathématiques sous-jacentes (qui sont rarement nécessaires en pratique).
[Partie 2, Conception de logiciels sécurisés]
La deuxième partie aborde les sujets les plus originaux et probablement les plus utiles pour le public visé par le livre.
Les chapitres 6, « Principes de conception sécurisée », et 7, « Revues de conception de sécurité », fournissent des conseils sur la conception de logiciels sécurisés et des techniques pratiques pour y parvenir, en abordant les sujets du point de vue du concepteur et du réviseur, respectivement.
Cela explique également pourquoi il est important d'intégrer la sécurité dès le début de la conception logicielle.
Dans la deuxième partie, nous explorons des méthodologies spécifiques pour intégrer les idées abordées dans la première partie à la conception de la sécurité.
La méthodologie d'évaluation repose sur mon expérience du secteur et propose également une démarche étape par étape que vous pouvez appliquer à votre propre travail.
Pour illustrer comment mettre cette idée en pratique, examinons le document de conception type figurant à l'annexe A.
[Partie 3, Mise en œuvre de la sécurité]
Les chapitres 8 à 14 traitent de la sécurité pendant la phase de mise en œuvre, en examinant le déploiement, les opérations et les étapes de fin de vie.
Dans la continuité de la conception sécurisée, la troisième partie de cet ouvrage explore comment développer des logiciels tout en empêchant l'introduction de nouvelles vulnérabilités.
Chaque chapitre de la partie 3 contient du code, expliquant comment les vulnérabilités peuvent être exploitées dans le code et comment les prévenir.
Le chapitre 8, « Programmation sécurisée », présente les problèmes de sécurité auxquels les programmeurs sont confrontés et décrit à quoi ressemblent les vulnérabilités réelles dans le code.
Le chapitre 9, « Exemples de vulnérabilités dans le codage de bas niveau », explique comment les faiblesses de l'arithmétique informatique et la gestion explicite de l'allocation dynamique de mémoire de style C compromettent la sécurité.
Le chapitre 10, « Menaces de sécurité liées aux entrées non fiables », et le chapitre 11, « Sécurité Web », traitent de divers bugs courants qui sont connus depuis longtemps mais qui restent encore non résolus (tels que les attaques par injection, la traversée de chemin, les vulnérabilités XSS et CSRF).
Le chapitre 12, « Tests de sécurité », aborde des techniques de test sous-utilisées mais qui peuvent contribuer à garantir la sécurité du code.
Le chapitre 13, « Meilleures pratiques de développement sécurisé », conclut le guide de mise en œuvre sécurisée en abordant certaines meilleures pratiques et les pièges courants.
Le code traité dans la partie 3 présente généralement des vulnérabilités qu'il convient d'éviter, suivies de versions corrigées montrant comment sécuriser le code (marquées respectivement « Code vulnérable » et « Code corrigé »).
Par conséquent, le code contenu dans ce livre n'est pas destiné à être copié et utilisé directement dans le logiciel d'un environnement d'exploitation.
Même un code modifié peut introduire des vulnérabilités et d'autres problèmes dans différents environnements ; par conséquent, le code présenté dans ce livre ne doit pas être considéré comme sûr pour toutes les applications.
Enfin, le chapitre 14, « Le voyage sans fin de la sécurité », décrit plusieurs façons dont nous prévoyons que ce livre aura un impact positif.
Nous résumons les points clés abordés dans ce livre et nous nous tournons vers l'avenir.
De plus, il commence par exposer une vision de la manière dont ce livre peut contribuer à améliorer la sécurité des logiciels, puis aborde des idées expérimentales qui pourraient contribuer à améliorer progressivement la sécurité des logiciels.
[supplément]
L’annexe A est un exemple de document de conception qui illustre une conception prenant en compte la sécurité dans le monde réel.
L’annexe B est un glossaire des termes de sécurité logicielle utilisés tout au long de ce livre.
L’annexe C contient plusieurs exercices et questions ouverts que les lecteurs motivés pourraient être intéressés à explorer.
L’annexe D est un recueil de documents résumant les concepts et processus clés.
[Note de l'auteur]
Ce livre est un guide destiné aux professionnels du logiciel qui souhaitent mieux comprendre les concepts essentiels de la sécurité logicielle et apprendre à concevoir et à mettre en œuvre des logiciels sécurisés.
J'ai eu la chance d'innover sur certains des sujets abordés ici, et j'ai vu d'autres évoluer et s'implanter.
D’après mon expérience dans le secteur, ce livre regorge d’idées concrètes pour sécuriser les logiciels que vous utilisez.
Ce livre aborde deux thèmes centraux.
Encourager les professionnels du logiciel à se concentrer sur la sécurité dès le début du processus de développement logiciel et veiller à ce que toute l'équipe assume non seulement la responsabilité de la sécurité, mais participe également au processus de sécurité.
Il est clair qu'il existe encore une marge de progression considérable dans ces deux domaines, et ce livre montre comment atteindre ces objectifs.
J'ai eu la rare opportunité de travailler en première ligne de la sécurité logicielle tout au long de ma carrière, et je souhaite maintenant partager ce que j'ai appris le plus largement possible.
Il y a plus de 20 ans, j'ai travaillé chez Microsoft dans une équipe pionnière en matière de modélisation des menaces pour une grande entreprise de logiciels.
Quelques années plus tard, je travaillais chez Google au développement de cette même technique, et c'était une approche totalement inédite des problèmes.
La deuxième partie de ce livre explore les enseignements que j'ai tirés de plus de 100 analyses de conception que j'ai réalisées.
En jetant un regard en arrière sur le chemin parcouru, nous acquérons une perspective plus large et pouvons tout expliquer d'une manière nouvelle.
La conception, la construction et l'exploitation de systèmes logiciels comportent des risques inhérents.
Chaque choix effectué à chaque étape augmente ou diminue le risque d'introduire des failles de sécurité.
Ce livre traite de ce que je connais le mieux et de ce que j'ai appris par l'expérience directe.
Dans ce livre, je présenterai les principes fondamentaux de la sécurité et j'examinerai comment la sécurité peut être intégrée tout au long du développement.
Les exemples de conception et de code fournis dans ce cours sont largement indépendants de toute technologie et donc très largement applicables.
Le texte contient diverses anecdotes, métaphores et exemples pour transmettre des idées abstraites aussi efficacement que possible.
Il existe des différences individuelles dans la manière dont nous acquérons une réflexion sur la sécurité.
Ainsi, en vous aidant à développer votre intuition, j'espère vous aider à trouver de nouvelles façons de promouvoir une perspective de sécurité logicielle dans votre travail.
D'après mon expérience, j'aimerais ajouter que même ceux qui ont un don naturel pour la sécurité peuvent toujours acquérir de nouvelles connaissances.
Ce livre aborde une vaste quantité de sujets de manière concise, et lors de sa rédaction, j'ai senti que cette concision était essentielle à son succès.
La sécurité logicielle est un domaine vaste et complexe, j'espère donc que ce livre sera plus largement lu s'il est concis.
J’espère que les lecteurs trouveront cette nouvelle perspective utile pour réfléchir à la sécurité et pourront facilement l’appliquer à leur propre travail.
- Lauren Kornfelder
[Note du traducteur]
Le sujet de la sécurité peut paraître un peu rigide et difficile.
Il est considéré comme un domaine de spécialisation en raison de ses concepts complexes et de ses mathématiques difficiles, et bien qu'il présente un grand intérêt pour tous, il est considéré comme difficile d'accès.
Cependant, ce livre offre un divertissement d'un genre différent des autres ouvrages professionnels sur la sécurité.
Ce livre est une introduction à l'ingénierie de la sécurité, couvrant les concepts fondamentaux de la sécurité et diverses pratiques de sécurité dans le développement logiciel.
Bien que de nombreux ouvrages aient été publiés sur le thème de la sécurité, je crois qu'il en existe peu qui s'adressent à la fois aux professionnels de la sécurité et aux développeurs de logiciels.
L'auteure Lauren Kornfelder, figure clé dans les domaines de la sécurité des réseaux et de la cryptographie, qui a proposé le concept d'infrastructure à clés publiques (PKI) et développé le modèle STRIDE, une réalisation remarquable dans le domaine de la modélisation des menaces, affirme avec Praerit Garg que la sécurité est un élément très important dans le développement logiciel moderne.
Dans cet ouvrage, Kornfelder propose un guide complet, du conceptuel au pratique, sur la manière dont les développeurs de logiciels et les professionnels de la sécurité peuvent prendre en compte la sécurité lors de la conception et du développement de logiciels.
Plutôt que d'énumérer des concepts difficiles, l'auteur utilise des exemples concrets et des études de cas tirés de son domaine pour faciliter l'approche de la sécurité, ce qui sera d'une grande aide aux développeurs.
Ce livre couvre un large éventail de sujets liés à la sécurité, allant des concepts de sécurité à l'analyse des menaces et des vulnérabilités, en passant par la modélisation de la sécurité et les études de cas.
Il contient également de nombreux conseils utiles pour mettre en œuvre la sécurité dans chaque organisation ou entreprise, tels que la revue de conception de sécurité (SDR).
Par conséquent, ce livre peut servir de référence à toute personne impliquée dans la sécurité, notamment les développeurs, les experts en sécurité, les architectes système et les responsables de la sécurité qui souhaitent intégrer la sécurité dans le processus de développement logiciel.
Je suis convaincu que ce livre sera d'une grande aide pour le développement de logiciels plus sûrs.
- Kim Young-gi
De nos jours, il est courant de recevoir des messages d'hameçonnage prétendant que votre compte a été consulté depuis un nouvel appareil, depuis l'étranger, ou que vous possédez des actifs inutilisés qui doivent être récupérés immédiatement.
Certaines sont si sophistiquées qu'il est devenu courant de craindre d'y accéder accidentellement et de se faire pirater son PC ou son téléphone.
L'été dernier, une erreur dans un fichier de mise à jour logicielle de la société de cybersécurité CrowdStrike a provoqué un grand nombre d'écrans bleus sur les PC Windows, empêchant le bon démarrage de Windows et causant le chaos dans les banques, les compagnies aériennes et les stations de diffusion du monde entier, et même une paralysie informatique dans un aéroport de Corée du Sud.
En fait, ces problèmes sont devenus si courants qu'il est difficile de les compter sur les doigts d'une main.
Avec tout connecté à Internet, nous vivons dans un monde où même une petite erreur ou une seule attaque malveillante peut causer d'énormes dégâts.
Pourtant, dans le développement logiciel, la sécurité est souvent reléguée au second plan.
Face à la difficulté de suivre le rythme des marchés en constante évolution et des exigences des consommateurs, la sécurité n'est souvent prise en compte qu'aux dernières étapes du développement.
De plus, pour beaucoup dans le secteur informatique, la sécurité est encore perçue comme une question difficile et intimidante qui doit être laissée aux experts.
À l'avenir, les attaques malveillantes deviendront beaucoup plus sophistiquées grâce à leur combinaison avec la technologie de l'IA, et les dommages qui en résulteront pourraient être inimaginables.
Nous sommes entrés dans une ère où la sécurité des logiciels ne peut plus être laissée uniquement aux experts.
La vérité, c'est que cela aurait dû être ainsi depuis longtemps, et nous avons tout simplement fermé les yeux.
Nous sommes entrés dans une ère où non seulement les développeurs et les experts en sécurité, mais aussi tous les professionnels du secteur doivent exercer leurs fonctions en gardant la sécurité à l'esprit afin de se protéger eux-mêmes, leurs organisations et les précieux actifs de leurs clients contre les attaques malveillantes et les accidents.
L'objectif principal de cet ouvrage est d'expliquer les concepts et les méthodologies nécessaires aux développeurs de logiciels pour concevoir et implémenter des logiciels sécurisés, en intégrant pleinement les principes de sécurité. Il s'attache toutefois à développer l'état d'esprit indispensable à la sécurité, en s'appuyant sur une compréhension approfondie de son essence. Lors de sa traduction, j'ai eu le sentiment qu'il s'agissait d'un livre idéal pour appréhender la sécurité, non seulement pour les développeurs, mais aussi pour tous les professionnels du secteur.
Lauren Kornfelder, l'auteure de ce livre, est mieux placée que quiconque pour parler de l'essence de la sécurité.
Il fut un pionnier de la sécurité qui a non seulement posé les bases des techniques de sécurité modernes chez Microsoft et Google, mais qui a également été le pionnier du système de certificats numériques, qui constitue le fondement de la technologie de chiffrement largement utilisée aujourd'hui.
L'expérience pratique approfondie et la profonde perspicacité de l'auteur, acquises sur plus de 20 ans, transparaissent tout au long de cet ouvrage.
En traduisant ce livre, j'ai également eu le sentiment que les connaissances fragmentées en matière de sécurité que j'avais acquises en travaillant longtemps dans le secteur informatique se rassemblaient pour former un tout cohérent.
J'espère que les lecteurs de ce livre vivront des expériences similaires et le trouveront utile pour protéger leurs logiciels et leurs actifs numériques.
- Park Ki-seong
SPÉCIFICATIONS DES PRODUITS
- Date d'émission : 11 décembre 2024
Nombre de pages, poids, dimensions : 424 pages | 798 g | 185 × 240 × 21 mm
- ISBN13 : 9791189909765
- ISBN10 : 1189909766
Vous aimerez peut-être aussi
카테고리
Langue coréenne
Langue coréenne