
Sicher haben Sie den Ausdruck "Insektenjagd" schon oft gehört. Ich wage anzunehmen, dass es Ihnen nichts ausmacht, ein oder zweihundert (oder sogar tausend) Dollar zu verdienen, wenn Sie eine potenzielle Sicherheitslücke in einem Programm finden. In diesem Artikel werde ich Ihnen einen Trick erläutern, mit dem Sie Open Source-Projekte analysieren können, um solche Schwachstellen zu finden.
Bug Bounties auf Free und Open Source Software - was ist das?
Bug Bounty ist ein gebräuchlicher Name für verschiedene Programme, bei denen Website- und Softwareentwickler Geld für das Auffinden von Fehlern und Schwachstellen anbieten. Neben bekannten Bug Bounty-Programmen von so großen Unternehmen wie Apple oder Microsoft gibt es auch Programme zur Suche nach 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. Es ist ein Programm zur Suche nach Schwachstellen in verschiedenen Open-Source-Projekten, das von der Europäischen Union gesponsert wird. Der Gesamtpreisfonds ist eine beeindruckende Summe - bis zu 850.000 Euro!
Wie kann ich teilnehmen?
Zunächst müssen Sie sich bei
HackerOne registrieren. Wir brauchen nur Open Source-Projekte. Es gibt eine
ganze Liste auf HackerOne.
Wenn Sie an Bug Bounty aus der Europäischen Union teilnehmen möchten, finden Sie
hier die Liste der Projekte, die an diesem Programm teilnehmen. Für die meisten Projekte reicht es aus, bei HackerOne registriert zu sein, aber viele der aufgelisteten Programme befinden sich auch auf der Website intigriti.com.
Um teilnehmen zu können, müssen Sie ein geeignetes Projekt für sich selbst auswählen und dann die Teilnahmebedingungen sorgfältig lesen. Wenn Sie mit ihnen einverstanden sind, gehen Sie zu einem praktischen Teil.
Um eine Sicherheitsanfälligkeit zu finden und Ihr Geld zu erhalten, müssen Sie nur ein 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 Programmsicherheit beeinträchtigen kann, erstellen Sie einen Bericht und senden Sie ihn an die Entwickler. Wenn sie Ihre Entdeckung als belohnungswürdig bewerten, haben Sie Ihr Geld in der Tasche :).
Aber wo ist die Einfachheit?
Der einfache Teil ist, dass Sie den Code nicht nur manuell analysieren müssen. Es gibt Tools, mit denen Sie automatisch nach Fehlern im Code suchen können. Zum Beispiel - statische Code-Analysatoren. Ich bevorzuge unser Tool -
PVS-Studio . PVS-Studio Analyzer kann Fehler in Code finden, der in C ++, C # und Java geschrieben ist, und verfügt über eine benutzerfreundliche Oberfläche. Darüber hinaus gibt es mehrere Optionen für die kostenlose Nutzung. Auf jeden Fall gibt es andere verschiedene
Codeanalysatoren .
Natürlich können statische Analysatoren nicht alle Fehler aufdecken. Macht nichts! Schließlich haben wir den Zweck, Fehler schnell und einfach zu finden und nicht alle.
Sobald das Projekt heruntergeladen und erstellt wurde, sind nur ein paar Klicks erforderlich, um die Analyse zu starten. Das Ergebnis ist ein Bericht mit einer (normalerweise signifikanten) Anzahl von Warnungen, die vom Analysegerät generiert werden. In PVS-Studio werden sie in drei Sicherheitsstufen eingeteilt. Sie sollten mit der ersten Warnstufe beginnen, damit die orange und gelbe Stufe aus dem Analyseergebnis entfernt werden kann.
Ein Beispiel für das Filtern der Analyseergebnisse.
Daher müssen Sie nur die restlichen Warnungen durchsehen und die Orte auswählen, die die größte Gefahr darstellen können. Es lohnt sich zu prüfen, ob es möglich ist, eine davon direkt beim Ausführen des Programms zu reproduzieren. Wenn Sie es schaffen, erhöht dies nicht nur die Wahrscheinlichkeit, dass Entwickler den Bericht akzeptieren, sondern auch den Zahlungsbetrag. In diesem Fall ist die Sichtbarkeit Ihr bester Freund.
Es lohnt sich auch zu überlegen, ob der gefundene Fehler die Sicherheit des Programms beeinträchtigt. Immerhin wird in diesem Fall der an Sie gezahlte Betrag um ein Vielfaches höher sein :)
Der Screenshot zeigt die Visual Studio-Oberfläche. Lassen Sie sich jedoch nicht irreführen. Der Analysator kann nicht nur als Plugin für Visual Studio verwendet werden, sondern auch für sich allein, einschließlich der
Linux- und MacOS- Umgebungen.
Vorteile dieses Ansatzes
Erstens ist die Verwendung eines statischen Analysators eine der einfachsten Möglichkeiten, Fehler zu finden. Sie müssen keine besonderen Kenntnisse haben, um Code-Analysatoren verwenden zu können: Sie müssen nur die Sprache verstehen, in der der Code geschrieben ist.
Zweitens sind Analysatoren aufmerksam. Sie werden nicht müde und verlieren im Gegensatz zu einem Menschen nicht ihre Wachsamkeit. Daher können sie verwendet werden, um mit nahezu minimalen Kosten beliebig große Codebasen zu analysieren.
Drittens haben Analysatoren oft mehr Wissen als Menschen. Was bedeutet das Lassen Sie mich meine Gedanken anhand des Beispiels aus dem Android-Kernel-Code erklären:
static void FwdLockGlue_InitializeRoundKeys() { unsigned char keyEncryptionKey[KEY_SIZE]; .... memset(keyEncryptionKey, 0, KEY_SIZE);
Es scheint, wo ist hier ein Fehler?
Es stellt sich heraus, dass ein Compiler, der sieht, dass ein Array nirgendwo anders verwendet wird, den Code optimieren und den Aufruf der
Memset- Funktion daraus entfernen kann. Und das nur beim Erstellen der Release-Konfiguration. Alles wäre in Ordnung, aber nur der Beschriftungsschlüssel bleibt für einige Zeit ungeklärt im RAM, auf diese Weise kann er von einem Eindringling erhalten werden. Eine echte Sicherheitsverletzung!
Außerdem kann es von
Ihnen selbst kaum gefunden werden: Im Debugging-Modus funktioniert der Aufruf von
memset einwandfrei . Tests helfen auch nicht weiter ... Das einzige, was bleibt, ist, sich dieser Funktion bewusst zu sein und sich daran zu erinnern.
Was ist, wenn die Projektentwickler diese Funktion nicht kennen? Was ist, wenn Sie bei der Suche nach Fehlern nichts über diese Funktion wissen? Der Analysator verfügt über die
V597- Diagnose, sodass Sie diese Funktion beim Anzeigen des Berichts auf jeden Fall kennenlernen werden.
Zum Schluss der vierte Punkt. Einer der nützlichsten Vorteile der Verwendung statischer Analysen bei der Suche nach Bug Bounty ist die Geschwindigkeit. Es ist wahr, dass Sie zwei, drei, vier Projekte an einem Abend überprüfen können - aber das ist noch nicht alles.
Die Hauptsache ist, dass Sie der Erste sein können. Während die Auszeichnung für das Auffinden von Fehlern in einem Projekt angeboten wird, wird das Projekt weiter verfeinert und weiterentwickelt. Entwickler liefern neue Releases und neue Funktionen sowie neuen Code und neuen Speicherplatz für Fehler. Wenn Sie den von mir beschriebenen Ansatz verwenden, können Sie neue Fehler und potenzielle Schwachstellen bereits am ersten Tag ihrer Veröffentlichung gezielt berücksichtigen.
Mögliche Schwachstellen
Ein aufmerksamer Leser kann verwirrt sein:
Warte, warte! Einerseits sprechen Sie von der Suche nach Codefehlern in Programmen, andererseits von potenziellen Schwachstellen. Sicherheitslücken sind in Bezug auf Bug Bounty interessanter. Bitte klären Sie was Sie meinen!Tatsache ist, dass Fehler und potenzielle Schwachstellen im Grunde dasselbe sind. Sicher, nur wenige Fehler / potenzielle Schwachstellen erweisen sich in der weiteren Forschung als echte Schwachstellen. Ein harmloser Fehler und eine entscheidende Sicherheitsanfälligkeit können jedoch im Code genauso aussehen. Der Artikel "
Wie kann PVS-Studio bei der Erkennung von Sicherheitslücken helfen? " Gibt einige scheinbar häufige Fehler, die jetzt als Sicherheitslücken bekannt sind.
Übrigens beziehen sich laut dem Bericht des Nationalen Instituts für Standards und Technologie (NIST) etwa 64% der Schwachstellen in Anwendungen auf Softwarefehler, nicht auf Probleme, die in direktem Zusammenhang mit der Sicherheit stehen.
Greifen Sie also nach der Brennnessel, holen Sie sich PVS-Studio und suchen Sie nach Fehlern und Sicherheitslücken! Die Einstufung nach
CWE wird hier sehr hilfreich sein.
Fazit
Hoffentlich habe ich einem Leser bei der Suche nach genau diesen Fehlern geholfen, die ihm Ehre und finanzielle Belohnung bringen. Ich bin sicher, dass statische Analyse dabei helfen wird! Denken Sie daran, dass Entwickler normalerweise keine Zeit haben, Fehler im Detail zu analysieren. Sie müssen also nachweisen, dass Ihre Ergebnisse das Programm tatsächlich beeinflussen können. Der beste Weg ist, es visuell zu reproduzieren. Und denken Sie daran: Je mehr der Fehler die Sicherheit zerstört, desto mehr werden Sie dafür bezahlt.
Nun, das ist es. Viel Glück bei der Suche nach einer Belohnung!