FlawOpen

flawopen.com/Teardowns/cve-2026-55269-android-snooplogger-heap-write

● CVE-2026-55269 · CVSS 7.8 · Hoch
Sicherheitsforschung · FlawOpen

CVE-2026-55269: Heap-Schreibfehler im Android Bluetooth SnoopLogger

CVE-2026-55269 ist ein Speicherfehler in Android Bluetooth SnoopLogger, der eine lokale Rechteausweitung ermöglichen könnte. Bei einer bestimmten Entwickler-Logging-Konfiguration konnte ein kurzes Controller-Paket eine feste String-Schreiboperation ohne ausreichenden Platz erreichen. Google korrigierte die umgekehrte Resize-Bedingung und begrenzte die geparste Länge.

💡 Einfache Erklärung (ELI5)

Ein Mitarbeiter stempelt „PROHIBITED“ auf ein schmales Paket. Zuerst müsste es zusätzliche Polsterung erhalten, doch ein falsch herum angebrachtes Schild ließ diesen Schritt bei den kleinsten Paketen aus. Der Fix polstert das kurze Paket vor dem Stempel und begrenzt die gespeicherte Länge auf das tatsächlich verfügbare Paket.

Kernkonzepte & Begriffe

SnoopLogger
Android-Bluetooth-Code, der erfasste HCI-Pakete filtert und protokolliert. Der betroffene Pfad setzt die beschriebene gefilterte Logging-Konfiguration voraus.
HCI-ACL-Paket
Datenpaket zwischen Bluetooth-Host und Controller. Der Upstream-Commit nennt ungewöhnlich kurze Pakete als Auslöser des zu kleinen Puffers, sofern der passende Filter aktiv ist.
EXTRA_BUF_SIZE
Zusätzliche Kapazität vor dem Schreiben des festen „PROHIBITED“-Markers in ein gefiltertes Paket. Der Fix stellt diese Polsterung für kleine Pakete sicher.
CWE-20
Unzureichende Eingabevalidierung. CISA ADP ordnet die Schwäche so ein; konkret war die Größenbedingung in der Pufferbehandlung umgekehrt.

Framework-Zuordnungen

  • Konzeptionelle Zuordnung von FlawOpen zu MITRE CWE; weder ein Anbieter noch ein CVE-Datensatz hat diese Schwachstellen-ID dieser Forschungsdemonstration zugewiesen. CWE-20

Ursachenanalyse

Das Android-Sicherheitsbulletin vom Oktober 2026 führt CVE-2026-55269 für Android 16, 16 QPR2 und 17 auf. NVD zeigt derzeit CISA ADPs CVSS-3.1-Wert 7,8 (Hoch); Google stuft den System-Eintrag im Bulletin als Kritisch ein. Das sind unterschiedliche Bewertungen. Im Bluetooth-Upstream-Commit erreicht SnoopLogger::FilterCapturedPacket den gefilterten PBAP/MAP-Pfad; PayloadStrip kann anschließend den festen Marker PROHIBITED schreiben. Die verwundbare Bedingung packet.size() + EXTRA_BUF_SIZE > DEFAULT_PACKET_SIZE ließ kleine Pakete ungepolstert und damit zu wenig Kapazität. Der Fix ändert den Operator zu <= und begrenzt length auf packet.size() + PACKET_TYPE_LENGTH. Der Commit beschreibt einen bösartigen Bluetooth-Controller, der ein kurzes HCI-ACL-Paket sendet; die betreffenden Entwickleroptionen und SnoopLogger-Filter müssen jedoch aktiviert sein. Es handelt sich nicht um einen aus dem Internet erreichbaren Android-Dienst. Ein Exploit-Payload wird nicht gezeigt. Die Verfügbarkeit des Updates hängt vom Gerätehersteller ab.

Schritt-für-Schritt Angriffsablauf

Schritt 1

Eine bestimmte Logging-Konfiguration ist aktiv

Der Commit beschreibt aktiviertes Bluetooth-SnoopLogger-Filtering in den Entwickleroptionen und das PBAP/MAP-Profil magic. Verallgemeinern Sie diesen Pfad nicht auf alle Android-Geräte oder deren Standardkonfiguration.

Schritt 2

Der Controller liefert ein ungewöhnlich kurzes Paket

Ein bösartiger Bluetooth-Controller kann ein kurzes HCI-ACL-Paket in den gefilterten Erfassungspfad senden. Paketbytes und operative Auslöser werden hier ausgelassen.

Schritt 3

Die umgekehrte Bedingung lässt die Polsterung aus

FilterCapturedPacket verwendete > statt <=. Kleine Pakete erhielten kein EXTRA_BUF_SIZE, später konnte die Filterung jedoch den festen Marker PROHIBITED in den zu kleinen Puffer schreiben.

Schritt 4

Der Upstream-Fix stellt die Puffergrenze wieder her

Der Fix polstert geeignete kurze Pakete und begrenzt die geparste Länge auf die verfügbaren Daten. Installieren Sie ein Herstellerupdate mit Patch-Level 2026-10-01 oder neuer, sobald es bereitsteht.

Quellcode: Verwundbar vs. Sicher

Dieser Ausschnitt folgt Googles öffentlicher Änderung: Die Bedingung wird umgedreht, damit kleine Pakete zusätzlichen Platz für den Marker erhalten, und die geparste Länge wird auf die verfügbare Größe begrenzt. Der Commit ergänzt auch Tests für kurze Pakete. Dies ist eine gekürzte Darstellung des Upstream-Fixes, kein eigenständiger Gerätepatch; installieren Sie das Herstellerupdate mit Patch-Level 2026-10-01 oder neuer.

Quelltextauszug: snoop_logger.cc

VERWUNDBARE IMPLEMENTIERUNG
if (packet.size() + EXTRA_BUF_SIZE > DEFAULT_PACKET_SIZE) {
  // Kleine Pakete benötigen Platz für die Filtermarkierung.
  packet.resize(packet.size() + EXTRA_BUF_SIZE);
}

// Anschließend schreibt PayloadStrip die feste Markierung PROHIBITED.
GEHÄRTETER SICHERHEITS-PATCH
if (packet.size() + EXTRA_BUF_SIZE <= DEFAULT_PACKET_SIZE) {
  // Ergänzen Sie geeignete kurze Pakete vor dem Filtern.
  packet.resize(packet.size() + EXTRA_BUF_SIZE);
}

// Halten Sie die geparste Länge innerhalb des vergrößerten Pakets.
length = std::min(
    length, static_cast<uint32_t>(packet.size() + PACKET_TYPE_LENGTH));

Checkliste für Engineering & Systemsicherheit

Quellen