


CWE_CHECKER ist eine Reihe von Schecks, um gemeinsame Fehlerklassen wie Nullzeiger -Dereferenzen und Pufferüberläufe zu erkennen. Diese Fehlerklassen werden formell als gemeinsame Schwäche (CWEs) bezeichnet. Die Überprüfungen basieren auf einer Vielzahl von Anaylsis-Techniken, die von einfachen Heuristiken bis hin zur abstrakten interpretationsbasierten Datenflussanalyse reichen. Das Hauptziel ist es, den Analysten zu helfen, schnell potenziell gefährdete Codepfade zu finden.
Der Hauptaugenmerk liegen auf Elfenbinärdateien, die häufig auf Linux- und Unix -Betriebssystemen zu finden sind. Das CWE_Checker verwendet Ghidra, um Binärdateien in eine gemeinsame Zwischendarstellung zu zerlegen und implementiert seine eigenen Analysen zu diesem IR. Daher können die Analysen auf den meisten CPU -Architekturen durchgeführt werden, die Ghidra zerlegen kann, was den CWE_Checker zu einem wertvollen Tool für die Firmware -Analyse macht.
Die folgenden Argumente sollten Sie davon überzeugen, CWE_Checker auszuprobieren:

Der einfachste Weg ist, das neueste Docker -Bild aus der GitHub -Containerregistrierung zu ziehen:
docker pull ghcr.io/fkie-cad/cwe_checker:latest gibt ein Bild basierend auf dem aktuellen Master-Zweig.docker pull ghcr.io/fkie-cad/cwe_checker:stable ergibt ein Bild basierend auf der neuesten stabilen Versionsversion.docker pull ghcr.io/fkie-cad/cwe_checker:v0.9 liefert ein Bild basierend auf der Version v0.9 stabiler Version. Es wird jedoch empfohlen, auf neuere stabile Veröffentlichungen umzusteigen, sobald sie veröffentlicht werden, da Verbesserungen zwischen stabilen Versionen sehr signifikant sein können.Wenn Sie das Docker -Image selbst erstellen möchten, laufen Sie einfach aus
docker build -t cwe_checker .
Auf diese Weise können Sie auch native Docker-Bilder für ARM-basierte PCs (z. B. neuere Apple Macs) erstellen. Die vorgefertigten Docker-Bilder basieren derzeit nur X86.
Die folgenden Abhängigkeiten müssen installiert werden, um das CWE_Checker lokal zu erstellen und zu installieren:
Run make all GHIDRA_PATH=/path/to/ghidra_folder (mit dem richtigen Pfad zur lokalen Ghidra -Installation), um den CWE_Checker zu kompilieren und zu installieren. Wenn Sie das Argument GHIDRA_PATH weglassen, sucht das Installationsprogramm Ihr Dateisystem nach einer lokalen Installation von Ghidra.
Der CWE_Checker nimmt eine Binärdatei als Eingabe an, führt mehrere Überprüfungen aus, die auf der statischen Analyse auf der Binäranalyse basieren und dann eine Liste von CWE -Warnungen ausgibt, die während der Analyse gefunden wurden.
Wenn Sie das offizielle Docker -Bild verwenden, laufen Sie einfach aus
docker run --rm -v /PATH/TO/BINARY:/input ghcr.io/fkie-cad/cwe_checker /inputWenn Sie den CWE_Checker lokal installiert haben, laufen Sie aus
cwe_checker BINARYWenn Sie Nix Flakes verwenden, laufen Sie
nix run github:fkie-cad/cwe_checker -- BINARY Sie können das Verhalten der meisten Überprüfungen über eine Konfigurationsdatei unter src/config.json anpassen. Wenn Sie es ändern, fügen Sie das Befehlszeilen -Flag --config=src/config.json hinzu, um dem CWE_Checker mitzuteilen, dass sie die geänderte Datei verwenden soll. Informationen zu anderen verfügbaren Befehlszeilenflags finden Sie im Flag --help an das CWE_Checker .
Die Analyse von Linux -ladbaren Kernelmodulen (LKMs) wird experimentell unterstützt. CWE_Checker erkennen, ob Sie ein LKM übergeben, und führt eine Teilmenge der CWE-Schecks aus, die für Benutzer-Raum-Programme verfügbar sind. Analysen können über eine separate Konfigurationsdatei konfiguriert werden.
Wenn Sie die stabile Version verwenden, können Sie sich auch die Online -Dokumentation ansehen, um weitere Informationen zu erhalten.
Das CWE_Checker bietet experimentelle Unterstützung für die Analyse von Binsaries. Für diese muss eine Bare-Metal-Konfigurationsdatei über die Befehlszeilenoption für --bare-metal-config bereitgestellt werden. Ein Beispiel für eine solche Konfigurationsdatei finden Sie unter bare_metal/stm32f407vg.json (die für eine STM32F407VG MCU erstellt und getestet wurde).
Weitere Informationen finden Sie in der Online -Dokumentation.
Die Test -Binärdateien für unsere Testsuite können mit make compile_test_files erstellt werden (muss Docker installiert werden!). Die Testsuite kann dann mit make test ausgeführt werden.
Quellcode -Dokumentation kann mit make documentation erstellt werden. Für die stabile Version finden Sie die Dokumentation hier.
Bisher werden die folgenden Analysen implementiert:
Bitte beachten Sie, dass sowohl falsch positive als auch falsche Negative aufgrund von Verknüpfungen und der Art der statischen Analyse sowie der Überprüfung zu erwarten sind. Informationen zu den inneren Arbeitswerken jeder Prüfung sowie bekannten Gründen für falsch positive und falsch negative Aussagen auf den Check-spezifischen Dokumentationsseiten finden Sie.
CWE_CHECKER wird mit einem Skript für Ghidra geliefert, das die Ausgabe des CWE_Checker analysiert und die gefundenen CWEs im Disassembler für eine leichtere manuelle Analyse kommentiert. Das Skript befindet sich unter ghidra_plugin/cwe_checker_ghidra_plugin.py , in der Datei sind Verwendungsanweisungen enthalten.

