paint-brush
Lesen Sie Code wie ein Hacker mit der SAST-Technikvon@matejsmycka
2,710 Lesungen
2,710 Lesungen

Lesen Sie Code wie ein Hacker mit der SAST-Technik

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

Zu lang; Lesen

Statische Anwendungssicherheitstests (SAST) sind eine Untergruppe der statischen Codeanalyse, die verwendet wird, um die Sicherheit und Zuverlässigkeit des Codes zu erhöhen. SAST erkennt alte Abhängigkeiten, geheime Erkennung, logische Fehler, die zu Schwachstellen führen, und mehr. Es ist kein Allheilmittel, kann Ihnen aber dabei helfen, einige leicht zu erreichende Ziele zu finden und Zeit zu sparen.
featured image - Lesen Sie Code wie ein Hacker mit der SAST-Technik
Matěj Smyčka HackerNoon profile picture
0-item
1-item
2-item

Das manuelle Lesen von Code ist ein zeitaufwändiger Prozess. Außerdem ist er fehleranfällig, da wichtige Details leicht übersehen werden können. Als Entwickler und Penetrationstester müssen wir einen Weg finden, diesen Prozess zu automatisieren. SAST ist eine Technik, die uns bei dieser Aufgabe helfen kann.


SAST ist kein Allheilmittel. Es kann nur für Anwendungsfälle mit Zugriff auf den Quellcode für Open-Source-Projekte oder White-Box-Penetrationstests verwendet werden. Es kann Ihnen jedoch dabei helfen, einige leicht zu erreichende Ziele zu finden und Zeit zu sparen.

Was ist SAST?

Statische Anwendungssicherheitstests (SAST) sind eine Untergruppe der statischen Codeanalyse, die verwendet wird, um die Sicherheit und Zuverlässigkeit des Codes zu erhöhen. SAST erkennt alte Abhängigkeiten, geheime Erkennung, logische Fehler, die zu Schwachstellen führen, und mehr. SAST umfasst Tests, die sich sekundär auf die Cybersicherheit auswirken, wie z. B. visuelle Codekomplexität, Codemehrdeutigkeit und nicht intuitive Praktiken, die zu Schwachstellen führen können.

Werkzeuge in der Praxis

SAST-Tools sind normalerweise Regex-Pattern-Matcher auf Steroiden, die nach bekannten Schwachstellen im Code suchen. Ein SAST-Tool könnte beispielsweise nach der Verwendung von eval , exec oder pickle in Python-Code suchen. Diese Funktionen können zum Ausführen beliebigen Codes verwendet werden.

Beispiel für eine Regel

Hacking und SAST

Ich würde meinen Ansatz zu SAST in drei Kategorien unterteilen:

  1. Schwachstellenerkennung : Ich verwende Tools wie Semgrep , Bandit und Nodejsscan , um Angriffsmethoden im Code zu finden. Normalerweise findet man dort leicht zu erreichende Ziele wie nicht bereinigte Eingaben, schlechte Kryptografie oder anfällige Bibliotheken. Übrigens hat die Semgrep PRO-Version mehr Regeln; sie ist kostenlos, wenn nicht mehr als 10 Entwickler am Projekt beteiligt sind.

    Semgrep und SQLi

  2. Geheimniserkennung : Gitleaks , Trufflehog oder Grep können Ihnen dabei helfen, Geheimnisse im Code zu finden. Dies ist wichtig, da Geheimnisse dazu verwendet werden können, Berechtigungen zu erhöhen oder auf vertrauliche Daten zuzugreifen. Normalerweise werden im Code Datenbankverbindungszeichenfolgen, API-Schlüssel oder Passwörter gespeichert.

  3. Fehlkonfigurationen : Tools wie Checkov oder Trivy können Ihnen dabei helfen, Fehlkonfigurationen zu finden. Fehlkonfigurationen befinden sich normalerweise in „Infrastructure as Code“-Dateien (IaC), können aber auch im Code selbst enthalten sein. Ein Beispiel wäre eine falsch konfigurierte Docker-Compose-Datei, die eine Datenbank dem Internet zugänglich macht. Zum Scannen von Dockerfiles empfehle ich eine Kombination aus Hadolint und Grype .

    Weitere Informationen: https://dkb-zh.gitlab-pages.ics.muni.cz/vulnerability-management/web-guides-external/docs/guide_iac_sast/#docker


