
Regex-basierter Scanner zur Erkennung von hartcodierten Anmeldeinformationen in Codebasen, entwickelt für CI/CD-Integration mit Unterstützung für Unterdrückungskommentare und niedrigen Fehlalarmraten.
Dieses Skript soll eine große, vielfältige Codebasis nach fest codierten Anmeldedaten oder in Konfigurationsdateien vorhandenen Anmeldedaten durchsuchen. Diese stellen ein ernstes Sicherheitsproblem dar und sind äußerst schwer zu erkennen und zu verwalten.
Der spezifische Fokus dieses Skripts besteht darin, ein Tool zu schaffen, das direkt von Entwicklungsteams in einer CI/CD-Pipeline verwendet werden kann, um den Behebungsprozess für dieses Problem zu verwalten, indem das Team benachrichtigt wird, wenn Anmeldedaten im Code vorhanden sind, damit das Team Probleme sofort beheben kann, sobald sie auftreten.
Es ist möglich, das Tool als punktuellen Scanner für dieses Problem einzusetzen, aber – da Anmeldedaten im Laufe der Zeit wahrscheinlich wieder in die Codebasis gelangen – empfehlen wir dringend die Integration des Skripts in den CI/CD-Prozess, den automatischen Build-Mechanismus oder einen anderen regelmäßig geplanten automatischen Scanprozess, den das Team durchführt.
Das Skript wurde mit den folgenden Zielen entwickelt:
Das Skript versucht, eine gewisse Kompatibilität mit anderen gängigen SAST-Tools zu bieten.
Text am oder nahe dem Anfang einer Datei '# noqa file' unterdrückt die Meldung aller weiteren Probleme in dieser Datei, ebenso wie der Text 'flake8: noqa'.
Text in einer einzelnen Zeile mit '# noqa' unterdrückt die Meldung von Problemen in dieser Zeile.
Viele andere gängige Unterdrückungskommentare funktionieren ebenfalls; die aktuelle Liste lautet:
# noinspection
# noqa
#noqa
@SuppressWarnings
DevSkim
NOLINT
NOSONAR
checkmarx
coverity
fortify
noinspection
nosec
safesql
veracode
Wir empfehlen außerdem die Verwendung des Kommentars '# noqa cred', um Teammitgliedern klarzumachen, dass es sich speziell um das Vorhandensein eines Anmeldedatums handelt, das der Grund für den Fehlalarm ist.
Viele der hier referenzierten Tools (z. B. devskim) verwenden spezifische Fehlercodes, die sich auf die für die verwendete Sprache oder Plattform relevanten Tools beziehen und denselben Zweck erfüllen.
Es ist möglich, dass dieselbe Codezeile mehrere Fehler verschiedener Typen aufweist.
Wir warnen davor, dass es eine äußerst schlechte Praxis ist, eine Warnung eines SAST-Tools zu unterdrücken, die ein echter Positiv ist.
Es ist gute Praxis, die SAST/Lint-Unterdrückungskommentare in einer Codebasis regelmäßig zu überprüfen, um sicherzustellen, dass keine 'echten Positiven' unterdrückt wurden.
Die Befehlszeilenoption '-nosuppress' bewirkt, dass das Skript alle Unterdrückungskommentare ignoriert.