Verstehen Sie unsichere Funktionsaufrufdaten in der Firmware-Analyse

Die Firmware-Analyse identifiziert potenziell unsichere Funktionsaufrufe in unterstützten ausführbaren Dateien, die aus Firmware-Images extrahiert wurden. Diese Ergebnisse können Ihnen helfen, Implementierungsmuster zu erkennen, die eine zusätzliche Sicherheitsüberprüfung erfordern, und Binärdateien entsprechend ihrer potenziellen Exposition zu priorisieren.

Dieser Artikel erklärt die unsicheren Funktionsaufrufsignale, die man in Firmware-Analyseergebnissen sehen kann. Es beschreibt unterstützte Dateien, Abdeckungsbeschränkungen und wie Befunde im Kontext der ausführbaren Datei und des Geräts bewertet werden können.

Note

Das Vorhandensein eines unsicheren Funktionsaufrufs bedeutet nicht zwangsläufig, dass eine ausführbare Datei oder ein Gerät verwundbar ist. Das tatsächliche Risiko hängt davon ab, wie die Funktion genutzt wird, ob unvertrauenswürdige Eingaben sie erreichen können und wie die ausführbare Datei offengelegt und geschützt ist.

Unsichere Funktionsaufrufsignale in der Firmware-Analyse

Die Analyse „Unsafe Function Calls“ führt eine statische Analyse unterstützter ausführbarer Dateien im Executable and Linkable Format (ELF) durch. Es identifiziert Verweise auf Funktionen, die zu Sicherheitsproblemen beitragen können, wenn sie ohne angemessene Eingabevalidierung, Bounds-Checking, Puffergrößenvalidierung oder andere sichere Codierungskontrollen verwendet werden.

Einige Speicherhandhabungsfunktionen können bei falscher Anwendung zu Pufferüberlauf oder anderen Speicherbeschädigungszuständen beitragen. Je nach betroffenem Codepfad und verfügbaren Minderungsmaßnahmen könnte ein Angreifer diese Bedingungen nutzen, um das Gerät zu stören oder unautorisierten Code auszuführen.

Jedes Ergebnis stellt ein Signal und keine Schwachstellenfeststellung dar. Bewerten Sie die Signale gemeinsam und im Kontext der Rolle der ausführbaren Datei in der Firmware.

Screenshot der Vorschauegebnisse zu unsicheren Funktionsaufrufen, einschließlich der Gesamtzahlen unsicherer Aufrufe und Netzwerkaufrufe sowie funktionsspezifischer Anzahlen pro ausführbarer Datei.

Potenziell unsichere Funktionen

Manche Bibliotheksfunktionen können riskant sein, weil sie die Größe oder Vertrauenswürdigkeit der verarbeiteten Daten nicht von Natur aus durchsetzen. Beispielsweise können Funktionen wie strcpy und strcat zu Pufferüberlaufbedingungen beitragen, wenn ein Programm überdimensionierte oder nicht vertrauenswürdige Eingaben in einen Zielpuffer kopiert.

Ein gemeldeter Verweis deutet darauf hin, dass die Analyse der Firmware eine verfolgte Funktion in der ausführbaren Datei identifiziert hat. Es stellt nicht fest, dass die Funktion falsch verwendet wird. Die Funktion kann mit Sicherheitsvorkehrungen verwendet werden, wie zum Beispiel das Überprüfen der Eingabelänge, die Bereitstellung ausreichend Zielplatz oder die Begrenzung der Eingabe auf vertrauenswürdige Daten.

Beim Ändern des Quellcodes verwenden Sie String-Handling-Funktionen, die die Größe des Zielpuffers akzeptieren und die Eingabelängen vor dem Kopieren oder Verketten der Daten validieren. Stellen Sie sicher, dass das Ergebnis nullterminiert ist, und behandeln Sie Kürzungen oder Fehler. Beschränkte Funktionen wie strncpy und strncat können das Risiko im Vergleich zu unbeschränkten Alternativen verringern, müssen aber dennoch mit korrekten Berechnungen der Puffergröße verwendet werden.

Die Menge der verfolgten Funktionen kann sich ändern, während sich diese Funktion weiterentwickelt. Interpretieren Sie den Funktionsnamen und die Zählung als Ausgangspunkt für die Code-Überprüfung und nicht als vollständige Inventarisierung aller Speichersicherheits- oder Befehlsausführungsrisiken.

Informationen zum Netzwerkanruf

Die Firmware-Analyse zeigt auch an, wann netzwerkbezogene Funktionsaufrufe in einer analysierten ausführbaren Datei identifiziert werden. Nutzen Sie dieses Signal, um ausführbare Dateien für eine weitere Überprüfung zu priorisieren. Es bestimmt nicht, ob die ausführbare Datei Remoteverbindungen akzeptiert, außerhalb des Geräts kommuniziert oder in der Zielumgebung erreichbar ist.

Bei der Priorisierung der Ergebnisse sollten Sie zuerst ausführbare Dateien prüfen, die sowohl unsichere Funktionsaufrufe als auch netzwerkbezogene Aufrufe enthalten. Diese ausführbaren Dateien könnten Daten verarbeiten, die aus einem Netzwerk empfangen werden, und können eine frühere Untersuchung erfordern.

Pfad der ausführbaren Datei und Anzahl der Aufrufe

Die Ergebnisse sind mit dem ausführbaren Pfad verknüpft, der aus dem Firmware-Image extrahiert wurde. Die Anzahl der Funktionsaufrufe gibt an, wie viele Verweise auf eine verfolgte Funktion in dieser ausführbaren Datei identifiziert wurden. Eine höhere Anzahl kann auf mehr Standorte hinweisen, die überprüft werden müssen, aber sie bedeutet nicht allein eine größere Schwere oder Ausnutzbarkeit.

