
Static Token And Credential Scanner
Statischer Token- und Anmeldeinformationsscanner
STACS ist ein YARA-gestützter statischer Anmeldeinformationsscanner, der binäre Dateiformate, die Analyse von verschachtelten Archiven, zusammenstellbare Regelsätze und Ignorierlisten sowie SARIF-Berichterstattung unterstützt.
Derzeit unterstützt STACS das rekursive Entpacken von:
Da STACS auf erkannten Dateitypen arbeitet, werden proprietäre Dateiformate, die auf diesen Formaten basieren, sowie andere Dateitypen, die diese Formate verwenden, automatisch unterstützt. Dies umfasst Docker-Images, Android-APKs, Java-JAR-Dateien, RPMs, Debian-Pakete (.deb), macOS-Pakete (.pkg) und mehr!
STACS wurde für die Verwendung durch Teams entwickelt, die binäre Artefakte veröffentlichen. STACS bietet Entwicklern die Möglichkeit, automatisch auf das versehentliche Einfügen von statischen Anmeldeinformationen und Schlüsselmaterial in ihren Veröffentlichungen zu prüfen.
Das bedeutet jedoch nicht, dass STACS nicht auch bei SaaS-Anwendungen, Unternehmenssoftware oder sogar Quellcode helfen kann.
Beispielsweise kann STACS verwendet werden, um statische Anmeldeinformationen in Docker-Images zu finden, die in öffentliche und private Container-Registries hochgeladen wurden. Es kann auch verwendet werden, um Anmeldeinformationen zu finden, die versehentlich in ausführbare Dateien, Pakete für mobile Geräte und „Enterprise Archives“ – wie sie von Java-Anwendungsservern verwendet werden – kompiliert wurden.
STACS erkennt statische Anmeldeinformationen mithilfe von „Regelpaketen“, die STACS beim Ausführen bereitgestellt werden. Diese Regelpakete definieren einen Satz von YARA-Regeln, die gegen die an STACS übergebenen Dateien ausgeführt werden. Wenn eine Übereinstimmung mit einer Regel gefunden wird, wird ein „Fund“ generiert. Diese Funde stellen potenzielle Anmeldeinformationen in einer Datei dar und werden gemeldet, damit ein Entwickler sie beheben oder „ignorieren“ kann.
Wenn sich der Fund als falsch-positiv herausstellt – d. h. eine Übereinstimmung mit etwas anderem als einer echten Anmeldeinformation – kann der Entwickler einen Satz von „Ignorierlisten“ erstellen, um sicherzustellen, dass diese Übereinstimmungen in zukünftigen Berichten nicht mehr erscheinen.
Die wahre Stärke von STACS liegt in der automatischen Erkennung und Entpackung von verschachtelten Archiven sowie in den zusammenstellbaren Ignorierlisten und Regelpaketen.
Um eine flexible und gemeinschaftliche Nutzung zu ermöglichen, unterstützt STACS zusammenstellbare Ignorierlisten. Dies ermöglicht es, dass eine Ignorierliste andere Ignorierlisten enthalten kann, was die Zusammenstellung eines „Baums von Ignorierungen“ basierend auf organisatorischen Richtlinien ermöglicht. Diese Ignorierlisten sind besonders nützlich in Organisationen, in denen viele der gleichen Frameworks oder Produkte verwendet werden. Wenn ein Team einen Fund bereits als falsch-positiv markiert hat, profitieren andere Teams davon, dass sie denselben Fund nicht triagieren müssen.
Analog zu den Ignorierlisten sind auch Regelpakete zusammenstellbar. Dies ermöglicht es einer Organisation, einen Basisregelsatz für alle Teams zu definieren, während Teams gleichzeitig die Möglichkeit haben, für ihre Produkte spezifische Regelsätze zu pflegen.
Der einfachste Weg, STACS zu verwenden, ist die Verwendung der Docker-Images, die auf Docker Hub veröffentlicht sind. STACS kann jedoch auch direkt von Pythons PyPI installiert oder durch Klonen dieses Repositorys bezogen werden. Siehe die entsprechenden Abschnitte unten, um loszulegen!
Ein cloudbasierter Dienst, der eine direkte Integration in Build- und Release-Pipelines ermöglicht, um statische Anmeldeinformationen vor der Veröffentlichung zu erkennen, ist bald verfügbar!
Mit den veröffentlichten Images kann STACS sofort zum Scannen von Artefakten verwendet werden! Die STACS-Docker-Images bieten eine Reihe von Volume-Mounts, um Dateien, die gescannt werden sollen, direkt in den Scan-Container einzuhängen.
Um beispielsweise alles im aktuellen Ordner zu scannen, kann der folgende Befehl ausgeführt werden (Docker muss installiert sein).
docker run \
--rm \
-v "$(pwd):/mnt/stacs/input:ro" \
stacscan/stacs:latest
Wenn Sie eine „hübsche“ lesbare Ausgabe wünschen, sollte der folgende Befehl verwendet werden:
docker run \
--rm \
-e STACS_OUTPUT_PRETTY=1 \
-v "$(pwd):/mnt/stacs/input:ro" \
stacscan/stacs:latest
Standardmäßig gibt STACS alle Funde im SARIF-Format direkt an STDOUT aus, und um die Ordnung zu wahren, werden alle Protokollmeldungen an STDERR gesendet. Für fortgeschrittenere Anwendungsfälle werden eine Reihe weiterer Volume-Mounts bereitgestellt. Diese ermöglichen dem Benutzer die Steuerung der zu verwendenden Regelpakete, Ignorierlisten und Cache-Verzeichnisse.
STACS kann auch direkt von Pythons PyPI installiert werden. Dies stellt einen stacs-Befehl bereit, der dann von Entwicklern verwendet werden kann, um Projekte direkt in ihren lokalen Entwicklungsumgebungen zu scannen.
STACS kann direkt von PyPI installiert werden mit:
pip install stacs
Bitte beachten Sie: Die PyPI-Version von STACS enthält keine Regeln. Diese müssen ebenfalls aus dem Community-Regel-Repository geklont werden, damit STACS funktioniert!
Noch nicht. Es gibt jedoch Pläne für eine gehostete Version von STACS, die sich leicht in vorhandene Build-Systeme integrieren lässt und zusätzliche vorgefertigte Regelpakete und Ignorierlisten enthält.
Leider sind falsch-positive Ergebnisse eine unvermeidliche Nebenwirkung bei der Erkennung statischer Anmeldeinformationen. Wenn Regeln zu granular sind, wird die Regelwartung zur Last und STACS kann Anmeldeinformationen übersehen. Wenn Regeln zu grob sind, kann STACS zu viele falsch-positive Ergebnisse generieren!
Um zu helfen, bietet STACS eine Reihe von Werkzeugen, um die Anzahl der falsch-positiven Ergebnisse zu reduzieren, die in die endgültigen Berichte gelangen.
In erster Linie bietet STACS einen Mechanismus, der es Benutzern ermöglicht, zusammenstellbare Ignorierlisten zu definieren, mit denen ein Satz von Funden „ignoriert“ werden kann. Diese Regeln können so grob sein wie das Ignorieren aller Dateien basierend auf einem Muster oder so granular wie ein bestimmter Fund in einer bestimmten Zeile einer Datei.
Diese Informationen werden automatisch in die Berichte übernommen, sodass „ignorierte“ Funde im SARIF-Output als „unterdrückt“ markiert werden, während auch der Grund für die Ignorierung im Output zur Nachverfolgung enthalten ist.
Bei Verwendung der „hübschen“ Ausgabe (--pretty / STACS_OUTPUT_PRETTY) werden die Ergebnisse in einem menschenlesbaren Format auf der Konsole ausgegeben.

Bei Verwendung von SARIF gibt es eine Reihe von Viewern, die diese Daten lesbarer machen, wie z. B. dieser großartige webbasierte Viewer von Microsoft. Ein Beispiel für die Funde aus einem Docker-Container-Image ist unten enthalten:

Leider scheint dies auf eine Einschränkung von Docker Desktop für Mac zurückzuführen zu sein. Die I/O für Bind-Mounts ist wirklich, wirklich langsam.