FlawOpen

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

● CVE-2026-55269 · CVSS 7.8 · Tinggi
Riset Keamanan · FlawOpen

CVE-2026-55269: penulisan melewati buffer Android Bluetooth SnoopLogger

CVE-2026-55269 adalah cacat keamanan memori pada Android Bluetooth SnoopLogger yang dapat menyebabkan eskalasi hak istimewa lokal. Dengan konfigurasi logging pengembang tertentu, paket pendek dari controller dapat mencapai penulisan string tetap tanpa ruang buffer yang cukup. Google memperbaiki kondisi resize yang terbalik dan membatasi panjang yang diparse.

💡 Penjelasan Sederhana (ELI5)

Bayangkan petugas memberi cap “PROHIBITED” pada paket sempit. Paket itu seharusnya diberi pembungkus tambahan terlebih dahulu, tetapi tanda yang terbalik membuat paket terkecil melewati langkah tersebut. Perbaikan menambah ruang pada paket pendek sebelum cap diberikan dan membatasi panjang yang dicatat ke ukuran paket yang tersedia.

Konsep Kunci & Istilah

SnoopLogger
Kode Bluetooth Android yang memfilter dan mencatat paket HCI yang ditangkap. Jalur terdampak memerlukan konfigurasi logging tersaring yang dijelaskan.
Paket HCI ACL
Paket data antara host Bluetooth dan controller. Commit upstream menyebut paket yang sangat pendek dapat mencapai jalur buffer kurang kapasitas jika filter terkait aktif.
EXTRA_BUF_SIZE
Kapasitas tambahan sebelum menulis penanda tetap “PROHIBITED” ke paket tersaring. Perbaikan memastikan ruang ini tersedia untuk paket pendek.
CWE-20
Validasi input yang tidak memadai. CISA ADP memetakan kelemahan ini; cacat konkretnya adalah kondisi ukuran yang terbalik dalam penanganan buffer.

Pemetaan kerangka kerja

  • Pemetaan konseptual FlawOpen ke MITRE CWE; tidak ada vendor atau catatan CVE yang menetapkan ID kelemahan ini untuk demonstrasi riset tersebut. CWE-20

Analisis Akar Masalah (Root Cause)

Buletin Android Oktober 2026 mencantumkan CVE-2026-55269 untuk Android 16, 16 QPR2, dan 17. NVD saat ini menampilkan skor CVSS 3.1 7,8 (Tinggi) dari CISA ADP, sementara buletin Google memberi label Kritis pada entri System; keduanya adalah penilaian berbeda. Pada commit Bluetooth upstream, SnoopLogger::FilterCapturedPacket masuk ke jalur PBAP/MAP tersaring dan PayloadStrip dapat menulis penanda tetap PROHIBITED. Kondisi rentan packet.size() + EXTRA_BUF_SIZE > DEFAULT_PACKET_SIZE melewatkan resize untuk paket kecil sehingga kapasitas tidak mencukupi. Perbaikan mengubah operator menjadi <= dan membatasi length ke packet.size() + PACKET_TYPE_LENGTH. Commit menjelaskan controller Bluetooth jahat yang mengirim paket HCI ACL pendek, tetapi Developer Options terkait dan filter SnoopLogger harus diaktifkan. Ini bukan layanan Android yang dapat dijangkau dari internet. Payload eksploit tidak ditampilkan. Ketersediaan pembaruan bergantung pada produsen perangkat.

Alur Serangan Langkah demi Langkah

Langkah 1

Konfigurasi logging khusus sedang aktif

Commit menjelaskan Developer Options dengan filter Bluetooth SnoopLogger aktif serta profil filter PBAP/MAP magic. Jangan menggeneralisasi jalur ini ke semua perangkat Android atau konfigurasi default.

Langkah 2

Controller memberikan paket yang sangat pendek

Controller Bluetooth jahat dapat mengirim paket HCI ACL pendek ke jalur capture tersaring. Artikel tidak menyertakan byte paket atau detail pemicu operasional.

Langkah 3

Kondisi terbalik melewatkan ruang tambahan

FilterCapturedPacket memakai > padahal yang diperlukan adalah <=. Paket kecil tidak mendapat EXTRA_BUF_SIZE, tetapi proses berikutnya dapat menulis penanda PROHIBITED ke buffer yang terlalu kecil.

Langkah 4

Perbaikan upstream memulihkan batas buffer

Perbaikan menambah ruang untuk paket pendek yang memenuhi syarat dan membatasi panjang parse ke data yang tersedia. Pasang pembaruan level patch 2026-10-01 atau lebih baru saat produsen menyediakannya.

Kode Sumber: Rentan vs Aman

Cuplikan ini mengikuti perubahan publik Google: perbandingan dibalik agar paket kecil menerima kapasitas tambahan untuk penanda, dan panjang yang diparse dibatasi ke ukuran yang tersedia. Commit juga menambahkan pengujian paket pendek. Ini ilustrasi ringkas dari perbaikan upstream, bukan patch mandiri untuk perangkat; pasang pembaruan produsen dengan level patch 2026-10-01 atau lebih baru.

Cuplikan sumber: snoop_logger.cc

IMPLEMENTASI RENTAN
if (packet.size() + EXTRA_BUF_SIZE > DEFAULT_PACKET_SIZE) {
  // Paket kecil perlu menyediakan ruang untuk penanda filter.
  packet.resize(packet.size() + EXTRA_BUF_SIZE);
}

// Selanjutnya, PayloadStrip menulis penanda tetap PROHIBITED.
PERBAIKAN AMAN & KUAT
if (packet.size() + EXTRA_BUF_SIZE <= DEFAULT_PACKET_SIZE) {
  // Tambahkan padding pada paket pendek yang memenuhi syarat sebelum penyaringan.
  packet.resize(packet.size() + EXTRA_BUF_SIZE);
}

// Jaga panjang hasil parse tetap di dalam batas paket yang ukurannya telah diubah.
length = std::min(
    length, static_cast<uint32_t>(packet.size() + PACKET_TYPE_LENGTH));

Daftar Periksa Penguatan Sistem Rekayasa

Sumber