Die gleiche ausführbare Datei kann an mehreren extrahierten Stellen erscheinen, und verschiedene ausführbare Dateien können Verweise auf dieselbe Funktion enthalten. Verwenden Sie den Extractor-Pfad und die Firmware-Version, um die korrekte Quellkomponente oder das Lieferantenartefakt zu identifizieren.

Unterstützte Dateien und Abdeckung

Die Analyse unsicherer Funktionsaufrufe ist als Vorschau verfügbar und gilt für unterstützte ELF-Benutzermodus-Programme, die aus Linux-basierten Firmware-Abbildern extrahiert wurden.

Linux-Kernelmoduldateien (.ko) sind nicht enthalten, da die Vorschau auf die Analyse ausführbarer Dateien im Benutzerbereich beschränkt ist.

Die Vorschau unterstützt folgende Prozessorarchitekturen:

  • AMD64 oder x86-64
  • ARM64 oder AArch64
  • ARM32

Binäre Anforderungen

Die ausführbare Datei muss Informationen speichern, die eine Firmware-Analyse ermöglichen, um die verwendeten Funktionen zu identifizieren. Eine statisch gelinkte oder von Symbolen bereinigte Binärdatei kann möglicherweise keine Ergebnisse liefern, wenn Funktionsnamen oder andere erforderliche Informationen nicht verfügbar sind.

Ein Firmware-Image kann andere Analyseaktivitäten erfolgreich durchführen, ohne Ergebnisse von Unsafe Function Calls zu liefern. Jeder Firmware-Analyzer hat seine eigenen Datei-, Architektur- und Metadatenanforderungen.

Unsichere Funktionsaufrufdaten gemeinsam verwenden

Jedes Signal bietet eine andere Perspektive auf das potenzielle Risiko:

Signal Was es dir hilft, zu verstehen
Pfad zur ausführbaren Datei Welche extrahierte ausführbare Datei enthält die identifizierten Aufrufe.
Anzahl unsicherer Funktionsaufrufe Die Gesamtzahl der unsicheren Funktionsaufrufe, die in der ausführbaren Datei identifiziert wurden.
Anzahl der Netzwerkanrufe Ob netzwerkbezogenes Verhalten eine Priorisierung der ausführbaren Datei für eine weitere Überprüfung rechtfertigen könnte. Die Anzahl begründet keine Remote-Erreichbarkeit.
Anzahl der Anrufe <function name> Wie viele Referenzen auf die benannte Funktion wurden in der ausführbaren Datei identifiziert. Verwenden Sie die funktionsspezifische Zählung, um die relevanten Sicherheitskontrollen weiter zu überprüfen, wie z. B. Puffergrößen, Eingabevalidierung, Formatstring-Handling, Speicherberechtigungen oder Befehl-Eingabe-Validierung.

Funktionsspezifische Zählungen werden für die folgenden Funktionen bereitgestellt:

  • strcpy
  • strcat
  • printf
  • fprintf
  • sprintf
  • system
  • mmap
  • popen

Anstatt sich auf ein einziges Feld zu verlassen, sollten Sie diese Signale gemeinsam bewerten, um zu verstehen, welche ausführbaren Dateien die unmittelbarste Überprüfung benötigen.

Wichtige Überlegungen

Interpretation von Null- und leeren Ergebnissen

Ergebnisse können eine Nullanzahl für eine ausführbare Datei anzeigen oder eine ausführbare Datei ganz weglassen. Eine Nullzählung bedeutet, dass die ausführbare Datei analysiert wurde, aber für dieses Feld keine nachverfolgten Aufrufe identifiziert wurden.

Wenn eine ausführbare Datei nicht in den Ergebnissen erscheint, sollten Sie nicht davon ausgehen, dass sie keine unsicheren Funktionsaufrufe enthält. Die Firmware-Analyse konnte sie möglicherweise nicht analysieren, weil die ausführbare Datei eine nicht unterstützte Architektur verwendet oder nicht die Informationen enthält, die zur Identifikation von Funktionsreferenzen erforderlich sind.

Eine leere Ergebnisliste bedeutet, dass für das Firmware-Image keine Ergebnisse für Unsafe Function Calls verfügbar sind. Das bedeutet nicht, dass die Firmware keine unsicheren Funktionsaufrufe enthält.

Es können keine Ergebnisse erscheinen, wenn:

  • Es wurden keine ausführbaren ELF-Programme im Benutzerbereich extrahiert.
  • Die extrahierten ausführbaren Dateien verwenden nicht unterstützte Architekturen.
  • Eine statische oder abgetragene Binärdatei enthält nicht genügend identifizierende Informationen.
  • Die extrahierte Datei ist ein ausgeschlossenes Linux-Kernel-Modul.
  • Das Firmware-Image wurde analysiert, bevor die Analyse von Unsafe Function Calls verfügbar wurde.
  • Extraktion oder Analyse wurde nicht erfolgreich abgeschlossen.

Note

Ein leeres Ergebnis bestätigt nicht, dass die Firmware keine unsicheren Funktionsaufrufe enthält. Um aktuelle Analysen für ein Bild zu erhalten, das vor der Verfügbarkeit der Vorschau der Unsafe Function Calls verarbeitet wurde, laden Sie das Firmware-Image erneut hoch.

Um zu lernen, wie man ein Bild hochlädt und dessen Ergebnisse ansieht, siehe Analyze a firmware image with the firmware analysis service. Um verwandte Compiler- und Linker-Schutzmaßnahmen zu bewerten, prüfen Sie für dieselbe ausführbare Datei die Registerkarte Binary Hardening.