FlawOpen

flawopen.com/AI Security/lmcache-multiprocess-pickle-deserialization-cve-2026-105192

● CVE-2026-105192 · CVSS 9.8[2] · Kritis
Riset Keamanan · FlawOpen

CVE-2026-105192: deserialisasi pickle tanpa autentikasi pada mode multiproses LMCache

CVE-2026-105192 memungkinkan peer tanpa autentikasi yang dapat menjangkau transport multiproses LMCache memicu deserialisasi pickle yang tidak aman. Periksa apakah endpoint ZMQ dapat dirutekan, batasi akses, dan pantau perbaikan vendor.[1], [2]

Vektor CVSSCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H[2]
💡 Penjelasan Sederhana (ELI5)

LMCache menerima paket tersegel dari peer jaringan lalu membukanya dengan mekanisme yang dapat menjalankan instruksi tersembunyi. Masalah terjadi sebelum server memeriksa jenis pesan yang dinyatakan paket tersebut.[1], [2]

Konsep Kunci & Istilah

CWE-502: deserialisasi tidak aman
pickle Python dapat menjalankan perilaku saat membangun ulang objek dan tidak aman untuk data dari peer jaringan yang tidak tepercaya.[1], [2]
Mode multiproses LMCache
Mode ketika komponen LMCache berkomunikasi melalui transport ZeroMQ. Catatan CVE menjelaskan endpoint ROUTER tanpa autentikasi.[2], [5]
Ekstensi MessagePack
Nilai ekstensi MessagePack diteruskan ke DeviceIPCWrapper.Deserialize saat decoding, sebelum pemilihan jenis permintaan.[2], [4], [3]
Batas paparan
Menurut catatan CVE, transport secara default terikat ke localhost. --host yang dapat dirutekan atau jaringan cluster yang dapat dijangkau mengubah siapa yang dapat mengirim pesan.[2], [5]
Versi terdampak
Pengungkapan menyebut versi 0.3.9 hingga 0.5.5, termasuk kandidat rilis 0.5.6 dan cabang pengembangan, per 2026-10-07.[1], [2]
CWE-306: autentikasi tidak ada untuk fungsi kritis
Catatan CVE juga menetapkan CWE-306 karena ZeroMQ ROUTER tidak mengautentikasi peer. Ini merupakan kelemahan terpisah pada batas transport, berbeda dari rekonstruksi pickle yang tidak aman (CWE-502). Eksposur tetap memerlukan endpoint yang dapat dijangkau; bind localhost bawaan saja tidak membuatnya dapat diakses dari jarak jauh.[2]

Pemetaan kerangka kerja

  • Referensi CWE untuk kelemahan yang dijelaskan dalam panduan ini: CWE-306 CWE-502

Alur Serangan Langkah demi Langkah

Langkah 1

Deployment mengaktifkan transport multiproses

Masalah ini menyangkut mode multiproses/distribusi LMCache, bukan semua instalasi.[2], [1]

Langkah 2

Peer dapat menjangkau endpoint ZMQ

Catatan CVE menyebut localhost sebagai default; operator dapat mengatur --host yang dapat dirutekan. Keterjangkauan adalah prasyarat.[2], [5]

Langkah 3

Decoding memanggil pickle.loads

Ekstensi MessagePack kode 1 mencapai DeviceIPCWrapper.Deserialize, yang memanggil pickle.loads sebelum handler memeriksa jenis pesan.[2], [4], [3]

Langkah 4

Proses menangani objek yang dibangun ulang

Catatan menyebut eksekusi memakai hak proses LMCache; kontainer resmi berjalan sebagai root. Ini menjelaskan dampak, bukan membuktikan paparan deployment tertentu.[2], [3]

Kondisi deployment dan respons

KondisiPenilaian
Mode multiproses dinonaktifkanJalur CVE ini tidak aktif.
Mode multiproses hanya bind ke loopbackPeer jaringan jarak jauh seharusnya tidak dapat menjangkau endpoint; verifikasi jaringan host dan batas kepercayaan lokal.
Bind dapat dirutekan atau port cluster terbukaAnggap berpotensi dapat dijangkau; batasi akses segera dan periksa hak proses.
Versi terdampakPengungkapan menyebut versi 0.3.9 hingga 0.5.5, termasuk kandidat rilis 0.5.6 dan cabang pengembangan, per 2026-10-07.

Kode Sumber: Rentan vs Aman

Catatan CVE Program mengatribusikan CVE-2026-105192 kepada JFrog dan mendokumentasikan jalur ekstensi MessagePack → DeviceIPCWrapper.Deserialize → pickle.loads, bind localhost default, opsi --host yang dapat dirutekan, serta CVSS 9,8. Source upstream mengonfirmasi pemanggilan deserializer. Artikel ini tidak menyertakan pickle yang dipersenjatai dan tidak mengklaim patch vendor telah tersedia. Endpoint harus dapat dijangkau; bind lokal default saja tidak membuatnya dapat diakses dari jaringan jarak jauh. Contoh kode sementara menonaktifkan jalur decoding tersebut dan bukan patch LMCache siap pakai; evaluasi dampak operasional dan isolasi jaringan sambil menunggu perbaikan yang didukung.[2], [1], [3], [4], [5]

IMPLEMENTASI RENTAN
@staticmethod
def Deserialize(data: bytes) -> DeviceIPCWrapper:
    return pickle.loads(data)
PERBAIKAN AMAN & KUAT
@staticmethod
def Deserialize(data: bytes) -> DeviceIPCWrapper:
    # Mitigasi sementara fail-closed, bukan patch upstream.
    raise PermissionError("LMCache peer deserialization disabled pending vendor fix")

Daftar Periksa Penguatan Sistem Rekayasa

Sumber

← AI Security Directory →