Source code Review / SAST Tools
Anleitung und Listen von Tools
Mehrsprachige Tools
Es gibt ein kostenloses Paket zur Überprüfung von PRs.
Es ist ein Open Source-Tool.
Unterstützte Sprachen
Kategorie | Sprachen |
---|---|
GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
Beta | Kotlin · Rust |
Experimental | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · |
Schnellstart
Sie können auch die semgrep VSCode-Erweiterung verwenden, um die Ergebnisse in VSCode zu erhalten.
Es gibt eine installierbare kostenlose Version.
Schnellstart
CodeQL
Es gibt eine installierbare kostenlose Version, aber laut der Lizenz dürfen Sie die kostenlose CodeQL-Version nur in Open-Source-Projekten verwenden.
Installieren
Schnellstart - Bereiten Sie die Datenbank vor
Das erste, was Sie tun müssen, ist, die Datenbank vorzubereiten (den Codebaum zu erstellen), damit später die Abfragen darüber ausgeführt werden.
Sie können codeql erlauben, die Sprache des Repos automatisch zu identifizieren und die Datenbank zu erstellen
Dies wird normalerweise einen Fehler auslösen, der besagt, dass mehr als eine Sprache angegeben (oder automatisch erkannt) wurde. Überprüfen Sie die nächsten Optionen, um dies zu beheben!
Sie können dies manuell angeben, indem Sie das Repo und die Sprache angeben (Liste der Sprachen)
Wenn Ihr Repo mehr als 1 Sprache verwendet, können Sie auch 1 DB pro Sprache erstellen, die jede Sprache angibt.
Sie können auch
codeql
erlauben, alle Sprachen für Sie zu identifizieren und eine DB pro Sprache zu erstellen. Sie müssen ihm ein GITHUB_TOKEN geben.
Schnellstart - Analysiere den Code
Jetzt ist es endlich Zeit, den Code zu analysieren
Denke daran, dass, wenn du mehrere Sprachen verwendet hast, eine DB pro Sprache im angegebenen Pfad erstellt worden wäre.
Schnellstart - Skriptiert
Sie können die Ergebnisse in https://microsoft.github.io/sarif-web-component/ oder mit der VSCode-Erweiterung SARIF viewer visualisieren.
Sie können auch die VSCode-Erweiterung verwenden, um die Ergebnisse in VSCode zu erhalten. Sie müssen jedoch manuell eine Datenbank erstellen, aber dann können Sie beliebige Dateien auswählen und auf Rechtsklick
-> CodeQL: Abfragen in ausgewählten Dateien ausführen
klicken.
Es gibt eine installierbare kostenlose Version.
Schnellstart
Sie können auch die snyk VSCode Extension verwenden, um Ergebnisse innerhalb von VSCode zu erhalten.
Es ist Open Source, sieht aber nicht gewartet aus.
Unterstützte Sprachen
Java (Maven und Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C# und Javascript (Node.js).
Schnellstart
Kostenlos für öffentliche Repos.
NodeJS
yarn
pnpm
nodejsscan: Statischer Sicherheitscode-Scanner (SAST) für Node.js-Anwendungen, unterstützt von libsast und semgrep.
RetireJS: Das Ziel von Retire.js ist es, Ihnen zu helfen, die Verwendung von JS-Bibliotheksversionen mit bekannten Sicherheitsanfälligkeiten zu erkennen.
Electron
electronegativity: Es ist ein Tool zur Identifizierung von Fehlkonfigurationen und Sicherheits-Anti-Patterns in auf Electron basierenden Anwendungen.
Python
Bandit: Bandit ist ein Tool, das entwickelt wurde, um häufige Sicherheitsprobleme im Python-Code zu finden. Dazu verarbeitet Bandit jede Datei, erstellt einen AST daraus und führt geeignete Plugins gegen die AST-Knoten aus. Sobald Bandit das Scannen aller Dateien abgeschlossen hat, erstellt es einen Bericht.
safety: Safety überprüft Python-Abhängigkeiten auf bekannte Sicherheitsanfälligkeiten und schlägt die geeigneten Maßnahmen zur Behebung der festgestellten Schwachstellen vor. Safety kann auf Entwicklermaschinen, in CI/CD-Pipelines und auf Produktionssystemen ausgeführt werden.
Pyt: Nicht mehr gewartet.
.NET
RUST
Java
Aufgabe | Befehl |
---|---|
Jar ausführen | java -jar [jar] |
Jar entpacken | unzip -d [output directory] [jar] |
Jar erstellen | jar -cmf META-INF/MANIFEST.MF [output jar] * |
Base64 SHA256 | sha256sum [file] | cut -d' ' -f1 | xxd -r -p | base64 |
Signatur entfernen | rm META-INF/.SF META-INF/.RSA META-INF/*.DSA |
Aus Jar löschen | zip -d [jar] [file to remove] |
Klasse dekompilieren | procyon -o . [path to class] |
Jar dekompilieren | procyon -jar [jar] -o [output directory] |
Klasse kompilieren | javac [path to .java file] |
Gehe
PHP
Wordpress Plugins
https://www.pluginvulnerabilities.com/plugin-security-checker/
Solidity
JavaScript
Discovery
Burp:
Spider und entdecke Inhalte
Sitemap > Filter
Sitemap > Rechtsklick auf die Domain > Engagement-Tools > Skripte finden
waybackurls <domain> |grep -i "\.js" |sort -u
Static Analysis
Unminimize/Beautify/Prettify
Siehe einige der in 'Deobfuscate/Unpack' unten genannten Tools.
Deobfuscate/Unpack
Hinweis: Es ist möglicherweise nicht möglich, vollständig zu deobfuskieren.
Finde und benutze .map-Dateien:
Wenn die .map-Dateien exponiert sind, können sie verwendet werden, um leicht zu deobfuskieren.
Häufig mappt foo.js.map auf foo.js. Manuell danach suchen.
Verwende JS Miner, um danach zu suchen.
Stelle sicher, dass ein aktiver Scan durchgeführt wird.
Lies 'Tipps/Notizen'
Wenn gefunden, benutze Maximize, um zu deobfuskieren.
Ohne .map-Dateien, versuche JSnice:
Referenzen: http://jsnice.org/ & https://www.npmjs.com/package/jsnice
Tipps:
Wenn du jsnice.org verwendest, klicke auf die Optionsschaltfläche neben der Schaltfläche "Nicify JavaScript" und deaktiviere "Infer types", um das Code-Commenting zu reduzieren.
Stelle sicher, dass du keine leeren Zeilen vor dem Skript lässt, da dies den Deobfuskationsprozess beeinträchtigen und ungenaue Ergebnisse liefern kann.
Für einige modernere Alternativen zu JSNice könntest du dir Folgendes ansehen:
Javascript-Dekompilierer, Unpacker und Unminify-Toolkit
Wakaru ist der Javascript-Dekompilierer für modernes Frontend. Es stellt den ursprünglichen Code aus einer gebündelten und transpilierten Quelle wieder her.
Deobfuscate obfuscator.io, unminify und unpack gebündeltes Javascript
Un-minify Javascript-Code mit ChatGPT
Dieses Tool verwendet große Sprachmodelle (wie ChatGPT & llama2) und andere Tools, um Javascript-Code zu un-minifizieren. Beachte, dass LLMs keine strukturellen Änderungen vornehmen – sie geben nur Hinweise zur Umbenennung von Variablen und Funktionen. Die schwere Arbeit wird von Babel auf AST-Ebene erledigt, um sicherzustellen, dass der Code 1-1 äquivalent bleibt.
Verwendung von LLMs zur Rückgängigmachung der Minifizierung von JavaScript-Variablen
Verwende
console.log()
;
Finde den Rückgabewert am Ende und ändere ihn in
console.log(<packerReturnVariable>);
, damit das deobfuskierte js anstelle der Ausführung gedruckt wird.Füge dann das modifizierte (und immer noch obfuskierte) js in https://jsconsole.com/ ein, um das deobfuskierte js in der Konsole zu sehen.
Schließlich füge die deobfuskierte Ausgabe in https://prettier.io/playground/ ein, um sie für die Analyse zu verschönern.
Hinweis: Wenn du immer noch gepacktes (aber anderes) js siehst, könnte es rekursiv gepackt sein. Wiederhole den Prozess.
References
Tools
Less Used References
Last updated