Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
edk2-security — EDK2 BrotliCustomDecompressLib Sicherheitsbefunde — koordinierte Offenlegung | Kitploit
Tools/GitHubGitHub/lukr54/edk2-security
Embedded-System-SicherheitSchwachstellenscannerSchwachstellenanalyseExploitationHardware- & IoT-SicherheitPapers & ForschungFirmware-AnalyseBinary-Exploitation
GitHublukr54/edk2-security

edk2-security

EDK2 BrotliCustomDecompressLib Sicherheitsbefunde — koordinierte Offenlegung

Repository anzeigen
15vor 1 TagNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

EDK2 BrotliCustomDecompressLib — Heap-Overflow (nicht behoben)

Ein Heap-Buffer-Overflow in EDK2s eigener Brotli-Dekomprimierungs-Anbindung (MdeModulePkg/Library/BrotliCustomDecompressLib), vorhanden seit 2017, nicht behoben am HEAD-Stand mit Datum 2026-10-25. ASAN-bestätigt mit einem Proof-of-Concept und einer End-to-End-Demo zur kontrollierten Speichermanipulation.

Zusammenfassung

EDK2s Brotli-Wrapper liest die dekomprimierte Ausgabegröße aus einem angreiferkontrollierten GUIDed-Section-Header, kürzt sie von UINT64 auf UINT32 ohne Prüfung und übergibt sie an den DXE-Kern, der einen Puffer dieser Größe allokiert. BrotliDecompressInternal dekomprimiert dann unbegrenzt in diesen Puffer — es läuft, bis der Brotli-Stream endet, und schreibt über die Allokation hinaus.

Ergebnis: Heap-Overflow (Schreibprimitive) in der DXE-Phase, bevor die Secure-Boot- Verifikation abgeschlossen ist. Ein Angreifer, der das Firmware-Image kontrolliert (Flash, Capsule oder ESP), kann benachbarte Pool-Objekte — Funktionszeiger, Sicherheitsflags, Protokollstrukturen — mit gewählten Bytes überschreiben.

Dies ist das übersehene Brotli-Gegenstück zu CVE-2021-28211 (LZMA erhielt 2021 eine >MAX_UINT32-Prüfung; Brotli nie). Ein Varianten-Sweep bestätigt, dass Brotli der einzige EDK2-Dekompressor ist, dem sowohl die Truncation-Prüfung als auch eine Ausgabegrenze fehlen.

Betroffener Code

DateiFunktion
BrotliDecompress.c:238Castet die dekomprimierte Größe von UINT64 auf UINT32 — keine MAX_UINT32-Prüfung
BrotliDecompress.c:118–157Dekomprimiert in den Zielpuffer ohne Grenzprüfung
GuidedSectionExtraction.cRuft GetInfo und dann Decompress auf — vertraut der deklarierten Größe
CoreSectionExtraction.c:1597Allokiert den Zielpuffer in der deklarierten Größe

Alle in tianocore/edk2, MdeModulePkg/Library/BrotliCustomDecompressLib.

Nachweise

ArtefaktBeschreibung
harness/edk2_brotli_overflow_poc.cASAN-Proof-of-Concept: 4096-Byte-Stream in 64-Byte-Puffer
harness/asan_output.txtASAN-Ausgabe: heap-buffer-overflow bei BrotliDecompressInternal → memcpy
harness/edk2_brotli_overflow_demo.cEnd-to-End-Demo: kontrollierte Korruption benachbarter Pool-Objekte
harness/demo_output.txtDemo-Ausgabe: Funktionszeiger gekapert, Secure Boot deaktiviert
harness/lvfs_brotli_scan.pyLVFS-Firmware-Scanner (Messung des Schadenspotenzials)
harness/lvfs_scan_output.txtScan-Ergebnisse: 0/200 Firmware-Images verwenden Brotli
evidence/Kopien der verwundbaren EDK2-Quelldateien am HEAD-Stand
FINDINGS.mdVollständige Ausarbeitung: Zeilenreferenzen, Prior-Art-Suche, Varianten-Sweep, LZMA-Audit

Schadenspotenzial

Gering. Zwei unabhängige Erhebungen fanden null Plattformen, die Brotli-GUIDed- Sections in der Praxis verwenden:

  • GitHub-Code-Suche (alle öffentlichen Repos): 0 Plattform-DSC-Dateien referenzieren BrotliCustomDecompressLib. Jeder Treffer ist MdeModulePkg.dsc selbst.
  • LVFS-Firmware-Scan (200 ausgelieferte Images, 9 Hersteller): Brotli-GUID in 0/200 Images gefunden. LZMA (Positivkontrolle) in 161/200 gefunden.

Der verwundbare Code wird im EDK2-Baum ausgeliefert, ist heute aber toter Code — 2017 hinzugefügt, nie von IBVs oder OEMs übernommen. Der Bug ist real und prinzipiell ausnutzbar; falls die Brotli-Verbreitung zunimmt, wird er sofort erreichbar.

Behebung

Zwei Änderungen, entsprechend dem, was LZMA und Tiano bereits haben:

  1. Die MAX_UINT32-Prüfung hinzufügen in BrotliUefiDecompressGetInfo (BrotliDecompress.c:238): dekomprimierte Größen > MAX_UINT32 ablehnen, wie es LzmaDecompress.c:149 seit CVE-2021-28211 tut.
  2. Die Ausgabe begrenzen in BrotliDecompressInternal: geschriebene Bytes mitverfolgen und bei DestinationSize stoppen, wie es der Tiano-Dekompressor mit mOrigSize tut.

Reproduzieren

Das PoC unter Linux mit libbrotli und GCC bauen:

# ASAN proof (aborts at the overflow)
gcc -fsanitize=address -g -O1 -o poc harness/edk2_brotli_overflow_poc.c \
    -lbrotlienc -lbrotlidec
./poc

# Controlled-corruption demo (completes the overflow, shows the damage)
gcc -g -O1 -o demo harness/edk2_brotli_overflow_demo.c \
    -lbrotlienc -lbrotlidec
./demo

Vorarbeiten

  • CVE-2021-28211 — der LZMA-Verwandte, behoben im Jahr 2021. Der Brotli-Pfad wurde übersehen.
  • CVE-2026-111497 — ein separater Upstream-Brotli-Decoder-Fehler (9.2). EDK2 ist ebenfalls betroffen (Issue #13378), aber das ist ein anderer Fund.
  • Keine öffentliche CVE, Advisory, Issue oder PR befasst sich mit dem Brotli-Glue-Overflow. Geprüft: alle 14 EDK2-GHSAs, alle 29 Brotli-Issues, alle 28 Brotli-PRs, CVE/NVD, EDK2 HEAD.

Offenlegung

Vollständige öffentliche Offenlegung, 2026-10-26. TianoCore wurde keine koordinierte Offenlegungsfrist gewährt. Der begrenzte Auswirkungsbereich (keine ausgelieferte Firmware betroffen) und die Tatsache, dass der verwandte LZMA-Fehler seit 2021 öffentlich ist, begründeten diese Entscheidung.

Autor

@lukr54

Tool herunterladen