So verwenden Sie ein einfaches Dienstprogramm, um Schwachstellen im Programmcode zu finden

Graudit unterstützt mehrere Programmiersprachen und ermöglicht Ihnen die direkte Integration von Codebasis-Sicherheitstests in den Entwicklungsprozess.

So verwenden Sie ein einfaches Dienstprogramm, um Schwachstellen im Programmcode zu finden
Source: Unsplash (Markus Spiske)

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 OWASP, die die verschiedenen Arten und das Verhalten von Schwachstellen im Quellcode beschreiben.

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 Graudit, ein einfaches Befehlszeilenprogramm, mit dem wir Schwachstellen in unserer Codebasis finden können. Es unterstützt verschiedene Sprachen, deren Anzahl ist jedoch begrenzt. Graudit basiert auf dem Dienstprogramm grep, das einst unter der GNU-Lizenz veröffentlicht wurde.

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 in dieser Liste.

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.

So verwenden Sie ein einfaches Dienstprogramm, um Schwachstellen im Programmcode zu finden

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:

So verwenden Sie ein einfaches Dienstprogramm, um Schwachstellen im Programmcode zu finden

So verwenden Sie ein einfaches Dienstprogramm, um Schwachstellen im Programmcode zu finden

Sie können versuchen, Ihre Projekte auf die gleiche Weise zu testen. Sie können eine Liste von Datenbanken für verschiedene Programmiersprachen sehen hier.

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

Zuverlässiger VPS Und mit der richtigen Wahl des Tarifplans werden Sie weniger durch unangenehme Probleme von der Entwicklung abgelenkt – alles funktioniert störungsfrei und mit einer sehr hohen Betriebszeit!

So verwenden Sie ein einfaches Dienstprogramm, um Schwachstellen im Programmcode zu finden

Source: habr.com

Kommentar hinzufügen