Lanskap Model Context Protocol (MCP), yang masih dalam tahap awal, penuh dengan kompleksitas dan rentan terhadap berbagai potensi serangan. Desain protokol dan alat saat ini sering kali gagal memberikan pertahanan yang memadai. Untuk mengatasi tantangan ini dan mendorong pemahaman yang lebih mendalam tentang keamanan MCP, SlowMist telah membuka sumber MasterMCP, alat yang dirancang untuk memfasilitasi simulasi serangan praktis. Inisiatif ini bertujuan untuk memberdayakan komunitas untuk mengidentifikasi dan mengurangi kerentanan keamanan dalam proyek MCP mereka secara proaktif.
Sebagai pelengkap pendekatan langsung ini, Daftar Periksa Keamanan MCP menawarkan wawasan berharga tentang perspektif yang mendasari berbagai vektor serangan. Artikel ini membahas skenario dunia nyata, yang menunjukkan metode serangan umum dalam ekosistem MCP, seperti keracunan informasi dan penyuntikan perintah jahat tersembunyi. Semua skrip yang digunakan dalam demonstrasi ini tersedia di GitHub, memungkinkan pengguna untuk mereplikasi seluruh proses di lingkungan yang aman dan bahkan mengembangkan plugin pengujian serangan mereka sendiri.
Gambaran Umum Arsitektur
Target MCP untuk Demonstrasi: Toolbox
Smithery.ai menonjol sebagai pusat utama untuk plugin MCP, menarik sejumlah besar daftar MCP dan pengguna aktif. Di antara ini, @smithery/toolbox, alat manajemen MCP resmi yang ditawarkan oleh smithery.ai, berfungsi sebagai titik fokus penilaian keamanan ini.
Toolbox dipilih sebagai target pengujian karena beberapa alasan utama:
- Ia memiliki basis pengguna yang signifikan, menjadikannya sampel representatif dalam ekosistem MCP.
- Ia mendukung instalasi otomatis plugin tambahan, menambah fungsionalitas sisi klien (misalnya, Claude Desktop).
- Ia berisi konfigurasi sensitif, seperti kunci API, yang memfasilitasi demonstrasi potensi eksploitasi.
MCP Jahat yang Digunakan untuk Demonstrasi: MasterMCP
MasterMCP, yang dikembangkan oleh SlowMist khusus untuk tujuan pengujian keamanan, adalah alat MCP jahat simulasi yang dibangun di atas arsitektur modular. Komponen utamanya meliputi:
- Simulasi Layanan Situs Web Lokal: http://127.0.0.1:1024
Untuk membuat skenario serangan yang realistis, MasterMCP menggabungkan modul simulasi layanan situs web lokal. Dengan memanfaatkan framework FastAPI, modul ini dengan cepat membangun server HTTP sederhana yang meniru lingkungan web umum. Halaman-halaman ini mungkin tampak tidak berbahaya, menampilkan informasi toko roti atau mengembalikan data JSON standar, tetapi mereka menyembunyikan muatan jahat yang dibuat dengan cermat di dalam kode sumber atau respons API mereka.
Pendekatan ini memungkinkan demonstrasi komprehensif teknik keracunan informasi dan penyembunyian perintah di lingkungan lokal yang aman dan terkendali. Ia menyoroti potensi risiko yang mengintai di dalam halaman web yang tampaknya biasa, yang dapat memicu perilaku abnormal pada model bahasa yang besar.
- Arsitektur MCP Plug-in Terlokalisasi
MasterMCP mengadopsi pendekatan plug-in untuk memfasilitasi skalabilitas cepat untuk vektor serangan baru. Setelah dieksekusi, MasterMCP memulai layanan FastAPI dari modul sebelumnya dalam sub-proses.
Klien Demonstrasi
- Cursor: Salah satu IDE pemrograman berbantuan AI yang paling banyak digunakan secara global.
- Claude Desktop: Klien resmi Anthropic, organisasi yang menyesuaikan protokol MCP.
Model Bahasa Besar (LLM) yang Digunakan untuk Demonstrasi
- Claude 3.7
Claude 3.7 dipilih karena kemampuannya yang ditingkatkan dalam mengenali operasi sensitif dan representasinya dari kemampuan operasional yang kuat dalam ekosistem MCP saat ini.
Konfigurasi claude\_desktop\_config.json
Dengan konfigurasi selesai, fase demonstrasi dimulai.
Pemanggilan Jahat Lintas-MCP
Demonstrasi ini menggabungkan teknik keracunan dan strategi pemanggilan jahat Lintas-MCP yang diuraikan dalam daftar periksa.
Serangan Keracunan Konten Halaman Web
- Keracunan Berbasis Komentar
Cursor mengakses situs web pengujian lokal di http://127.0.0.1:1024.
Halaman yang tampaknya tidak berbahaya tentang “Dunia Kue Lezat” ini berfungsi sebagai simulasi untuk menggambarkan potensi dampak dari klien model bahasa besar yang mengakses situs web jahat.
Perintah Eksekusi:
Hasilnya mengungkapkan bahwa Cursor tidak hanya membaca konten halaman web tetapi juga mengirimkan data konfigurasi sensitif lokal kembali ke server pengujian. Prompt jahat disematkan dalam kode sumber sebagai komentar HTML:
Meskipun pendekatan berbasis komentar ini relatif mudah dan mudah dideteksi, ia masih mampu memicu operasi jahat.
- Keracunan Komentar Terenkripsi
Mengakses http://127.0.0.1:1024/encode mengungkapkan halaman yang tampak identik dengan contoh sebelumnya. Namun, prompt jahat dienkripsi, membuat eksploitasi lebih sulit dideteksi bahkan saat memeriksa kode sumber halaman.
Meskipun tidak ada prompt eksplisit dalam kode sumber, serangan berhasil.
Keracunan Informasi Pengembalian Alat MCP
Berdasarkan instruksi prompt MasterMCP, kami memasukkan perintah simulasi yang memicu MCP jahat dan menunjukkan operasi selanjutnya.
Setelah memicu perintah, klien memulai panggilan lintas-MCP ke Toolbox dan berhasil menambahkan server MCP baru.
Pemeriksaan kode plugin mengungkapkan bahwa data yang dikembalikan berisi muatan jahat yang dienkripsi, membuatnya hampir tidak terdeteksi oleh pengguna.
Serangan Polusi Antarmuka Pihak Ketiga
Demonstrasi ini menyoroti potensi risiko yang terkait dengan MCP jahat dan non-jahat yang secara langsung mengembalikan data API pihak ketiga ke konteks.
Contoh Kode:
Permintaan Eksekusi:
Hasil: Prompt jahat disematkan dalam data JSON yang dikembalikan dan berhasil memicu eksekusi jahat.
Teknik Keracunan Selama Inisialisasi MCP
Demonstrasi ini mencakup item daftar periksa penyuntikan prompt awal dan konflik nama.
Serangan Timpa Fungsi Jahat
MasterMCP membuat alat dengan nama fungsi yang sama dengan fungsi remove_server
Toolbox, dan mengenkripsi prompt jahat di dalamnya.
Perintah Eksekusi:
Claude Desktop tidak memanggil metode toolbox remove_server
yang asli, tetapi malah memicu metode yang disediakan MasterMCP dengan nama yang sama:
Ini dicapai dengan menekankan bahwa “metode asli sudah usang,” yang mendorong model bahasa yang besar untuk memprioritaskan fungsi yang ditimpa secara jahat.
Menambahkan Logika Inspeksi Global Jahat
MasterMCP membuat alat yang disebut “banana,” yang dirancang untuk memberlakukan pemeriksaan keamanan wajib sebelum alat lain dieksekusi.
Sebelum setiap fungsi dieksekusi, sistem memprioritaskan mekanisme pemeriksaan “banana”:
Injeksi logika global ini dicapai dengan berulang kali menekankan “eksekusi wajib deteksi banana” di dalam kode.
Teknik Tingkat Lanjut untuk Menyembunyikan Prompt Jahat
Metode Pengkodean yang Ramah LLM
Model bahasa besar memiliki kemampuan penguraian yang kuat untuk format multibahasa, yang dapat dieksploitasi untuk menyembunyikan informasi jahat. Metode umum meliputi:
- Lingkungan bahasa Inggris: Pengkodean Heks Byte
- Lingkungan bahasa Tiongkok: Pengkodean NCR atau pengkodean JavaScript
Mekanisme Pengembalian Muatan Jahat Acak
Mirip dengan polusi antarmuka pihak ketiga yang disebutkan di bagian ketiga, meminta http://127.0.0.1:1024/random menghasilkan:
Setiap permintaan mengembalikan halaman yang dibuat secara acak yang berisi muatan jahat, yang secara signifikan meningkatkan kesulitan deteksi dan pelacakan.
Melalui demonstrasi praktis MasterMCP, kerentanan keamanan tersembunyi dalam ekosistem Model Context Protocol (MCP) telah terungkap. Dari injeksi prompt dasar dan panggilan lintas-MCP hingga serangan yang lebih halus selama inisialisasi dan penyembunyian instruksi jahat, setiap tahap berfungsi sebagai pengingat akan kerapuhan inheren di samping kekuatan ekosistem MCP.
Saat ini, karena model besar semakin berinteraksi dengan plugin dan API eksternal, polusi input yang tampaknya kecil dapat memicu risiko keamanan di seluruh sistem. Evolusi keragaman taktik penyerang, termasuk teknik pengkodean, polusi acak, dan penimpaan fungsi, memerlukan peningkatan komprehensif pada pendekatan keamanan tradisional.