Graudit unterstützt eine Vielzahl von Programmiersprachen und ermöglicht die Integration von Sicherheitstests der Codebasis direkt in den Entwicklungsprozess.

Quelle: (Markus Spiske)
Tests sind ein wesentlicher Bestandteil des Softwareentwicklungszyklus. Es gibt viele Arten von Tests, von denen jede ihre eigene Aufgabe erfüllt. Heute möchte ich über die Suche nach Sicherheitsproblemen im Code sprechen.
Offensichtlich ist es in der heutigen Softwareentwicklung wichtig, die Sicherheit der Prozesse zu gewährleisten. Zu einem bestimmten Zeitpunkt wurde sogar ein spezieller Begriff, DevSecOps, eingeführt. Dieser Begriff bezieht sich auf eine Reihe von Verfahren zur Identifizierung und Behebung von Sicherheitsanfälligkeiten in Anwendungen. Es gibt spezialisierte Open-Source-Lösungen zur Überprüfung von Sicherheitsanfälligkeiten gemäß den Standards , die verschiedene Typen und Verhaltensweisen von Sicherheitsanfälligkeiten im Quellcode beschreiben.
Es gibt verschiedene Ansätze zur Lösung von Sicherheitsproblemen, wie zum Beispiel statisches Anwendungssicherheitstesting (SAST), dynamisches Anwendungssicherheitstesting (DAST), interaktives Anwendungssicherheitstesting (IAST), Software-Kompositionsanalyse (Software Composition Analysis) und vieles mehr.
Statisches Anwendungssicherheitstesting identifiziert Fehler im bereits geschriebenen Code. Dieser Ansatz erfordert nicht, dass die Anwendung ausgeführt wird, weshalb er als statische Analyse bezeichnet wird.
Ich werde mich auf die statische Codeanalyse konzentrieren und ein einfaches Open-Source-Tool verwenden, um alles praktisch zu demonstrieren.
Warum habe ich ein Open-Source-Tool für die statische Sicherheitsanalyse des Codes gewählt?
Es gibt mehrere Gründe dafür: Erstens ist es kostenlos, da Sie ein von einer Gemeinschaft von Gleichgesinnten entwickeltes Werkzeug nutzen, die anderen Entwicklern helfen möchten. Wenn Sie ein kleines Team oder ein Start-up haben, haben Sie eine großartige Gelegenheit, Geld zu sparen, indem Sie Open-Source-Software zur Sicherheitsüberprüfung Ihrer Codebasis verwenden. Zweitens erspart es Ihnen die Notwendigkeit, ein separates DevSecOps-Team einzustellen, was Ihre Ausgaben weiter senkt.
Gute Open-Source-Tools werden immer mit einem hohen Maß an Flexibilität im Hinterkopf erstellt. Daher können sie in nahezu jeder Umgebung verwendet werden und decken ein breites Spektrum an Aufgaben ab. Entwicklern fällt es viel leichter, solche Tools mit dem System, das sie bereits aufgebaut haben, in Einklang zu bringen, während sie an ihren Projekten arbeiten.
Es kann jedoch Situationen geben, in denen Sie eine Funktion benötigen, die in dem von Ihnen gewählten Tool nicht verfügbar ist. In diesem Fall haben Sie die Möglichkeit, den Code zu forken und Ihr eigenes Tool mit der benötigten Funktionalität darauf zu entwickeln.
Da das Open-Source-Software-Entwicklung in den meisten Fällen stark von der Community beeinflusst wird, werden Entscheidungen über Änderungen schnell und zweckmäßig getroffen: Die Entwickler des Open-Source-Projekts stützen sich auf das Feedback und die Vorschläge der Nutzer sowie deren Meldungen über gefundene Fehler und andere Probleme.
Verwendung von Graudit zur Sicherheitsanalyse von Code
Für die statische Codeanalyse können verschiedene Open-Source-Tools eingesetzt werden; es gibt kein universelles Tool für alle Programmiersprachen. Einige Entwickler folgen den Empfehlungen von OWASP und versuchen, möglichst viele Sprachen abzudecken.
Hier werden wir verwenden , ein einfaches Kommandozeilenwerkzeug, das uns ermöglicht, Schwachstellen in unserem Codebestand zu finden. Es unterstützt verschiedene Sprachen, jedoch ist die Auswahl begrenzt. Graudit basiert auf dem Dienstprogramm grep, das ursprünglich unter der GNU-Lizenz veröffentlicht wurde.
Es gibt ähnliche Tools für die statische Codeanalyse – Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder und so weiter. Aber Graudit ist sehr flexibel und hat minimale technische Anforderungen. Dennoch könnten Aufgaben auftreten, die Graudit nicht bewältigen kann. Dann kann man in dieser Liste nach anderen Optionen suchen. .
Wir können dieses Tool in ein bestimmtes Projekt integrieren, es einem ausgewählten Benutzer zur Verfügung stellen oder es gleichzeitig in all unseren Projekten verwenden. Auch hier zeigt sich die Flexibilität von Graudit. Lassen Sie uns also zunächst das Repository klonen:
$ git clone https://github.com/wireghoul/grauditLassen Sie uns nun einen symbolischen Link für Graudit erstellen, um es im Befehlsformat zu verwenden.
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/grauditFügen Sie einen Alias in .bashrc (oder in eine andere Konfigurationsdatei, die Sie verwenden) hinzu:
#------ .bashrc ------
alias graudit="~/bin/graudit"Laden Sie neu:
$ source ~/.bashrc # ODER
$ exec $SHELL
Überprüfen Sie, ob die Installation erfolgreich war:
$ graudit -hWenn Sie etwas Ähnliches sehen, läuft alles gut.