Das CWE_Checker ist in der Tat ebenfalls als Plugin integriert. Wenn Sie das CWE_Checker in Ihren eigenen Analyse -Toolchain integrieren möchten, können Sie die Flagge --json -Befehlszeilen (in Kombination mit den Befehlszeilenoptionen --quiet oder --out=... ) verwenden, um die CWE -Warnungen in einem leicht parsbaren JSON -Ausgangsformat zu generieren.
Erstellen Sie die Dokumentation mit cargo doc --open --document-private-items --no-deps erhalten Sie mehr Informationen über die interne Struktur des CWE_Checker. Die beste Dokumentation ist jedoch immer noch der Quellcode selbst. Wenn Sie Fragen haben, stellen Sie sie unbedingt auf unserer Diskussionsseite! Wir bemühen uns ständig, die Erweiterbarkeit und Dokumentation zu verbessern, und Ihre Fragen helfen uns, dies zu erreichen!
Um einen kurzen/anfänglichen Überblick über seine Interna zu erhalten, können Sie sich auch die Folien der Konferenzpräsentationen auf dem CWE_Checker im DOC -Ordner ansehen. Wir haben CWE_Checker auf folgenden Konferenzen bisher vorgestellt:
Beiträge sind immer willkommen. Geben Sie es einfach und öffnen Sie eine Pull -Anfrage!
Dieses Projekt wird teilweise vom deutschen Bundesbüro für Informationssicherheit (BSI) finanziert.
Ein besonderer Dank geht an die BAP -Community (insbesondere den offiziellen Gitter), um Fragen zu beantworten und Lösungen zu diskutieren.
Copyright (C) 2018 - 2024 Fraunhofer FKIE ([email protected])
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.