Stocker les secrets utilisés par une application

Dans une application, il est souvent nécessaire d’utiliser des secrets. Ces secrets peuvent servir à se connecter à une base de données, à accéder à une API distante, chiffrer/signer des données, etc. 2 questions se posent : Comment/Où stocker ces secrets ? Comment mettre à jour facilement un secret utilisé par plusieurs applications ? Le moyen le plus facile de mettre à disposition ces mots de passe est de les enregistrer dans les fichiers de configuration de l’application nommés par environnement (appsettings. [Voir plus]

Gestion des analyses de sécurité avec DefectDojo

Lors de la vie d’une application, des tests de sécurité (manuels et/ou automatisés) sont réalisés. Pour réaliser ces tests, des pentesteurs et/ou des outils rentrent en jeux pour détecter des vulnérabilités. Une fois ces problèmes remontés dans des rapports souvent statiques, il est nécessaire d’assurer un suivi de ces vulnérabilités pour suivre et maitriser l'état de santé d’une application sur l’aspect sécurité. Pour faciliter cette gestion, des outils d’agrégation/gestion de vulnérabilités comme DefectDojo, ThreadFix ou CodeDX permettent rendre cette tâche plus facile. [Voir plus]

Analyse des dépendances (SCA - Sofware Component Analysis)

Les dépendances tierces représentent en moyenne 80% du code d’une application (Gartner). Au même titre que le code écrit par les développeurs de l’application, une porte d’entrée dans une de ces librairies peut compromettre la sécurité du système. Ainsi, en plus des vulnérabilités présentes dans le code écrit par les développeurs de la dite application, il faut s’assurer que ces dépendances embarquées ne contiennent pas de CVE. Afin de vérifier ces dépendances, l’outil d’analyse doit les lister et déduire les versions utilisées. [Voir plus]

Tests de sécurité automatisés

Les chaînes de CI/CD permettent une industrialisation de la production logicielle en testant, packageant et déployant les applications automatiquement. Dans ces chaînes automatiques, l’aspect sécurité est régulièrement mis de côté et les tests associés sont bien souvent manuels. Les tests automatiques de sécurité peuvent être catégorisés en 2 familles, le SAST (Static Application Security Testing) qui analyse de manière statique le code produit par les développeurs ou les fichiers de configuration paramétrés par les administrateurs système alors que le DAST (Dynamic Application Security Testing) fait des tests sur une application ou un serveur déployé et accessible. [Voir plus]

OpenSAMM, modèle de maturité pour le développement d'applications sécurisées

OpenSAMM (Software Assurance Maturity Model) est un des projets “Flagship” de l’OWASP (Open Web Application Security Project) permettant d'évaluer, définir et mettre en place une stratégie de sécurité pour les applications. Le projet propose de découper le développement logiciel en 4 domaines divisés en 12 sous-domaines. On retrouve globalement les différentes étapes du SDLC. Fonctionnement Chaque sous domaine est divisé en 4 niveaux de maturité. 0 : Niveau implicite de départ 1 : Compréhension initiale et mise en place de pratiques de sécurité 2 : Amélioration de l’efficacité/efficience des pratiques de sécurité 3 : Maîtrise complète des pratiques de sécurité Pour chaque sous-domaine, plusieurs éléments sont associés à chaque niveau de maturité : [Voir plus]

Secure Software Development Life Cycle (SSDLC)

Le cycle de de vie du développement d’un application est l’ensemble des étapes de réalisation d’un logiciel dans le but de construire un produit de qualité. L’intégration de la sécurité dans le SDLC intervient à chaque étape de celui-ci et se matérialise de plusieurs manières (threat modeling, review, SAST, DAST, etc.). Ci-dessous, une liste non-exhaustive d’actions à mener au sein du SDLC pour délivrer une application sécurisée. Ma présentation sur SlideShare : Secure Software Development Life Cycle (SSDLC) [Voir plus]

Surveiller vos dépendances avec Dependency Check de l'OWASP

Selon le Gartner, dans une application, 80% du code est fourni par des dépendances (spring, ORM, parsing de XML/JSON, etc.). Sur 95% des applications qui contiennent des dépendances opensource, 65% contiennent des dépendances vulnérables. Malheureusement, lorsqu’une dépendance est installée pour un besoin spécifique, le suivi est rarement fait pour se tenir à jour des nouvelles versions et encore moins des vulnérabilités qui pouvant l’affecter. Dependency Check L’OWASP propose un outil nommé Dependency Check permettant de lister et vérifier automatiquement pour toutes les dépendances d’une application si une CVE (Common Vulnerabilities and Exposures) a été publiée pour la version utilisée. [Voir plus]

Scanner les vulnérabilités d'un site web avec Arachni

Arachni est un scanneur de vulnérabilités web écrit en Ruby (cross-plateforme) par Tasos Laskos et permettant d’automatiser la détection d’un grand nombre de failles (XSS, SQL Injection, Local File Injection, Remote File Injection, etc.). Il est disponible sous la forme d’une interface web, une application console et une API REST. Types de scans Arachni permet de faire des scans actifs ou passifs. Scans actifs Ils testent la présence de failles sur les pages web visitées, par exemple : [Voir plus]

Principe et implémentation de HSTS (HTTP Strict Transport Security)

HTTPS est devenu quasiment obligatoire sur tous les sites web et particulièrement sur ceux contenant des formulaires. Même si ce n’est pour le moment qu’une indication non bloquante, Firefox émet une erreur lors de la visite d’une page non sécurisée contenant des formulaires (en savoir plus). Pour rappel, la mise en place du protocole HTTPS est maintenant facilitée par l’initiative Let’s Encrypt. Problématique Traditionnellement, sur un site web implémentant HTTPS, un utilisateur qui souhaite accéder à la version HTTP est redirigé via une HTTP 301 sur la version HTTPS : [Voir plus]

Se protéger des failles XSS avec les headers CSP (Content Security Policy)

Les failles XSS (Cross-Site Scripting), étant classées en troisième position du dernier TOP 10 de l’OWASP, sont une porte d’entrée dans les systèmes d’information (scan de ports, exploits, etc.) et une menace pour les utilisateurs (vol d’information d’identifications). Les traditionnelles contre mesures mises en place sont le filtrage des données entrantes sur le serveur (input filtering) et l’encodage des données sortantes (output encoding) afin d'éviter l’exécution de scripts malveillants sur les postes clients. [Voir plus]