Ich werde eines meiner bereits bestehenden Projekte testen. Vor dem Start des Tools muss ihm eine Datenbank übergeben werden, die zur Sprache meines Projekts passt. Die Datenbanken befinden sich im Ordner ~/gradit/signatures:
$ graudit -d ~/gradit/signatures/js.dbIch habe also zwei JS-Dateien aus meinem Projekt getestet, und Graudit hat Informationen über Schwachstellen in meinem Code in der Konsole ausgegeben:


Sie können Ihre Projekte auf die gleiche Weise testen. Eine Liste der Datenbanken für verschiedene Programmiersprachen finden Sie .
Vorteile und Nachteile von Graudit
Graudit unterstützt viele Programmiersprachen. Daher ist es für eine breite Nutzerbasis geeignet. Es kann erfolgreich mit allen kostenlosen oder kostenpflichtigen Alternativen konkurrieren. Besonders wichtig ist, dass das Projekt weiterhin entwickelt wird und die Community nicht nur den Entwicklern hilft, sondern auch anderen Nutzern, die versuchen, sich in das Tool einzuarbeiten.
Es ist ein praktisches Tool, aber bisher kann es nicht immer genau angeben, worin das Problem mit einem verdächtigen Codeabschnitt besteht. Die Entwickler arbeiten weiterhin an Verbesserungen für Graudit.
Egal wie, es ist wichtig, auf potenzielle Sicherheitsprobleme im Code zu achten, indem man solche Werkzeuge verwendet.
Der Anfang…
In diesem Artikel habe ich nur eine von vielen Methoden zur Auffindung von Schwachstellen behandelt – die statische Sicherheitstestung von Anwendungen. Eine statische Codeanalyse ist einfach durchzuführen, aber das ist nur der Anfang. Um mehr über die Sicherheit Ihres Codebestands zu erfahren, müssen Sie andere Testarten in den Lebenszyklus der Softwareentwicklung integrieren.
Im Auftrag der Werbung
und die richtige Tarifwahl sorgen dafür, dass Sie sich weniger mit unangenehmen Problemen beschäftigen müssen – alles läuft ohne Störungen und mit einer sehr hohen Verfügbarkeit!
Quelle: habr.com
