Quelle: Unsplash (Markus Spiske) Das
Testen ist ein wichtiger Teil des Lebenszyklus der Softwareentwicklung. Es gibt viele Arten von Tests, von denen jede ihr eigenes Problem löst. Heute möchte ich über das Auffinden von Sicherheitsproblemen im Code sprechen.
In der modernen Realität der Softwareentwicklung ist es natürlich wichtig, die Prozesssicherheit zu gewährleisten. Zu einer Zeit wurde sogar der Sonderbegriff DevSecOps eingeführt. Dieser Begriff bezieht sich auf eine Reihe von Verfahren, mit denen Schwachstellen in einer Anwendung identifiziert und beseitigt werden sollen. Es gibt spezielle Open Source-Lösungen zur Überprüfung von Schwachstellen gemäß den OWASP- Standards , die die verschiedenen Arten und das Verhalten von Schwachstellen im Quellcode beschreiben.
Es gibt verschiedene Ansätze zur Lösung von Sicherheitsproblemen, z. B. statische Anwendungssicherheitstests (SAST), dynamische Anwendungssicherheitstests (DAST), interaktive Anwendungssicherheitstests (IAST), Softwarekomponentenanalysen (Software Composition Analysis) usw.
Statische Anwendungssicherheitstests erkennen Fehler in bereits geschriebenem Code. Für diesen Ansatz muss die Anwendung nicht ausgeführt werden, weshalb sie als statische Analyse bezeichnet wird.
Ich werde mich auf die statische Code-Analyse konzentrieren und ein einfaches Open-Source-Tool verwenden, um alles in der Praxis zu demonstrieren.
Warum ich mich für ein Open Source-Tool zur Analyse des statischen Codes entschieden habe
Dafür gibt es eine Reihe von Gründen: Erstens ist es kostenlos, da Sie ein Tool verwenden, das von einer Community von Gleichgesinnten entwickelt wurde, die anderen Entwicklern helfen möchten. Wenn Sie ein kleines Team oder Startup haben, haben Sie eine großartige Möglichkeit, Geld zu sparen, indem Sie Open Source-Software verwenden, um die Sicherheit Ihrer Codebasis zu testen. Zweitens ersparen Sie sich den Aufwand, ein separates DevSecOps-Team einzustellen, und senken so Ihre Kosten weiter.
Gute Open Source-Tools werden immer mit Blick auf mehr Flexibilität entwickelt. Daher können sie in nahezu jeder Umgebung eingesetzt werden und decken eine Vielzahl von Aufgaben ab. Für Entwickler ist es viel einfacher, solche Tools mit dem System anzufreunden, das sie bereits während der Arbeit an ihren Projekten erstellt haben.
Es kann jedoch Situationen geben, in denen Sie eine Funktion benötigen, die in dem von Ihnen ausgewählten Tool nicht verfügbar ist. In diesem Fall haben Sie die Möglichkeit, den Code zu teilen und auf der Grundlage Ihres eigenen Tools die von Ihnen benötigten Funktionen zu entwickeln.
Da die Entwicklung von Open Source-Software in den meisten Fällen aktiv von der Community beeinflusst wird, wird die Entscheidung, Änderungen vorzunehmen, recht schnell und auf den Punkt gebracht: Die Entwickler des Open Source-Projekts verlassen sich auf Feedback und Vorschläge der Benutzer, auf ihre Berichte über Fehler und andere Probleme.
Verwenden von Graudit zum Analysieren der Codesicherheit
Für die statische Code-Analyse können verschiedene Open-Source-Tools verwendet werden. Es gibt kein universelles Tool für alle Programmiersprachen. Einige von ihnen folgen den OWASP-Richtlinien und versuchen, so viele Sprachen wie möglich abzudecken.
Hier verwenden wir Graudit , ein einfaches Befehlszeilenprogramm, mit dem wir Schwachstellen in unserer Codebasis finden können. Es unterstützt verschiedene Sprachen, aber ihre Menge ist immer noch begrenzt. Graudit wurde auf Basis des Dienstprogramms grep entwickelt, das unter der GNU-Lizenz veröffentlicht wurde.
Es gibt ähnliche Tools für die statische Code-Analyse - Rough Auditing Tool für Sicherheit (RATS), Securitycompass Web Application Analysis Tool (SWAAT), Fehlerfinder usw. Graudit ist jedoch sehr flexibel und hat nur minimale technische Anforderungen. Möglicherweise haben Sie jedoch Probleme, die Graudit nicht lösen kann. Dann können Sie hier 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 allen unseren Projekten verwenden. Hier ist Graudit auch flexibel. Klonen wir also zuerst das Repo:
$ git clone https://github.com/wireghoul/graudit
Erstellen wir nun einen Symlink für Graudit, um ihn im Befehlsformat zu verwenden
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit
Fügen Sie .bashrc (oder eine andere von Ihnen verwendete 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. Vor dem Ausführen des Tools muss die 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 Informationen zu Schwachstellen in meinem Code an die Konsole gedruckt:
Sie können versuchen, Ihre Projekte auf die gleiche Weise zu testen. Die Liste der Datenbanken für verschiedene Programmiersprachen finden Sie hier .
Vor- und Nachteile von Graudit
Graudit unterstützt viele Programmiersprachen. Daher ist es für eine Vielzahl von Anwendern geeignet. Es kann mit allen freien oder bezahlten Gegenstücken konkurrieren. Und es ist sehr wichtig, dass das Projekt noch verbessert wird, und die Community hilft nicht nur den Entwicklern, sondern auch anderen Benutzern, die versuchen, das Tool herauszufinden.
Dies ist ein praktisches Tool, das jedoch bisher nicht immer genau angeben kann, um welches Problem es sich bei einem verdächtigen Code handelt. Die Entwickler verfeinern Graudit weiter.
In jedem Fall ist es jedoch hilfreich, mit solchen Tools auf potenzielle Sicherheitsprobleme in Ihrem Code zu achten.
Start...
In diesem Artikel habe ich nur eine von vielen Möglichkeiten zum Auffinden von Sicherheitslücken in Betracht gezogen - statische Sicherheitstests für Anwendungen. Die statische Code-Analyse ist einfach, aber dies ist nur der Anfang. Um mehr über die Sicherheit Ihrer Codebasis zu erfahren, müssen Sie andere Testarten in den Lebenszyklus der Softwareentwicklung integrieren.
Werbung
Ein zuverlässiger VPS und die richtige Wahl eines Tarifplans ermöglichen es Ihnen, durch unangenehme Probleme weniger von der Entwicklung abgelenkt zu werden - alles funktioniert reibungslos und mit einer sehr hohen Betriebszeit!
