La lecture manuelle du code est un processus qui prend du temps. Il est également sujet aux erreurs, car il est facile de manquer des détails importants. En tant que développeurs et testeurs d'intrusion, nous devons trouver un moyen d'automatiser ce processus. SAST est une technique qui peut nous aider dans cette tâche.
SAST n’est pas une solution miracle. Il n'est utilisable que pour les cas d'utilisation avec accès au code source pour les projets open source ou les tests d'intrusion en boîte blanche. Cependant, cela peut vous aider à trouver des fruits à portée de main et à gagner du temps.
Les tests de sécurité des applications statiques (SAST) sont un sous-ensemble de l'analyse de code statique utilisé pour augmenter la sécurité et la fiabilité du code. SAST détecte les anciennes dépendances, la détection des secrets, les erreurs logiques conduisant à des vulnérabilités, etc. SAST comprend des tests qui affectent secondairement la cybersécurité, tels que la complexité visuelle du code, l'ambiguïté du code et les pratiques non intuitives pouvant conduire à des vulnérabilités.
Les outils SAST sont généralement des comparateurs de modèles d'expressions régulières sous stéroïdes qui recherchent des vulnérabilités connues dans le code. Par exemple, un outil SAST peut rechercher l'utilisation de eval
, exec
ou pickle
dans le code Python, ces fonctions peuvent être utilisées pour exécuter du code arbitraire.
Je diviserais mon approche du SAST en trois catégories :
Détection de vulnérabilités : J'utilise des outils comme Semgrep , Bandit , Nodejsscan pour trouver des vecteurs d'attaque dans le code. Vous pouvez généralement trouver des fruits faciles à trouver, tels que des entrées non nettoyées, une mauvaise cryptographie ou des bibliothèques vulnérables. À propos, la version Semgrep PRO a plus de règles ; c'est gratuit s'il n'y a pas plus de 10 développeurs sur le projet.
Détection de secrets : Gitleaks , Trufflehog ou Grep peuvent vous aider à trouver des secrets dans le code. Ceci est important car les secrets peuvent être utilisés pour élever des privilèges ou accéder à des données sensibles. Habituellement, les chaînes de connexion à la base de données, les clés API ou les mots de passe sont stockés dans le code.
Mauvaises configurations : des outils comme Checkov ou Trivy peuvent vous aider à trouver des erreurs de configuration. Les erreurs de configuration se trouvent généralement dans les fichiers « Infrastructure as Code » (IaC), mais peuvent également se trouver dans le code lui-même. Un exemple serait un fichier docker-compose mal configuré qui expose une base de données à Internet. Pour analyser les Dockerfiles, je recommande une combinaison de hadolint et grype
Plus d'informations : https://dkb-zh.gitlab-pages.ics.muni.cz/vulnerability-management/web-guides-external/docs/guide_iac_sast/#docker
Les outils SAST ne sont pas parfaits. Ils vous donneront des faux positifs et des faux négatifs. **Cependant, cela permet de gagner beaucoup de temps par rapport à l'exploitation aléatoire de certaines applications. J'ai utilisé les outils SAST dans mes missions et concours de tests d'intrusion. Cela m'a aidé à démarrer avec la base de code et m'a donné quelques indices sur où rechercher les vulnérabilités.
Je vous recommande de commencer par Hack The Box . Cette plateforme présente des défis, tels que l'obtention du code source et la recherche de vulnérabilités. Ensuite, exploitez-les sur une vraie machine. C'est un excellent moyen d'apprendre à utiliser les outils SAST dans la pratique.
Ou, si vous êtes développeur, vous pouvez utiliser les outils SAST dans votre pipeline CI/CD. De cette façon, vous pourrez vous habituer aux outils et à leurs résultats. Simultanément, vous améliorerez la sécurité de votre application.
J'ai préparé une liste de guides pour vous aider à démarrer avec SAST et la détection secrète. Ces guides sont rédigés dans le cadre de ma thèse et constituent un excellent point de départ pour toute personne intéressée par les outils SAST.
Lorsque vous détectez des secrets, n'oubliez pas : ce n'est pas un secret si les pirates le connaissent. Même les développeurs chevronnés peuvent accidentellement insérer des mots de passe ou des chaînes de connexion dans le contrôle de source à distance. À l’aide de divers outils, ce guide propose des méthodes simples et rapides pour atténuer ce risque.
Ce guide se concentre sur la compréhension de la détection des secrets à l'aide de hooks de pré-validation et de pipelines CI/CD. Bien que le code se concentre principalement sur GitLab, la dernière section couvrira également GitHub.
Ce guide décrit efficacement les étapes de lancement des tests de sécurité des applications statiques (SAST) dans GitLab. SAST est un processus qui utilise l'analyse statique du code pour identifier les vulnérabilités potentielles.
Cette aide-mémoire présente des outils utiles pour analyser les artefacts Infrastructure as Code (IaC) et fournit des exemples sur la façon de les intégrer dans votre pipeline CI/CD.
J'ai créé un outil personnalisé dans Golang qui m'aide à faire correspondre rapidement les expressions rationnelles avec d'énormes bases de code.
Il existe un compromis infini entre précision et variance.
Supposons que vous ayez besoin de plus de variance et que cela ne vous dérange pas de procéder à davantage de révisions manuelles. Dans ce cas, vous pouvez essayer RegFinder , qui est comme grep
mais plus adapté à la détection de secrets (plus rapide dans les dépôts plus importants, sortie claire, ignorant certaines extensions de fichiers). Ou vous pouvez utiliser grep directement. Les expressions rationnelles du dépôt sont les plus précieuses , et non l'outil que vous utiliserez.
grep -n -r your_app/ -Ef regex_dir/general.txt
Ou
./regfinder.elf -d your_app/ -f regex_dir/general.txt
Il est simple d’étendre les modèles d’expression régulière existants. Cet outil n'est pas réalisable pour les pipelines automatisés. Cependant, cela s'avère pratique si vous avez besoin de trouver un secret non standard ou dans d'autres évaluations, telles que les examens de sécurité, où davantage de travail manuel est attendu.
Commentez si vous avez une grande expérience avec d’autres outils . Merci pour la lecture.