Ollama selama ini diposisikan sebagai solusi private AI inference untuk organisasi yang ingin menjalankan LLM secara lokal tanpa bergantung pada cloud provider seperti OpenAI atau Anthropic. Namun CVE-2026-7482 memperlihatkan paradoks yang cukup serius dalam ekosistem local LLM: sistem yang dibangun untuk menjaga privasi justru dapat membocorkan seluruh heap memory proses inference hanya melalui manipulasi file model.
Kerentanan ini bukan bug parser biasa. Dampaknya jauh lebih dekat ke kategori cross-session memory disclosure karena data yang bocor bukan hanya metadata model, tetapi juga prompt pengguna lain, system prompt internal, hingga environment variables dari host yang menjalankan Ollama. Dalam konteks enterprise AI deployment, ini berarti rahasia organisasi dapat terekspos tanpa perlu autentikasi sama sekali.
Secara teknis, akar masalahnya berada pada kombinasi tiga faktor: parsing file GGUF yang terlalu percaya pada metadata tensor, penggunaan package "unsafe" di Go, dan proses quantization pipeline yang membaca data tensor berdasarkan nilai shape tanpa memverifikasi ukuran buffer sebenarnya.
Baca Juga Tentang: Memory Corruption (dirty frag)
Arsitektur eksploitasi dimulai dari endpoint "/api/blobs/sha256:[digest]", yang memungkinkan attacker mengunggah file GGUF kustom. Setelah file tersedia di server, attacker menggunakan "/api/create" untuk membangun model baru dari file tersebut. Pada tahap ini, Ollama melakukan parsing tensor dan memproses quantization apabila parameter "quantize" diberikan.
Masalah muncul saat fungsi "WriteTo()" memanggil "ConvertToF32()". Fungsi ini menggunakan nilai Elements() dari tensor shape untuk menentukan berapa banyak data yang harus dibaca dari buffer tensor asli. Di sinilah validasi ukuran buffer gagal total.
Tensor dalam GGUF bersifat deklaratif. Artinya attacker bebas menentukan shape seperti "(1000000)" walaupun data asli hanya memiliki beberapa byte. Ketika "ggml_fp16_to_fp32_row()" melakukan loop konversi berdasarkan jumlah elemen tersebut, proses akan membaca melewati batas heap buffer asli (out-of-bounds heap read).
Pada bahasa seperti C atau C++, pola ini sudah lama dikenal sebagai primitive memory disclosure klasik. Yang menarik, kasus ini terjadi di Go bahasa yang secara umum dianggap memory-safe. Namun penggunaan package unsafe secara efektif menonaktifkan proteksi runtime Go dan membawa kembali risiko low-level memory corruption ala native programming.
Yang membuat vulnerability ini sangat berbahaya adalah bagaimana Ollama memproses hasil pembacaan tersebut. Data yang telah tercampur dengan isi heap tidak langsung dibuang atau menyebabkan panic. Sebaliknya, data tersebut diteruskan ke pipeline quantization lalu ditulis ulang ke file model baru.
Dengan kata lain, heap memory secara literal “diserialisasi” menjadi model AI.
Teknik eksploitasi paling efektif memanfaatkan konversi lossless dari F16 ke F32. Dalam kondisi normal, quantization biasanya merusak presisi data sehingga memory leak menjadi sulit dibaca. Namun attacker dapat menyetel tensor source sebagai F16 lalu meminta output F32 melalui parameter quantize.
Karena F16 -- F32 tidak bersifat lossy, data heap yang terbaca di luar buffer tetap utuh ketika ditulis ke disk. Ini bukan hanya bypass terhadap corruption akibat quantization, tetapi juga contoh bagaimana pipeline optimisasi AI dapat berubah menjadi mekanisme exfiltration.
Dari perspektif offensive security, ini adalah primitive yang sangat kuat karena:
- Tidak membutuhkan autentikasi
- Tidak membutuhkan RCE
- Tidak membutuhkan filesystem access
- Tidak membutuhkan crash
- Dapat dilakukan melalui API normal
Eksfiltrasi data kemudian dilakukan melalui endpoint /api/push. Secara desain, endpoint ini digunakan untuk mengunggah model ke registry eksternal. Namun implementasi "PushHandler" memperbolehkan nama model berbentuk URI penuh seperti:
"http://attacker-server.com/namespace/model:tag"
Ketika model hasil memory leak dipush menggunakan nama tersebut, Ollama otomatis mengirim seluruh model ke server attacker. Ini kemudian mengubah vulnerability dari sekadar local memory disclosure menjadi remote unauthenticated data exfiltration pipeline.
Secara praktis, alur serangan hanya membutuhkan tiga request:
- Upload GGUF berbahaya
- Trigger "/api/create"
- Push hasil model ke server attacker
Dalam skenario enterprise, dampaknya bisa jauh lebih besar dibanding sekadar kebocoran prompt pengguna. Banyak deployment Ollama modern dijalankan sebagai bagian dari AI gateway internal, agentic workflow, atau automation stack. Environment variable yang bocor dapat berisi:
- API key cloud provider
- Credential database
- Access token GitHub
- Internal endpoint
- Prompt rahasia agent AI
- Instruction policy model internal
Yang menarik, vulnerability ini juga memperlihatkan masalah struktural yang mulai muncul di ekosistem local AI infrastructure: parser model AI kini menjadi attack surface baru.
Sebelumnya banyak organisasi menganggap model AI hanyalah “data”. Namun format seperti GGUF sebenarnya lebih dekat ke executable container dibanding file statis biasa. Ia memiliki struktur kompleks, metadata, tensor layout, conversion pipeline, dan parser khusus yang berjalan dengan hak akses proses inference.
Artinya supply chain AI kini tidak hanya tentang poisoned model atau malicious weights, tetapi juga malformed model file yang dapat menyerang runtime inference engine itu sendiri.
Bagi pentester, CVE-2026-7482 membuka area pengujian baru pada AI stack:
- Validasi parser model
- Unsafe memory operation pada inference engine
- Quantization pipeline abuse
- Model registry abuse
- Cross-tenant prompt leakage
Sedangkan bagi developer dan security engineer, kasus ini menunjukkan bahwa “memory-safe language” bukan jaminan keamanan ketika unsafe primitive digunakan tanpa boundary validation ketat.
Mitigasi utama seharusnya dilakukan pada beberapa layer sekaligus.
Pertama, Ollama harus memvalidasi bahwa ukuran tensor aktual sesuai dengan jumlah elemen yang dideklarasikan dalam shape tensor sebelum melakukan konversi. Nilai "Elements()" tidak boleh dipercaya begitu saja karena seluruh metadata GGUF bersifat attacker-controlled.
Kedua, endpoint "/api/push" seharusnya membatasi registry tujuan melalui allowlist atau memblok URI arbitrary sepenuhnya. Mengizinkan user menentukan destination URI secara bebas menciptakan kanal exfiltration internal yang sangat berbahaya.
Ketiga, deployment Ollama sebaiknya dipisahkan dari environment sensitif. Menjalankan inference engine dengan environment variable berisi credential produksi memperbesar blast radius ketika memory disclosure terjadi.
Selain itu, organisasi yang menggunakan Ollama secara multi-user perlu memahami bahwa prompt isolation tidak benar-benar aman jika seluruh proses inference berbagi heap memory yang sama. Dalam praktiknya, satu user dapat membaca konteks user lain hanya melalui model file berbahaya.
Kasus CVE-2026-7482 kemungkinan akan menjadi referensi penting ke depan karena memperlihatkan bahwa attack surface AI tidak lagi terbatas pada prompt injection atau jailbreak. Infrastructure layer dari local LLM runtime kini mulai memasuki kategori eksploitasi low-level yang sebelumnya lebih umum ditemukan pada browser engine, hypervisor, atau image parser.
Benediktus Sava – Security Researcher
Sumber:
.png)