AppSec est difficile
Les programmes de sécurité des applications sont difficiles. Il y a beaucoup de pièces mobiles. Mais il est nécessaire de s'assurer que le logiciel est conçu, construit et déployé de manière à minimiser les vulnérabilités de sécurité, protégeant ainsi les utilisateurs et leurs données contre les cyberattaques potentielles. Un programme AppSec robuste aura une approche globale qui implique l'intégration de diverses pratiques tout au long du processus de développement logiciel afin de minimiser le risque de vulnérabilités et de failles de sécurité. Ce n'est en aucun cas une liste complète, mais cela vous donnera une idée de la portée.
La modélisation des menaces est le processus d'identification et d'évaluation des menaces de sécurité potentielles et des vulnérabilités du logiciel avant qu'elles ne puissent être exploitées. Cela peut être fait en analysant l'architecture et la conception du logiciel, en identifiant les données sensibles et en identifiant les vecteurs d'attaque potentiels. La modélisation agile des menaces est une méthodologie qui combine les principes du développement logiciel agile avec la modélisation des menaces. Cette approche permet aux équipes d'identifier et de traiter les menaces de sécurité et les vulnérabilités potentielles dès le début du processus de développement, tout en étant en mesure de répondre rapidement à l'évolution des exigences.
Le codage sécurisé est une autre pratique importante dans le développement de logiciels sécurisés. Cela implique d'écrire du code exempt de failles de sécurité et de vulnérabilités courantes. Cela peut être facilité par l'utilisation de directives de codage sécurisées, telles que le matériel OWASP . Ces types de ressources fournissent aux développeurs un ensemble de bonnes pratiques pour écrire du code sécurisé et les aident à éviter les erreurs courantes qui peuvent entraîner des failles de sécurité.
La mise à jour des logiciels est une autre pratique importante. Cela inclut non seulement le logiciel lui-même, mais également toutes les bibliothèques et dépendances tierces. Cela garantit que toutes les vulnérabilités de sécurité connues sont traitées en temps opportun, réduisant ainsi le risque d'exploitation par des attaquants.
Bien sûr, il existe des tests d'intrusion et l'analyse des vulnérabilités sont des techniques utilisées pour identifier et résoudre les vulnérabilités de sécurité dans les logiciels. Ces techniques simulent des attaques réelles sur le logiciel, permettant aux développeurs d'identifier et de traiter toutes les vulnérabilités avant qu'elles ne puissent être exploitées par des attaquants. Des outils automatisés tels que l'analyse de la composition logicielle (SCA), les tests de sécurité des applications statiques (SAST), les tests de sécurité des applications dynamiques (DAST), les tests de sécurité des applications interactives (IAST), les tests de sécurité des applications mobiles (MAST) et l'autoprotection des applications d'exécution ( RASP) peut être utilisé pour automatiser l'identification et la correction des vulnérabilités de sécurité. De plus, la sécurité des API est un aspect essentiel du développement de logiciels modernes.
Un autre aspect important du développement de logiciels sécurisés est la prévention des pertes de données (DLP). Les solutions DLP peuvent être utilisées pour détecter et empêcher l'exposition non autorisée de données sensibles, telles que des informations personnelles identifiables (PII), des secrets, etc.
L'éducation et la formation sont également importantes pour le développement de logiciels sécurisés. Les programmes de champions de la sécurité et les programmes de formation pour les développeurs peuvent aider à garantir que tous les membres de l'équipe de développement possèdent les connaissances et les compétences nécessaires pour écrire du code sécurisé. Cela inclut la compréhension du Top 10 de l'OWASP, une liste des risques de sécurité des applications Web les plus critiques, et du Top 25 du Common Weakness Enumeration (CWE) , une liste des faiblesses logicielles courantes.
La méthodologie de décalage vers la gauche et les portes automatisées dans les pipelines sont également essentielles pour le développement de logiciels sécurisés. Ces pratiques permettent aux développeurs d'identifier et de traiter les vulnérabilités potentielles dès le début, avant qu'elles ne fassent partie de la base de code et ne soient déployées en production en intégrant des outils dans des pipelines d'intégration et de livraison continues (CI/CD), ainsi qu'en obtenant la sortie de ces outils. un endroit où vous pouvez suivre les indicateurs de performance clés (KPI) et également trier les vulnérabilités potentielles en s'intégrant à quelque chose comme JIRA pour une gestion agile du travail.
Les crochets git pré-commit sont également un outil utile pour le développement de logiciels sécurisés. Ces crochets peuvent être utilisés pour vérifier automatiquement l'insécurité du code ii avant qu'il ne soit validé dans le référentiel, ou vous empêcher de valider des secrets.
Un autre aspect important d'AppSec est le triage des vulnérabilités. Il s'agit du processus d'identification et de hiérarchisation des vulnérabilités en fonction de leur gravité et de leur impact potentiel. Cette approche permet aux organisations de concentrer leurs ressources sur les vulnérabilités les plus critiques et de les traiter en temps opportun. Des facteurs tels que la probabilité d'exploitation, l'impact potentiel et la facilité d'exploitation sont pris en compte lors du tri des vulnérabilités. Dans certains cas, l'application de correctifs peut ne pas être la meilleure solution, et des alternatives telles que la surveillance, la segmentation du réseau et les contrôles d'accès peuvent être envisagées.
Afin de gérer un programme AppSec robuste, il est important de disposer des bons outils et plates-formes. Certaines options populaires incluent Esno pour gagner en visibilité et coordonner les outils, les personnes et les processus. Checkmarx et Veracode offrent de nombreuses fonctionnalités pour l'analyse statique et dynamique, et Snyk est réputé pour ses capacités de sécurité open source, et dans son ensemble, la plate-forme est appréciée pour sa facilité d'utilisation et sa concentration sur les développeurs, mais Black Duck a une solide réputation au sein de SCA. Invicti est bon pour IAST, Wiz devient populaire pour CSPM. Aqua pour la sécurité des conteneurs a fait ses preuves, SpectralOpspour DLP, NoName Security ou Salt pour la sécurité des API, NowSecure pour Mobile AppSec, Irius Risk pour la modélisation des menaces ou Bionic pour une approche plus automatisée de la modélisation des menaces et de la gestion de la posture. Il y a aussi le fuzzing, qui est un type de test dynamique basé sur le comportement qui teste l'inconnu et essaie de trouver la vulnérabilité ; un exemple très moderne d'une plate-forme dans cet espace est Mayhem .
Pour suivre les risques liés à l'open source et aux tiers, il est également important de conserver une nomenclature logicielle (SBOM). Certains de ces outils peuvent les générer pour vous (Veracode, Black Duck, etc).
Certains ne considèrent peut-être pas cela comme faisant partie d'un programme AppSec, mais je pense que la technologie Deception Engineering devrait faire partie du programme plus large de Product Security visant à essayer de gaspiller les ressources des attaquants et de les forcer à passer à des cibles plus faciles et moins coûteuses. Un exemple de pointe dans cet espace est CounterCraft. Pensez à la technologie du pot de miel sur les stéroïdes.
De plus, la formation et l'éducation sont essentielles pour le développement de logiciels sécurisés. Les options de formation Secure Code Review incluent Secure Code Warrior , Security Journey , Immersive Labs et Avatao . Les programmes de divulgation des vulnérabilités (VDP) peuvent être gérés via des plateformes comme HackerOne et les programmes Bug Bounty peuvent être configurés et gérés via des plateformes comme Intigriti.
Il y a plus que nous pourrions aborder, comme le rôle de la politique en tant que code et comment automatiser entièrement les portes et comment les flux de travail d'approbation devraient fonctionner dans des contextes hautement réglementés, mais nous devrons en rester là pour le moment.
En résumé, le développement de logiciels sécurisés nécessite une approche globale et à multiples facettes qui implique l'intégration de toutes les pratiques mentionnées ci-dessus tout au long du processus de développement de logiciels. Ce faisant, les développeurs peuvent assurer la sûreté et la sécurité des utilisateurs et de leurs données, et créer des logiciels robustes, fiables et sécurisés. Il est important de noter que le paysage de la sécurité est en constante évolution. Par conséquent, un examen et des recherches continus sont nécessaires pour suivre le rythme.
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































