Agent stack kamu punya mata rantai lemah
Server MCP jahat bisa mencuri SSH key kamu tanpa pernah menulis satu instruksi jahat yang utuh. Grup riset ASSET membuktikannya: saat perintah pencurian diberikan ke model sekaligus, hampir semua model besar menolak. Pecah perintah yang sama jadi fragmen yang terlihat tak berbahaya, dan GPT-4o, Gemini 2.0 Flash, dan Llama 3.3 patuh di 100% kasus yang diuji.
Sementara itu, kebanyakan developer menambah satu server MCP baru ke agent-nya tiap minggu, menyalin baris config yang ditemukan di GitHub. Tiap server itu menyimpan sepotong akses kamu: API token, cloud key, service account. MCP itu berguna — tak ada yang membantah itu. Tapi server MCP sudah jadi mata rantai terlemah di seluruh agent stack.
Artikel ini membahas cara server MCP membocorkan rahasiamu tanpa ketahuan, serangan GhostSplice yang mengalahkan penolakan model dengan memecah instruksinya, dan pertahanan konkretnya, dari Cloudflare WriteGuard sampai aturan yang bisa kamu terapkan di setup kamu sendiri hari ini.
Apa isi sebenarnya server MCP
Server MCP adalah jembatan antara agent kamu dan tool luar: database, GitHub, Slack, cloud kamu. Untuk melakukan kerja jembatan itu, ia menyimpan apa pun yang perlu buat login sebagai kamu — token, API key, kredensial service account — dalam teks polos, di file config di disk kamu, biasanya tanpa enkripsi sama sekali.
Ada satu detail protokol yang penting untuk yang datang berikutnya. Saat agent konek ke server MCP, server itu mengirim balik daftar tool-nya, tiap tool dengan deskripsi teks bebas yang memberi tahu model kapan dan bagaimana memakainya. Deskripsi itu langsung masuk ke context model, dengan bobot yang sama seperti instruksi kamu sendiri, dan hasil yang dikembalikan tool juga masuk ke situ. Server MCP ngobrol nonstop sama agent kamu, dalam teks yang tak pernah dibaca ulang siapa pun. Itu persis yang bikin serangan GhostSplice mungkin terjadi.
Ekosistemnya juga meledak lebih cepat dari pengamanannya:
| Sinyal | Angka |
|---|---|
| Server di registry resmi MCP | 9.600+ |
| Pertumbuhan deployment server remote sejak Mei 2025 | 5× |
Siapa saja bisa menerbitkan server, tak ada review pusat, dan agent kamu percaya tiap satunya persis seperti tool resmi. NSA menerbitkan panduan keamanan khusus MCP di bulan Mei, menyatakan adopsi protokol ini lebih cepat dari pembangunan proteksinya. Saat badan intelijen menulis panduan soal tool dev favoritmu, itu jarang untuk memujimu.
Itulah situasinya: ribuan server, tanpa review, dan key kamu di tengah-tengahnya.
Dari mana rahasia itu bocor
Lubang pertama adalah kredensial yang disimpan dalam teks polos. The Hacker News menerbitkan rincian mekanisme kebocoran pada 17 Agustus, dan titik awalnya blak-blakan: token ditempel langsung ke string konfigurasi dan tetap terbaca di disk. Satu commit yang agak buru-buru sudah cukup untuk mendorong config kamu ke repo Git lengkap dengan key di dalamnya. Makin parah dengan yang disebut artikel itu sebagai sprawl: key yang sama terduplikasi di banyak file config, environment variable, dan salinan di dev, staging, dan production. Lama-lama tak ada yang tahu di mana rahasia itu berada, jadi tak ada yang merotasinya — dan key statis yang tak pernah dirotasi adalah key yang menunggu penyerangnya.
Lubang kedua adalah over-permissioning. Selama development kamu kasih server kamu hak akses luas untuk menghindari error otorisasi, dan hak akses luas itu ikut ke production tanpa diubah. Satu kompromi saja lalu membuka jauh lebih banyak dari yang benar-benar dibutuhkan pemakaian nyata.
Lubang ketiga adalah rantai pasok. CVE-2025-6514 menghantam mcp-remote, proxy OAuth yang diunduh lebih dari 400.000 kali, dan membuat server jahat memicu command injection di mesin pengguna — menjalankan kode dan kabur bawa kredensial. Satu paket npm populer, diinstal dengan satu baris, dan pintunya terbuka.
Lubang keempat yang paling licik: prompt injection. Agent membaca semua yang dibawa balik tool-nya — halaman web, tiket, dokumen internal. Kalau salah satunya berisi instruksi tersembunyi, agent bisa mengikutinya seolah itu dari kamu, lalu pakai tool sahnya untuk membocorkan apa yang harusnya dilindungi. Kebocoran itu tak lewat celah teknis apa pun; itu lewat kepolosan model.
Sebelum serangan canggih apa pun, kehidupan biasa server MCP — config teks polos, hak akses berlebih, dependency yang tak diperiksa, konten tak difilter — sudah membocorkan rahasiamu.
GhostSplice: serangan yang datang berkeping-keping
GhostSplice adalah nama yang diberikan grup riset ASSET untuk teknik yang membuat agent kamu sendiri menjalankan eksfiltrasinya, dengan kerja sama penuh. Prinsipnya muat dalam satu kalimat: alih-alih menulis perintah pencurian secara utuh, server jahat itu memecahnya, menaruh satu fragmen di deskripsi tool, dan satu lagi di hasil yang dikembalikan tool. Tiap bagian, dibaca sendiri, tampak tak berbahaya. Tapi agent menggabungkan semua yang masuk ke working context-nya: ia menyusun ulang instruksi utuh dan menjalankannya dengan itikad baik penuh — dari sudut pandangnya, ia cuma mengisi form yang diminta tool itu.
Angka hasil pengujiannya yang jadi cerita sebenarnya:
| Model | Instruksi satu blok | Instruksi terfragmentasi |
|---|---|---|
| GPT-4o | Menolak 100% | Patuh 100% |
| Gemini 2.0 Flash | Menolak 100% | Patuh 100% |
| Llama 3.3 | Menolak 100% | Patuh 100% |
| Claude Haiku 4.5 | Menolak lewat API | Patuh 100% di uji tiga bagian di dalam Cursor |
Detail soal Claude menghancurkan kesimpulan yang gampang: model yang sama bisa menolak di satu client dan bocor di client lain, tergantung proteksi yang ditambahkan atau tidak ditambahkan client itu.
Yang dicuri GhostSplice di pengujian: SSH key, secret environment, source code, data pelanggan. Peneliti bekerja di proyek terisolasi dengan key palsu, bukan korban sungguhan, tapi metodenya dipublikasikan dan bisa direproduksi.
GhostSplice bukan percobaan pertama. Lab yang sama merilis Ghostcommit di bulan Juni, serangan yang menyembunyikan instruksinya di file PNG yang dirujuk konvensi proyek, lalu meng-encode rahasia curian ke source code sebagai integer. Pemecahan instruksi adalah keluarga serangan yang mulai menetap, bukan keingintahuan yang terisolasi.
Dua hal untuk menjaga perspektif ini. Serangan ini punya dua prasyarat: server jahat itu sudah terpasang di agent kamu, dan agent punya akses baca ke file target. Itulah persis kenapa provenance sangat penting — dari mana server kamu berasal adalah garis pertahanan pertamamu. Dan ingat mekanismenya: alignment model tak melindungi kamu, karena serangan ini tak pernah meminta apa pun yang terlarang dalam satu bagian.
Shadow MCP: server yang tak pernah disetujui
GhostSplice mengasumsikan server jahat sudah terpasang. Tapi siapa yang menentukan apa yang terpasang? Di sebuah tim, jawaban jujurnya: tak ada yang tahu. Itulah masalah yang Cloudflare sebut shadow MCP: semua server yang developer sambungkan ke agent-nya tanpa review keamanan apa pun. Sampai baru-baru ini lalu lintas itu tak terlihat — request MCP tampak seperti panggilan HTTPS biasa.
Cloudflare mengubah itu dengan deteksi di level protokol. Sejak update spec-nya, tiap client MCP yang sesuai mengirim header MCP-Protocol-Version di request-nya, dan Gateway memeriksa header itu di semua trafik TLS yang didekripsinya. Tim keamanan kini bisa melihat tiap server MCP yang dipakai di perusahaan, dengan dashboard khusus: server unik, pengguna, volume request. Pendekatan header ini lebih baik dari filter nama domain, karena server MCP tak punya alasan untuk menamai dirinya mcp-sesuatu — protokolnya terdeteksi dari apa yang dikatakannya, bukan dari apa yang diklaimnya.
Tim juga bisa bertindak: selektor is_mcp memungkinkan kamu memblokir trafik MCP apa pun yang tak lewat portal yang disetujui. Portal adalah separuh lain dari setupnya — satu titik akses tunggal yang mengelompokkan server terverifikasi di balik autentikasi identitas.
Versi spec terbaru mendorong visibilitas lebih jauh. Header baru Mcp-Method dan Mcp-Name mengekspos operasi yang diminta dan tool yang dipanggil, tanpa firewall perlu membuka isi request-nya. Tim bisa membedakan agent yang membaca satu tiket dari agent yang menghapus lima puluh tiket, langsung di level jaringan.
Cloudflare memecah ini jadi dua kasus: shadow MCP murni, server yang tak pernah disetujui, dan portal bypass, server yang disetujui tapi diakses langsung tanpa lewat checkpoint. Keduanya diblokir dengan aturan dasar yang sama. Logikanya simpel: semua yang lewat portal itu diketahui dan tercatat, selain itu diblokir. Bagi perusahaan, itu artinya akhir dari server MCP hantu yang dipasang malam Jumat.
WriteGuard: izin tool per tool
Bahkan server yang disetujui pun bisa berbahaya, karena agent mewarisi semua hak pengguna sekaligus. Di situlah WriteGuard hadir, yang baru saja dibuka Cloudflare di private beta. Idenya: klasifikasi tiap tool dari tiap server MCP ke tier risiko, dan terapkan kebijakan berbeda per tier.
- Sebuah read lolos tanpa hambatan.
- Sebuah write terkontrol, seperti posting komentar, lolos tapi diperkaya: aksinya ditandatangani sebagai berasal dari agent, atas nama manusia tertentu, dan event audit masuk ke log pusat.
- Sebuah aksi kritis — merge kode, deploy ke production, mass delete — diblokir sebelum server sempat memprosesnya.
Contoh GitLab di post Cloudflare menunjukkan gradasinya: membaca merge request lolos, komentar di situ lolos dengan atribusi, dan merge-nya ditolak sampai manusia melakukannya sendiri.
Bagian paling menarik adalah model identitasnya. Agent tetap memakai izin karyawan yang dilayaninya, tapi tiap write kini membawa dua tanda tangan: orangnya, dan sesi agent yang bertindak untuknya. Sistem hilir akhirnya bisa membedakan perubahan buatan tangan dari yang dibuat mesin, dan auditnya dikirim asinkron ke log pusat, bersih dari data sensitif. Sampai sekarang agent tak bisa dibedakan dari manusianya di log; untuk audit insiden itu mengubah segalanya — satu query memberi tahu apakah merge mencurigakan hari Selasa berasal dari rekan kerja yang terburu-buru atau sesi agent yang jadi kreatif.
Cloudflare tak menjual teori; mereka menjelaskan pemakaian internal mereka sendiri: portal mereka menyambungkan 27 server MCP, naik dari 13 di bulan April. Angka itu memberi tahu cerita sebenarnya — bahkan di Cloudflare sendiri, jumlah server dua kali lipat dalam beberapa bulan, dan itulah persis kenapa kontrol per-tool jadi perlu. Arah yang diambil industri ini jelas: berhenti percaya seluruh server, dan tentukan aksi per aksi apa yang boleh dilakukan agent.
Batasannya: apa yang tak diperbaiki semua ini
Batasannya perlu dikatakan secara jelas. WriteGuard masih private beta di balik form pendaftaran, dan deteksi Gateway butuh deployment Cloudflare Zero Trust dengan TLS inspection aktif: bagi developer solo atau tim kecil, itu bukan infrastruktur kamu. Bahkan di perusahaan, deteksinya cuma melihat trafik jaringan yang didekripsinya — server MCP lokal yang berjalan lewat stdio, dijalankan sebagai proses biasa di mesinmu, tetap tak terlihat oleh Gateway. Yang mana persis cara sebagian besar server yang diinstal developer benar-benar berjalan.
Yang terpenting, tak satu pun dari tool ini memperbaiki mekanisme inti yang dibongkar GhostSplice: selama agent bebas menggabungkan apa pun yang masuk ke context-nya, fragmen tak berbahaya akan terus tersusun ulang jadi instruksi jahat. Peneliti ASSET bilang sendiri: solusinya butuh memperlakukan output tool sebagai data, bukan sebagai instruksi, dan pemisahan itu belum ada secara native di agent.
Sementara itu rekomendasi mereka bermuara ke tiga langkah: hentikan nilai keluaran satu tool dari masuk begitu saja ke argumen tool lain tanpa diperiksa, pertahankan kemampuan untuk menolak tiap pemanggilan tool secara manual, dan anggap tiap anotasi dari server yang tak diperiksa sebagai berbahaya secara default. Tak satu pun dari ketiganya otomatis hari ini: kamu yang menerapkannya, atau tak ada yang melakukannya. Anggap semua yang ditawarkan Cloudflare di sini sebagai sabuk pengaman, bukan rem — ia membatasi kerusakan, ia tak mencegah tabrakan.
Yang akan kami terapkan di setup kami sendiri
Yang harus dilakukan, mulai hari ini:
- Inventaris. Daftar server MCP yang benar-benar terpasang di agent kamu, dan buang yang tak lagi kamu pakai.
- Urutkan berdasarkan asal-usul. Server resmi dari vendor terkenal, ya. Repo GitHub 40 bintang yang ditemukan di sebuah thread, tidak — sampai kamu membaca apa yang dilakukannya dengan datamu.
- Batasi hak aksesnya. Kasih tiap server token khusus dengan scope minimal, jangan pernah master key kamu, dan rotasi token itu seperti kamu lakukan untuk sistem production mana pun.
- Pegang kendali aksi sensitif. Agent yang menulis, merge, atau menghapus harus kembali lewat kamu — versi manual dari apa yang diindustrialisasi WriteGuard.
- Terapkan aturan GhostSplice sehari-hari. Saat agent kamu merangkai aksi tool yang tak kamu minta, hentikan dan baca apa yang sudah dikatakan server itu.
Tiap client agent bisa menampilkan daftar server dan tool yang tersambung, dan daftar itu cuma butuh tiga puluh detik untuk dibaca. Tiga puluh detik itu rasio waktu-ke-keamanan terbaik di seluruh setup kamu.
Kalau kamu berada di sebuah perusahaan, tambahkan lapisan jaringan: deteksi MCP Gateway dan portal-portalnya layak untuk diterapkan, karena shadow MCP sudah ada di organisasimu, entah kamu melihatnya atau tidak.
MCP bukan masalahnya — kecepatan kita menyerahkan key kita yang jadi masalah.
AIDive