SAST-Tools sind nicht perfekt. Sie liefern falsche Positiv- und Negativergebnisse. **Im Vergleich zum willkürlichen Ausnutzen bestimmter Anwendungen sparen sie jedoch viel Zeit. Ich habe SAST-Tools bei meinen Penetrationstests und Wettbewerben verwendet. Sie halfen mir beim Einstieg in die Codebasis und gaben mir Hinweise, wo ich nach Schwachstellen suchen sollte.

So trainieren Sie mit SAST beim Hacken

Ich empfehle, mit Hack The Box zu beginnen. Diese Plattform bietet Herausforderungen, wie z. B. das Abrufen von Quellcode und das Auffinden von Schwachstellen. Nutzen Sie diese dann auf einer echten Maschine aus. Dies ist eine großartige Möglichkeit, den praktischen Einsatz von SAST-Tools zu erlernen.

Oder wenn Sie Entwickler sind, können Sie SAST-Tools in Ihrer CI/CD-Pipeline verwenden. Auf diese Weise können Sie sich mit den Tools und ihren Ergebnissen vertraut machen. Gleichzeitig verbessern Sie die Sicherheit Ihrer Anwendung.

HackTheBox-Herausforderungen

Empfehlungen des Reiseführers

Ich habe eine Liste mit Anleitungen zusammengestellt, die Ihnen den Einstieg in SAST und die Erkennung von Geheimnissen erleichtern. Diese Anleitungen wurden im Rahmen meiner Abschlussarbeit geschrieben und sind ein guter Ausgangspunkt für alle, die sich für SAST-Tools interessieren.

So beginnen Sie mit der Geheimerkennung.

Denken Sie beim Erkennen von Geheimnissen daran: Es ist kein Geheimnis, wenn Hacker es kennen. Selbst erfahrene Entwickler können versehentlich Passwörter oder Verbindungszeichenfolgen in die Remote-Quellcodeverwaltung übertragen. Mithilfe verschiedener Tools bietet dieser Leitfaden schnelle und einfache Methoden, um dieses Risiko zu mindern.

So automatisieren Sie die Geheimniserkennung

In diesem Handbuch geht es um das Verständnis der Geheimniserkennung mithilfe von Pre-Commit-Hooks und CI/CD-Pipelines. Während sich der Code hauptsächlich auf GitLab konzentriert, wird im letzten Abschnitt auch GitHub behandelt.

So starten Sie mit SAST-Pipelines

In diesem Handbuch werden die Schritte zum Starten von Static Application Security Testing (SAST) in GitLab kurz beschrieben. SAST ist ein Prozess, der mithilfe einer statischen Codeanalyse potenzielle Schwachstellen identifiziert.

So beginnen Sie mit IaC SAST

Dieses Cheatsheet stellt hilfreiche Tools zum Scannen von Infrastructure-as-Code (IaC)-Artefakten vor und bietet Beispiele für deren Integration in Ihre CI/CD-Pipeline.

Benutzerdefiniertes Tool in Golang

Ich habe in Golang ein benutzerdefiniertes Tool erstellt, mit dem ich reguläre Ausdrücke schnell mit riesigen Codebasen abgleichen kann.

Es gibt einen unendlichen Kompromiss zwischen Präzision und Varianz.

Angenommen, Sie benötigen mehr Abwechslung und haben nichts gegen mehr manuelle Überprüfung. In diesem Fall können Sie RegFinder ausprobieren, das wie grep ist, aber besser für die Geheimniserkennung geeignet ist (schneller in größeren Repos, klare Ausgabe, Ignorieren einiger Dateierweiterungen). Oder Sie können grep direkt verwenden. Am wertvollsten sind die regulären Ausdrücke im Repo, nicht das Tool, das Sie verwenden werden.

  1. Dieses Repository klonen
  2. Führen Sie grep -n -r your_app/ -Ef regex_dir/general.txt aus.

Oder

  1. Führen Sie ./regfinder.elf -d your_app/ -f regex_dir/general.txt

Es ist ganz einfach, vorhandene Regex-Muster zu erweitern. Dieses Tool ist für automatisierte Pipelines nicht geeignet. Es ist jedoch praktisch, wenn Sie ein nicht standardmäßiges Geheimnis finden müssen oder bei anderen Bewertungen, wie z. B. Sicherheitsüberprüfungen, bei denen mehr manuelle Arbeit zu erwarten ist.



Kommentieren Sie, wenn Sie gute Erfahrungen mit anderen Tools gemacht haben . Vielen Dank fürs Lesen.