Graudit unterstützt zahlreiche Programmiersprachen und ermöglicht die Integration von Sicherheitstests in den Entwicklungsprozess.

Quelle: (Markus Spiske)
Tests sind ein wichtiger Teil des Lebenszyklus der Softwareentwicklung. Es gibt viele verschiedene Testarten, die jeweils ihre eigenen Aufgaben lösen. Heute möchte ich über die Suche nach Sicherheitsproblemen im Code sprechen.
Es ist offensichtlich, dass es in der heutigen Softwareentwicklung wichtig ist, die Sicherheit der Prozesse zu gewährleisten. Zu einem bestimmten Zeitpunkt wurde sogar der spezielle Begriff DevSecOps eingeführt. Unter diesem Begriff versteht man eine Reihe von Verfahren, die darauf abzielen, Sicherheitsanfälligkeiten in Anwendungen zu identifizieren und zu beseitigen. Es gibt spezialisierte Open-Source-Lösungen zur Sicherheitsüberprüfung, die den Standards entsprechen , die verschiedene Typen und Verhaltensweisen von Sicherheitsanfälligkeiten im Quellcode beschreiben.
Es gibt verschiedene Ansätze zur Lösung von Sicherheitsproblemen, wie z.B. statisches Sicherheitstests (SAST), dynamisches Sicherheitstests (DAST), interaktives Sicherheitstests (IAST), Software-Zusammensetzungsanalyse und so weiter.
Statische Sicherheitstests identifizieren Fehler im bereits geschriebenen Code. Dieser Ansatz erfordert kein Ausführen der Anwendung, weshalb er als statische Analyse bezeichnet wird.
Ich werde mich auf die statische Code-Analyse konzentrieren und ein einfaches Open-Source-Tool verwenden, um alles praktisch zu demonstrieren.
Warum ich ein Open-Source-Tool für die statische Sicherheitsanalyse von Code gewählt habe
Es gibt mehrere Gründe: Erstens, es ist kostenlos, da Sie ein von einer Gemeinschaft von Gleichgesinnten entwickeltes Tool verwenden, das anderen Entwicklern helfen möchte. Wenn Sie ein kleines Team oder ein Startup haben, haben Sie eine hervorragende Möglichkeit, Kosten zu sparen, indem Sie Open-Source-Software zur Sicherheitsprüfung Ihrer Codebasis nutzen. Zweitens, es erspart Ihnen die Notwendigkeit, ein separates DevSecOps-Team einzustellen, was Ihre Kosten weiter senkt.
Gute Open-Source-Tools werden stets mit erhöhten Anforderungen an die Flexibilität entwickelt. Deshalb können sie praktisch in jeder Umgebung eingesetzt werden und decken ein breites Spektrum an Aufgaben ab. Entwicklern fällt es viel leichter, solche Tools mit dem System zu integrieren, das sie bereits aufgebaut haben, während sie an ihren Projekten arbeiten.
Es kann aber Situationen geben, in denen Sie eine Funktion benötigen, die in dem von Ihnen gewählten Tool nicht vorhanden ist. In diesem Fall haben Sie die Möglichkeit, den Code zu forken und auf dessen Basis Ihr eigenes Tool mit der benötigten Funktionalität zu entwickeln.
Da in den meisten Fällen die Entwicklung von Software mit offenem Quellcode aktiv von der Community beeinflusst wird, werden Entscheidungen über Änderungen relativ schnell und sachgerecht getroffen: Die Entwickler des Open-Source-Projekts stützen sich auf das Feedback und die Vorschläge der Benutzer 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 verwendet werden; es gibt kein universelles Tool für alle Programmiersprachen. Einige Entwickler orientieren sich an den Empfehlungen von OWASP und versuchen, so viele Sprachen wie möglich abzudecken.
Hier werden wir , ein einfaches Kommandozeilen-Tool, verwenden, das uns hilft, Schwachstellen in unserem Code 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 zur statischen Codeanalyse – Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder usw. Aber Graudit ist sehr flexibel und hat minimale technische Anforderungen. Dennoch kann es Aufgaben geben, die Graudit nicht bewältigen kann. Dann können Sie nach anderen Optionen suchen, wie zum Beispiel .
Wir können dieses Tool in ein bestimmtes Projekt integrieren, es einem gewählten Benutzer zur Verfügung stellen oder es gleichzeitig in all unseren Projekten verwenden. Auch hierin zeigt sich die Flexibilität von Graudit. Lassen Sie uns zunächst das Repository klonen:
$ git clone https://github.com/wireghoul/grauditLass uns jetzt einen symbolischen Link für Graudit erstellen, um ihn im Befehlsformat zu verwenden
$ cd ~/bin && mkdir graudit
$ ln --symbolisch ~/graudit/graudit ~/bin/grauditFügen wir einen Alias in die .bashrc (oder in eine andere Konfigurationsdatei, die du verwendest) hinzu:
#------ .bashrc ------
alias graudit="~/bin/graudit"Lass uns neu starten:
$ source ~/.bashrc # ODER
$ exec $SHELL
Lass uns überprüfen, ob die Installation erfolgreich war:
$ graudit -hWenn du etwas Ähnliches siehst, ist alles in Ordnung.

Ich werde eines meiner bereits bestehenden Projekte testen. Bevor ich das Tool starte, muss ich ihm die Datenbank übergeben, die der Sprache entspricht, in der mein Projekt geschrieben ist. 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 die Konsole ausgegeben:


Du kannst deine Projekte auf die gleiche Weise testen. Eine Liste der Datenbanken für verschiedene Programmiersprachen findest du hier .
Vor- und Nachteile von Graudit
Graudit unterstützt viele Programmiersprachen. Daher eignet es sich für eine breite Nutzerschaft. Es kann mit kostenlosen oder kostenpflichtigen Alternativen gut konkurrieren. Und es ist sehr wichtig, dass das Projekt weiterhin verbessert wird, und die Community hilft nicht nur den Entwicklern, sondern auch anderen Benutzern, die versuchen, das Tool zu verstehen.
Es ist ein praktisches Tool, aber derzeit kann es nicht immer genau angeben, wo das Problem mit dem verdächtigen Code liegt. Die Entwickler arbeiten weiterhin an der Verbesserung von Graudit.
Aber es ist in jedem Fall nützlich, auf potenzielle Sicherheitsprobleme im Code zu achten, indem man solche Tools verwendet.
Der Anfang…
In diesem Artikel habe ich nur eine der vielen Methoden zur Suche nach Schwachstellen behandelt – die statische Sicherheitstestung von Anwendungen. Eine statische Code-Analyse durchzuführen ist einfach, aber das ist erst der Anfang. Um mehr über die Sicherheit deiner Codebasis zu erfahren, musst du andere Arten von Tests in den Lebenszyklus der Softwareentwicklung integrieren.
Als Werbung
und die richtige Wahl des Tarifs wird helfen, Ablenkungen durch unangenehme Probleme zu minimieren – alles wird ohne Unterbrechungen funktionieren und mit einer sehr hohen Verfügbarkeit!
Quelle: habr.com
