Graudit unterstützt mehrere Programmiersprachen und ermöglicht Ihnen die direkte Integration von Codebasis-Sicherheitstests in den Entwicklungsprozess.
Source:
Tests sind ein wichtiger Teil des Softwareentwicklungslebenszyklus. Es gibt viele Arten von Tests, von denen jede ihr eigenes Problem löst. Heute möchte ich über das Finden von Sicherheitsproblemen im Code sprechen.
Offensichtlich ist es in der modernen Realität der Softwareentwicklung wichtig, die Prozesssicherheit zu gewährleisten. Einst wurde sogar der Sonderbegriff DevSecOps eingeführt. Unter diesem Begriff versteht man eine Reihe von Verfahren, die darauf abzielen, Schwachstellen in einer Anwendung zu identifizieren und zu beseitigen. Für die standardkonforme Überprüfung von Schwachstellen gibt es spezialisierte Open-Source-Lösungen
Es gibt verschiedene Ansätze zur Lösung von Sicherheitsproblemen, wie z. B. Static Application Security Testing (SAST), Dynamic Application Security Testing (DAST), Interactive Application Security Testing (IAST), Software Composition Analysis und so weiter.
Statische Anwendungssicherheitstests identifizieren Fehler in bereits geschriebenem Code. Bei diesem Ansatz muss die Anwendung nicht ausgeführt werden, weshalb er als statische Analyse bezeichnet wird.
Ich werde mich auf die statische Codeanalyse konzentrieren und ein einfaches Open-Source-Tool verwenden, um alles in der Praxis zu demonstrieren.
Warum ich mich für ein Open-Source-Tool für die Sicherheitsanalyse von statischem Code entschieden habe
Dafür gibt es mehrere Gründe: Erstens ist es kostenlos, weil Sie ein Tool verwenden, das von einer Community aus Gleichgesinnten entwickelt wurde, die anderen Entwicklern helfen möchten. Wenn Sie ein kleines Team oder Startup haben, haben Sie eine großartige Gelegenheit, Geld zu sparen, indem Sie Open-Source-Software verwenden, um die Sicherheit Ihrer Codebasis zu testen. Zweitens müssen Sie kein separates DevSecOps-Team einstellen, was Ihre Kosten weiter senkt.
Gute Open-Source-Tools entstehen immer unter Berücksichtigung erhöhter Anforderungen an Flexibilität. Daher können sie in nahezu jeder Umgebung eingesetzt werden und decken ein breites Aufgabenspektrum ab. Für Entwickler ist es viel einfacher, solche Tools mit dem System zu verbinden, das sie während der Arbeit an ihren Projekten bereits erstellt haben.
Es kann jedoch vorkommen, dass 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 darauf basierend Ihr eigenes Tool mit der von Ihnen benötigten Funktionalität zu entwickeln.
Da die Entwicklung von Open-Source-Software in den meisten Fällen aktiv von der Community beeinflusst wird, fällt die Entscheidung für Änderungen recht schnell und auf den Punkt gebracht: Die Entwickler des Open-Source-Projekts verlassen sich auf Rückmeldungen und Anregungen der Nutzer, auf deren Berichte von gefundene Fehler und andere Probleme.
Verwendung von Graudit für die Code-Sicherheitsanalyse
Für die statische Code-Analyse können Sie verschiedene Open-Source-Tools nutzen, ein universelles Tool für alle Programmiersprachen gibt es nicht. Die Entwickler einiger von ihnen folgen den OWASP-Empfehlungen und versuchen, so viele Sprachen wie möglich abzudecken.
Hier werden wir verwenden
Es gibt ähnliche Tools für die statische Code-Analyse – Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), Failfinder und so weiter. Aber Graudit ist sehr flexibel und hat minimale technische Anforderungen. Möglicherweise haben Sie jedoch Probleme, die Graudit nicht lösen kann. Dann können Sie hier 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 allen unseren Projekten verwenden. Auch hier kommt die Flexibilität von Graudit ins Spiel. Klonen wir also zuerst das Repo:
$ git clone https://github.com/wireghoul/graudit
Erstellen wir nun einen symbolischen Link für Graudit, um ihn im Befehlsformat zu verwenden
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit
Fügen wir .bashrc (oder der von Ihnen verwendeten Konfigurationsdatei) einen Alias hinzu:
#------ .bashrc ------
alias graudit="~/bin/graudit"
Neustart:
$ source ~/.bashrc # OR
$ exex $SHELL
Überprüfen wir, ob die Installation erfolgreich war:
$ graudit -h
Wenn Sie etwas Ähnliches sehen, ist alles in Ordnung.
Ich werde eines meiner bestehenden Projekte testen. Bevor das Tool ausgeführt wird, muss ihm eine Datenbank übergeben werden, die der Sprache entspricht, in der mein Projekt geschrieben ist. Die Datenbanken befinden sich im Ordner ~/gradit/signatures:
$ graudit -d ~/gradit/signatures/js.db
Also habe ich zwei js-Dateien aus meinem Projekt getestet und Graudit hat der Konsole Informationen zu Schwachstellen in meinem Code angezeigt:
Sie können versuchen, Ihre Projekte auf die gleiche Weise zu testen. Sie können eine Liste von Datenbanken für verschiedene Programmiersprachen sehen
Vor- und Nachteile von Graudit
Graudit unterstützt viele Programmiersprachen. Daher ist es für einen breiten Anwenderkreis geeignet. Es kann mit allen kostenlosen oder kostenpflichtigen Analoga durchaus konkurrieren. Und es ist sehr wichtig, dass weiterhin Verbesserungen am Projekt vorgenommen werden und die Community nicht nur den Entwicklern hilft, sondern auch anderen Benutzern, die versuchen, das Tool zu verstehen.
Dies ist ein praktisches Tool, das jedoch bisher nicht immer genau bestimmen kann, wo das Problem mit einem verdächtigen Codeabschnitt liegt. Die Entwickler verbessern Graudit weiter.
Aber in jedem Fall ist es sinnvoll, beim Einsatz solcher Tools auf mögliche Sicherheitsprobleme im Code zu achten.
Start…
In diesem Artikel habe ich mir nur eine von vielen Möglichkeiten zum Auffinden von Schwachstellen angesehen – statische Anwendungssicherheitstests. Die Durchführung einer statischen Codeanalyse ist einfach, aber es ist erst der Anfang. Um mehr über die Sicherheit Ihrer Codebasis zu erfahren, müssen Sie andere Arten von Tests in Ihren Softwareentwicklungslebenszyklus integrieren.
Über die Rechte der Werbung
Source: habr.com