Comprendre les vulnérabilités en matière de sécurité
La gestion des vulnérabilités en matière de sécurité est difficile, non seulement parce que les vulnérabilités peuvent être difficiles à détecter, mais aussi parce qu’il existe de nombreux types de vulnérabilités. Heureusement, il existe des outils et des techniques qui permettent de remédier aux différents types de vulnérabilités qui peuvent se cacher dans n’importe quelle couche de votre pile technologique.
Qu’est-ce qu’une vulnérabilité de sécurité ?
Une vulnérabilité de sécurité est une erreur ou une faille dans une ressource informatique qui pourrait être exploitée par des attaquants.
Comme expliqué plus en détail ci-dessous, ces erreurs ou défauts peuvent prendre diverses formes. Une faille de sécurité peut être une erreur de codage dans le code source d’une application qui peut être utilisée pour lancer une attaque par débordement de tampon. Il peut s’agir d’une négligence de la part des développeurs qui oublient de valider correctement les entrées dans une application, permettant ainsi des attaques par injection. Il peut s’agir d’une mauvaise configuration de sécurité dans le cadre d’une politique de contrôle d’accès ou d’une configuration de réseau qui permet à des personnes extérieures d’accéder à des ressources sensibles.
Vulnérabilité de sécurité vs. exploit vs. menace vs. brèche
Vous entendrez peut-être les termes « vulnérabilité de sécurité », « exploit », « menace » et « brèche » utilisés de manière rapprochée. Cependant, bien que ces termes soient étroitement liés, ils se réfèrent chacun à des parties différentes de la chaîne d’événements qui peuvent conduire à un incident de sécurité :
- Une vulnérabilité de sécurité est une faille qui peut potentiellement être exploitée pour lancer une attaque.
- Un exploit est la méthode qui tire parti d’une vulnérabilité afin d’exécuter une attaque. L’injection d’un code malveillant dans une application peut constituer un exploit.
- Une menace est l’ensemble des conditions qui doivent être réunies pour qu’un exploit fonctionne. Une menace peut n’exister que lorsque le logiciel fonctionne sur un certain système d’exploitation ou lorsque les attaquants ont accès à une certaine interface, par exemple.
- Une brèche est une attaque active. Les brèches se produisent lorsque les acteurs de la menace réussissent à exécuter un exploit.
Les vulnérabilités de sécurité étant à la base de la chaîne d’exploits, de menaces et de brèches décrite ci-dessus, la détection des vulnérabilités est le meilleur moyen d’étouffer les risques de sécurité dans l’œuf. Si vous éliminez la vulnérabilité, vous éliminez également les exploits, les menaces et les brèches potentielles qui peuvent résulter de cette vulnérabilité.
Principaux types de vulnérabilités de sécurité
Bien qu’il existe une grande variété de vulnérabilités en matière de sécurité susceptibles d’exister dans un environnement informatique, la plupart des vulnérabilités se classent dans l’une des quatre catégories suivantes :
- Code malveillant: Code que des parties malveillantes insèrent dans une base de code, comme les logiciels malveillants, et qui peut être exploité pour obtenir un accès non autorisé à des systèmes ou prendre le contrôle d’applications.
- Erreurs de configuration: Des erreurs de configuration telles qu’une règle de gestion des identités et des accès (IAM) dans le cloud qui donne un accès public à des données sensibles peuvent conduire à des brèches.
- Défauts de codage: Défauts de codage – Les erreurs de codage ou les oublis, tels que l’absence de validation des entrées afin de détecter les entrées d’application conçues pour obtenir un accès non autorisé, peuvent conduire à des exploits.
- Absence de cryptage: Les données qui ne sont pas correctement cryptées, que ce soit au repos ou en transit sur un réseau, sont vulnérables aux attaques.
Comment détecter les vulnérabilités en matière de sécurité des applications ?
Les vulnérabilités de sécurité se présentant sous de nombreuses formes, leur détection nécessite une approche sur plusieurs fronts. Diverses techniques sont disponibles pour aider à découvrir les risques de sécurité.
Analyse statique de sécurité des applications
L’analyse statique de la sécurité des applications (en anglais : Static Application Security Analysis ou SAST) est une catégorie de tests de sécurité qui analyse le code source et, dans certains cas, le code binaire afin d’en identifier les vulnérabilités. En règle générale, le SAST recherche des « signatures » de vulnérabilité, telles que des dépendances connues pour ne pas être sûres.
Analyse de la sécurité des applications
L’analyse dynamique de la sécurité des applications (en anglais : Dynamic Application Security Analysis ou DAST) identifie les vulnérabilités en lançant automatiquement des attaques actives contre des applications dans des environnements de test. Les attaques menées avec succès révèlent les vulnérabilités de l’application.
Tests de pénétration
Dans les tests de pénétration, les testeurs de sécurité cherchent manuellement à identifier et à exploiter les vulnérabilités. Les tests de pénétration diffèrent du DAST en ce sens qu’ils impliquent que des experts en sécurité recherchent activement des vulnérabilités, alors que le DAST repose sur l’émulation d’attaques automatisées.
Scanners d’images
Les scanners d’images, tels que JFrog Xray, détectent les vulnérabilités des logiciels après leur compilation ou leur conditionnement. Ainsi, les outils d’analyse d’images de conteneurs sont utiles pour identifier les dépendances ou les configurations vulnérables au sein d’un paquet d’applications qui pourrait être la cible d’une attaque. Par exemple, un scanner d’images pourrait vérifier une image de conteneur pour déterminer si l’une des dépendances de l’image contient des vulnérabilités.
Audits de configuration
Les outils d’audit de configuration sont généralement utilisés pour valider la configuration de l’infrastructure qui héberge les applications, par opposition aux applications elles-mêmes (bien que, dans certains cas, les audits de configuration puissent être effectués sur les fichiers de configuration qui définissent les paramètres de l’application).
Par exemple, un audit de configuration d’un environnement cloud pourrait détecter des règles IAM ou des configurations de réseau non sécurisées. Par ailleurs, un auditeur de configuration pourrait être utilisé pour scanner un environnement Kubernetes afin de détecter les mauvaises configurations dans les contextes de sécurité Kubernetes, les politiques de réseau ou d’autres paramètres qui affaiblissent la posture de sécurité de l’environnement.
Vous souhaitez en savoir plus sur des vulnérabilités spécifiques en matière de sécurité ?
Vulnérabilité Log4j (également connue sous le nom de Log4Shell)
Vulnérabilité Spring4Shell (également connue sous le nom de SpringShell)