
Sicherlich haben Sie den Ausdruck "Baghunting" schon mehr als einmal gehört, und ich bin sicher, dass Sie sich nicht weigern würden, ein paar hundert (oder sogar Tausende) Dollar zu verdienen, wenn Sie eine potenzielle Sicherheitslücke in einem anderen Programm finden würden. In diesem Artikel werde ich über einen Trick sprechen, mit dessen Hilfe Open Source-Projekte auf solche Schwachstellen untersucht werden können.
Bug Bounties auf Free und Open Source Software - was ist das?
Bug Bounty ist ein generischer Name für verschiedene Programme, in denen Website- und Softwareentwickler Geld für das Auffinden von Fehlern und Schwachstellen anbieten. Neben den sehr bekannten Bug Bounty-Programmen großer Unternehmen wie Apple oder Microsoft gibt es auch Programme zum Auffinden von Schwachstellen in Open Source-Projekten.
Viele von ihnen sind auf HackerOne zu finden, aber das vielleicht größte ist FOSSA - Free and Open Source Software Audit. Dies ist ein von der Europäischen Union gesponsertes Programm zur Schwachstellenforschung für verschiedene Open Source-Projekte. Der Gesamtpreispool ist beeindruckend - bis zu 850.000 Euro!
Wie kann ich teilnehmen?
Zuerst müssen Sie sich bei
HackerOne registrieren. Wir werden genau die Projekte brauchen, die Open Source sind. HackerOne hat
eine ganze Liste .
Wenn Sie von der Europäischen Union an der Bug Bounty teilnehmen möchten, finden Sie
hier eine Liste der Projekte, die an diesem Programm teilnehmen. Für die meisten Projekte reicht es aus, bei HackerOne registriert zu sein, aber viele der in dieser Liste aufgeführten Programme befinden sich auf intigriti.com.
Um teilnehmen zu können, müssen Sie ein für Sie geeignetes Projekt auswählen und dann die Teilnahmebedingungen sorgfältig lesen. Wenn sie dich zufrieden stellen, ist es Zeit zu üben.
Um die Sicherheitsanfälligkeit zu finden und Ihr Geld zu erhalten, müssen Sie nur das Projekt herunterladen (oder von GitHub klonen) und jede Codezeile sorgfältig analysieren und jeden Ausdruck auf mögliche Fehler untersuchen. Wenn Sie etwas finden, das die Sicherheit des Programms beeinträchtigen könnte, schreiben Sie es in einen Bericht und senden Sie es an die Entwickler. Wenn sie Ihren Fund als die Aktion wert bewerten - Ihr Geld ist in Ihrer Tasche :).
Warten Sie, wo ist die Leichtigkeit?
Und die Leichtigkeit ist, dass es nicht notwendig ist, den Code ausschließlich manuell zu analysieren. Es gibt Tools, um im automatischen Modus nach Fehlern im Code zu suchen. Zum Beispiel statische Code-Analysatoren. Ich bevorzuge unsere Entwicklung -
PVS-Studio . Der PVS-Studio-Analysator kann Fehler in in C ++, C # und Java geschriebenem Code finden und verfügt außerdem über eine praktische Oberfläche. Darüber hinaus gibt es
mehrere Optionen für die kostenlose Nutzung. Es gibt auch viele
andere Codeanalysatoren .
Natürlich können statische Analysatoren weit entfernt von allen Fehlern erkennen. Ja, und Gott segne sie! Schließlich ist es unser Ziel, Fehler schnell und einfach zu finden und nicht alle.
Nachdem das Projekt heruntergeladen und zusammengestellt wurde, reicht es aus, nur ein paar Klicks zu machen, um die Analyse zu starten. Das Ergebnis ist ein Bericht mit einigen (normalerweise beträchtlichen) Warnungen, die vom Analysegerät generiert werden. In PVS-Studio werden sie in drei Vertrauensstufen eingeteilt. Sie sollten mit den Warnungen der ersten Ebene beginnen, damit die orangefarbenen und gelben Ebenen aus dem Analyseergebnis herausgefiltert werden können.
Ein Beispiel für das Filtern von Analyseergebnissen.
Es bleibt also nur, die verbleibenden Warnungen zu überprüfen und aus ihnen diejenigen Orte auszuwählen, die die größte Gefahr darstellen können. Es muss geprüft werden, ob es möglich ist, eines davon direkt während des Programmbetriebs zu reproduzieren. Wenn Ihnen dies gelingt, erhöht dies nicht nur die Wahrscheinlichkeit, dass die Entwickler den Bericht akzeptieren, sondern auch den Zahlungsbetrag. In dieser Angelegenheit ist Sichtbarkeit Ihr bester Freund.
Es ist auch zu überlegen, ob der gefundene Fehler die Sicherheit des Programms beeinträchtigt. In diesem Fall ist der an Sie gezahlte Betrag sogar um ein Vielfaches höher :)
Der Screenshot zeigt die Visual Studio-Oberfläche. Lassen Sie sich davon jedoch nicht täuschen. Der Analysator kann nicht nur als Plug-In für Visual Studio verwendet werden, sondern auch unabhängig voneinander, auch unter
Linux und MacOS .
Vorteile dieses Ansatzes
Erstens ist die Verwendung eines statischen Analysators eine der einfachsten Möglichkeiten, Fehler zu finden. Um Codeanalysatoren verwenden zu können, sind keine besonderen Kenntnisse erforderlich: Sie müssen lediglich die Sprache verstehen, in der der getestete Code geschrieben ist.
Zweitens sind die Analysatoren vorsichtig. Sie werden nicht müde und verlieren im Gegensatz zu einer Person nicht die Wachsamkeit. Daher können Sie mit ihnen beliebig große Codebasen mit nahezu minimalen Kosten analysieren.
Drittens haben Analysatoren oft mehr Wissen als eine Person. Was bedeutet das? Lassen Sie mich meine Idee am Beispiel des Codes aus dem Android-Kernel erläutern:
static void FwdLockGlue_InitializeRoundKeys() { unsigned char keyEncryptionKey[KEY_SIZE]; .... memset(keyEncryptionKey, 0, KEY_SIZE);
Es scheint, wo es einen Fehler geben könnte?
Es stellt sich heraus, dass der Compiler, da das Array
keyEncryptionKey nirgendwo anders verwendet wird, den Code optimieren und den Funktionsaufruf
memset daraus entfernen kann. Und er wird dies nur während der Montage in der Release-Konfiguration tun. Alles wäre in Ordnung, aber nur der Verschlüsselungsschlüssel bleibt für einige Zeit im RAM entsperrt, sodass er von einem Angreifer abgerufen werden kann. Eine echte Sicherheitslücke!
Und schließlich ist es fast unmöglich, diesen Fehler selbst zu finden: Im Debug-Modus funktioniert der
Memset- Aufruf
einwandfrei . Und Sie werden keine Tests dafür schreiben ... Es bleibt nur, über diese Funktion Bescheid zu wissen und sich selbst daran zu erinnern.
Was aber, wenn die Entwickler des Projekts diese Funktion nicht kennen? Was ist, wenn Sie bei der Suche nach Fehlern nichts über diese Funktion wissen? Dies ist für den Analysator nicht wichtig, da er über die
V597- Diagnose verfügt.
Wenn Sie also einen Bericht
anzeigen , wissen Sie definitiv Bescheid.
Schließlich viertens. Einer der nützlichsten Vorteile der Verwendung statischer Analysen bei der Jagd nach einem Bug Bounty ist die Geschwindigkeit. Ja, damit können Sie abends zwei, drei, vier Projekte überprüfen - aber das ist noch nicht alles.
Am wichtigsten ist, dass Sie der Erste sein können. Während eine Belohnung für das Auffinden von Fehlern in einem Projekt angeboten wird, wird das Projekt weiterhin abgeschlossen und weiterentwickelt. Entwickler führen neue Releases und neue Funktionen ein, und mit ihnen kommen neuer Code und neue Freiräume für Fehler. Mit dem von mir beschriebenen Ansatz können neue Fehler und potenzielle Schwachstellen bereits am ersten Tag ihrer Veröffentlichung genau untersucht werden.
Mögliche Schwachstellen
Der aufmerksame Leser kann verwirrt sein:
Hör auf, hör auf! Einerseits bezieht es sich auf eine Suche im Code nach Fehlern in Programmen, andererseits werden potenzielle Schwachstellen erwähnt. Darüber hinaus sind Schwachstellen aus Sicht von Bug Bounty interessanter. Bitte klären!Tatsache ist, dass Fehler und potenzielle Schwachstellen im Wesentlichen dasselbe sind. Natürlich können sich nur wenige Fehler / potenzielle Schwachstellen in der weiteren Forschung als echte Schwachstellen herausstellen. Ein harmloser Fehler und eine schwerwiegende Sicherheitsanfälligkeit können jedoch im Code genau gleich aussehen. Der Artikel „
Wie kann PVS-Studio bei der Suche nach Schwachstellen helfen? “ Präsentiert mehrere solcher (auf den ersten Blick gewöhnlichen) Fehler, die jetzt als Schwachstellen bekannt sind.
Übrigens sind laut dem Bericht des Nationalen Instituts für Standards und Technologie (NIST) etwa 64% der Schwachstellen in Anwendungen mit Softwarefehlern und nicht mit Sicherheitsmängeln (kein Mangel an Sicherheitsfunktionen) verbunden.
Nehmen Sie PVS-Studio also sicher und suchen Sie nach Fehlern und Sicherheitsmängeln! Übrigens hilft Ihnen die Klassifizierung von Warnungen nach
CWE dabei.
Fazit
Ich hoffe, ich habe dem Leser geholfen, genau den Fehler zu finden, der ihm ein wenig Anerkennung und finanzielle Belohnung bringen würde. Ich bin sicher, dass die statische Analyse ihnen dabei helfen wird! Denken Sie daran, dass Entwickler in der Regel keine Zeit für eine detaillierte Analyse der gefundenen Fehler haben. Sie müssen also noch nachweisen, dass Ihr Fund das Programm wirklich beeinflussen kann. Der beste Weg wäre, es zu visualisieren. Und denken Sie daran: Je stärker der Fehler im Code die Sicherheit verletzen kann, desto mehr werden sie dafür bezahlen.
Das ist wahrscheinlich alles. Viel Glück beim Finden Ihrer Belohnung!

Wenn Sie diesen Artikel einem englischsprachigen Publikum zugänglich machen möchten, verwenden Sie bitte den Link zur Übersetzung: George Gribkov.
Eine einfache Möglichkeit, mit Bug Bounty Geld zu verdienen .