paint-brush
Lisez le code comme un hacker avec la technique SASTpar@matejsmycka
2,710 lectures
2,710 lectures

Lisez le code comme un hacker avec la technique SAST

par Matěj Smyčka4m2024/05/03
Read on Terminal Reader

Trop long; Pour lire

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. Ce n’est pas une solution miracle, mais cela peut vous aider à trouver des fruits à portée de main et à gagner du temps.
featured image - Lisez le code comme un hacker avec la technique SAST
Matěj Smyčka HackerNoon profile picture
0-item
1-item
2-item

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.

Qu’est-ce que le SAST ?

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.

Outils en pratique

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.

Exemple de règle

Piratage et SAST

Je diviserais mon approche du SAST en trois catégories :

  1. 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.

    Semgrep et SQLi

  2. 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.

  3. 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.

Comment se former à l'utilisation de SAST en hacking

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.

Les défis HackTheBox

Recommandation des guides

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.

Comment démarrer avec la détection secrète.

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.

Comment automatiser la détection des secrets

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.

Comment démarrer avec les pipelines SAST

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.

Comment démarrer avec IaC SAST

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.

Outil personnalisé dans Golang

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.

  1. Cloner ce référentiel
  2. Exécutez grep -n -r your_app/ -Ef regex_dir/general.txt

Ou

  1. Exécutez ./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.