Amankan Sistem MCP Anda: 11 Risiko Umum dan Cara Menangkalnya

Panduan ini menjelaskan keamanan MCP, mencakup 11 risiko umum bagi sistem MCP, mulai dari injeksi prompt tidak langsung hingga penyusupan server lokal, serta langkah-langkah praktis yang membantu melindungi dari masing-masing risiko tersebut.

Diagram of how MCP works: the MCP host (the AI app) sends tool requests through an MCP client to an MCP server, which offers its tools and returns results to the host.

Risiko MCP secara umum terbagi menjadi tiga kategori: manipulasi LLM, keamanan data dan akses, serta kerentanan infrastruktur.

Karena server MCP sering kali menyediakan akses ke berbagai sistem internal, potensi risiko keamanannya tinggi. Namun, kemungkinan terjadinya sangat bergantung pada konfigurasinya.

Ada banyak langkah yang dapat diambil oleh individu dan perusahaan untuk memastikan sistem mereka terlindungi, dan protokol keamanan harus selalu sebanding dengan kemampuan serta data yang mungkin diekspos oleh server MCP yang terhubung.

Apa itu MCP dan keamanan MCP?

Model Context Protocol (MCP) adalah standar terbuka yang dibuat oleh Anthropic untuk menghubungkan aplikasi berbasis LLM (atau host) ke sistem eksternal.

Ada tiga komponen inti dalam sistem MCP: host, klien, dan server. Host, yang sering kali berupa asisten AI, terhubung ke server MCP eksternal melalui klien. Host kemudian dapat mengirim permintaan untuk menjalankan fungsionalitas eksternal (alat), atau mengambil data (sumber daya) maupun prompt untuk ditambahkan ke jendela konteks LLM.

Keamanan MCP mengacu pada protokol yang melindungi koneksi dan komponen dalam sistem MCP. Ada beberapa tantangan utama yang khas pada MCP, termasuk fakta bahwa aplikasi AI sering kali memiliki kemampuan agentik dan instruksi berbahaya dapat disisipkan dalam pesan.

Masalah yang sudah lama dikenal dan tidak khusus untuk MCP, seperti injeksi prompt, autentikasi yang lemah, dan integrasi pihak ketiga yang tidak aman, juga menimbulkan persoalan. Seperti sistem komputer lainnya, MCP mengandalkan perpaduan protokol prosedural, seperti hanya menggunakan server tepercaya, dan kontrol teknis, seperti gateway API, untuk pengamanan.

Seberapa serius ancaman MCP?

MCP dengan cepat menjadi teknologi LLM yang populer, dan banyak organisasi serta aplikasi konsumen menggunakannya. Karena server MCP adalah program yang ditulis dalam kode, server tersebut memiliki kerentanan seperti aplikasi lainnya.

Namun, jika organisasi menggunakan MCP dalam penerapan yang terkendali, MCP umumnya aman. Ada perbedaan yang sangat besar antara membangun sistem dengan server tepercaya dan izin yang terverifikasi, dan menghubungkan agen otonom ke belasan server yang belum diperiksa.

Ancaman #1: Injeksi prompt tidak langsung

Penyerang dapat menempatkan instruksi yang ditujukan untuk LLM di dalam dokumen, halaman web, atau output alat yang dikembalikan oleh server MCP. Jika host menambahkan materi ini ke jendela konteks, ada kemungkinan LLM akan mengiranya sebagai instruksi yang sah.

Terlebih lagi, instruksi ini mungkin tampak wajar di permukaan. Misalnya, tiket dukungan yang diambil mungkin menyuruh LLM untuk mengekspor catatan pelanggan yang sensitif sebelum menghasilkan jawaban.

Cara melindungi dari injeksi prompt tidak langsung

Injeksi prompt umumnya harus ditangani di tingkat host. Konten eksternal harus diberi label tidak tepercaya, dan permintaan informasi sensitif harus memerlukan persetujuan yang diberikan secara sadar oleh manusia yang terlibat dalam proses (human in the loop). Pengujian keamanan yang melibatkan pemanggilan dokumen atau data berbahaya untuk melihat respons host dan LLM juga dapat membantu.

Ancaman #2: Peracunan alat dan rug pull

Dalam serangan peracunan alat, kode berbahaya ditambahkan ke deskripsi atau skema alat MCP. Hal ini berpotensi memengaruhi LLM pada fase penemuan, saat MCP pertama kali mengekspos alat yang tersedia.

Rug pull adalah jenis khusus peracunan alat yang mengubah metadata yang telah disetujui. Bentuk peracunan alat ini dapat mengubah cara model menggunakan alat tepercaya, alih-alih memanggil alat berbahaya secara langsung.

Cara melindungi dari peracunan alat dan rug pull

Host harus memeriksa definisi lengkap setiap alat sebelum menggunakannya dan membandingkannya dengan daftar alat tepercaya yang telah disetujui, sehingga setiap perubahan dapat terdeteksi. Pemeriksaan parameter dapat membantu mengidentifikasi potensi kemampuan berbahaya dan menandainya.

Ancaman #3: Izin yang berlebihan

Pengguna sering kali memberikan izin kepada server MCP dan LLM yang terhubung (melalui host) melebihi yang diperlukan untuk suatu tugas. Misalnya, izin tulis padahal akses hanya-baca sudah cukup, atau akses penuh ke sistem file internal (seperti Google Drive).

Perluasan izin yang berlebihan ini dapat memperluas cakupan dampak kerentanan lain, seperti panggilan alat berbahaya. Izin sering kali “menumpuk” seiring pengguna memberikan hak istimewa dalam pekerjaan sehari-hari dengan alat AI di perusahaan (akumulasi hak istimewa).

Cara melindungi dari izin yang berlebihan

Cara paling langsung untuk melindungi dari masalah ini adalah membatasi izin dan cakupan OAuth (baca, tulis, akses penuh, dll.). Persetujuan pengguna, terutama untuk operasi sensitif, merupakan bagian penting dari hal ini, tetapi izin juga harus dikendalikan di tingkat sistem (sistem operasi, host MCP, dan server).

Ancaman #4: Autentikasi dan otorisasi yang lemah

Autentikasi memverifikasi identitas pengguna atau aplikasi yang terhubung ke server MCP. Otorisasi menentukan alat dan sumber daya mana yang dapat mereka akses.

Server MCP yang dikonfigurasi dengan buruk dapat menerima permintaan atau token tanpa mengautentikasi pengguna dengan benar atau menerapkan pembatasan akses. Selain itu, kredensial yang dicuri dapat memungkinkan pihak jahat memperoleh akses jika validasinya lemah.

Cara melindungi dari autentikasi dan otorisasi yang lemah

Autentikasi berbasis OAuth untuk server MCP jarak jauh, token berumur pendek, dan kontrol akses berbasis peran (RBAS) merupakan langkah-langkah yang membantu memitigasi otorisasi yang lemah. Akses berbasis peran bermanfaat karena mencegah pengguna mengakses data dan alat di luar izin mereka, bahkan jika server itu sendiri memiliki akses.

Ancaman #5: Kebocoran dan penyalahgunaan kredensial

Server MCP secara rutin menggunakan kredensial seperti kunci API dan token akses OAuth untuk terhubung ke layanan eksternal. Jika kredensial ini terekspos atau disalahgunakan, penyerang dapat memperoleh akses ke data dan fungsionalitas yang sensitif.

Salah satu contohnya adalah token passthrough, yaitu ketika server MCP meneruskan token akses ke layanan lain tanpa memverifikasi bahwa token tersebut memang ditujukan untuk layanan penerima. Hal ini pada gilirannya dapat mengakibatkan kebocoran jika layanan penerima memiliki perlindungan yang tidak memadai.

Cara melindungi dari kebocoran dan penyalahgunaan kredensial

Token berumur pendek dengan cakupan sempit serta rotasi kredensial efektif untuk membatasi sejauh mana data yang bocor dapat digunakan oleh pihak jahat. Kunci API dan kredensial harus selalu disimpan dengan aman menggunakan pengelola rahasia.

Ancaman #6: Serangan confused deputy

Serangan confused deputy terjadi ketika penyerang mengelabui aplikasi tepercaya agar menggunakan izinnya untuk melakukan tindakan yang tidak diotorisasi oleh pengguna yang sah. Dalam hal ini, server MCP berperan sebagai “deputy” tersebut.

Penyerang akan mengeksploitasi kerentanan server MCP (seperti verifikasi OAuth yang lemah) untuk menjalankan proses berbahaya, seperti panggilan alat atau pengambilan data.

Cara melindungi dari serangan confused deputy

Validasi otorisasi, yaitu memverifikasi bahwa setiap panggilan alat berasal dari pengguna tertentu, membantu membatasi serangan confused deputy. Selain itu, tindakan sensitif, seperti ekspor data, harus memerlukan otorisasi eksplisit.

Ancaman #7: Server berbahaya dan dependensi yang disusupi

Server MCP dapat mengandung kode berbahaya (pada dasarnya server MCP adalah program eksternal) atau bergantung pada dependensi yang disusupi, seperti pustaka pihak ketiga. Ini adalah masalah rantai pasokan perangkat lunak, bukan masalah yang khas pada MCP.

Salah satu cara sederhana hal ini dapat terjadi adalah jika penyerang mendistribusikan integrasi yang tampak sah. Setelah disiapkan, integrasi tersebut dapat mencuri dan menggunakan kembali kredensial, mengakses data sensitif, dan menjalankan operasi yang tidak sah.

Cara melindungi dari server berbahaya dan dependensi yang disusupi

Instal server MCP hanya dari sumber yang tepercaya dan telah diperiksa. Jika memungkinkan, tinjau kodenya, dan selalu periksa setiap dependensi eksternal. Pastikan server diperbarui dan di-patch secara berkala.

Ancaman #8: Pemalsuan permintaan sisi server (SSRF)

Pemalsuan permintaan sisi server (SSRF) terjadi ketika penyerang mengelabui server MCP agar mengirim permintaan jaringan ke alamat internal yang tidak ingin diakses oleh pengguna.

Hal ini dapat terjadi ketika server MCP mengekspos alat yang mengambil informasi dari URL. Jika penyerang dapat memengaruhi parameter URL, mereka dapat mengubahnya ke alamat jaringan yang mereka inginkan, seperti API internal atau layanan cloud. Hal ini dapat mengakibatkan data sensitif diambil dan berpotensi dapat diakses

Cara melindungi dari pemalsuan permintaan sisi server (SSRF)

Server MCP harus selalu memvalidasi URL, memblokir akses ke alamat jaringan internal yang dibatasi, dan mencegah akses jaringan keluar. Pengalihan juga harus mengikuti protokol ini.

Ancaman #9: Pembajakan sesi

Pembajakan sesi terjadi ketika penyerang mengambil alih koneksi aktif antara klien MCP dan server.

Misalnya, penyerang dapat mencuri pengenal sesi dari aplikasi MCP yang tidak diamankan dengan baik (misalnya, host atau server). Jika server MCP menerima pengenal ini, penyerang berpotensi memanggil alat dengan izin sah milik pengguna.

Cara melindungi dari

Risiko pembajakan sesi dapat dikurangi dengan verifikasi identitas yang ketat di semua aplikasi dalam sistem MCP. Enkripsi antara klien MCP dan server jarak jauh juga penting untuk mencegah pengenal sesi terungkap.

Ancaman #10: Serangan mix-up

Dalam serangan mix-up, penyerang mengelabui klien MCP agar mengirim kode otorisasi ke server otorisasi berbahaya yang berada di antara klien dan server MCP. Server otorisasi adalah aplikasi yang menerbitkan token akses OAuth setelah memeriksa bahwa akses yang diminta telah diotorisasi.

Jika host MCP terhubung ke beberapa layanan yang masing-masing menggunakan server otorisasi berbeda, penyerang berpotensi mengendalikan salah satunya (mungkin dengan mendaftarkan layanan berbahaya) dan menyebabkan klien mengirim kode otorisasi yang diterbitkan oleh server sah ke server berbahaya tersebut. Kekeliruan ini dapat memungkinkan penyerang menyamar sebagai aplikasi yang diotorisasi dan memperoleh akses ke layanan yang dilindungi.

Cara melindungi dari serangan mix-up

Klien MCP harus memverifikasi identitas server otorisasi selama proses OAuth. Secara khusus, klien harus mencocokkan pengenal penerbit (iss) server dengan identitas yang diharapkan dan menolaknya jika tidak cocok.

Ancaman #11: Penyusupan server MCP lokal

Banyak server MCP berjalan di mesin lokal pengguna. Pengguna mungkin menginstal server dari pihak ketiga atau membangunnya sendiri. Jika penyerang dapat menyusupi server MCP lokal ini, mereka berpotensi memperoleh akses ke sebagian besar sistem lokal.

Ada berbagai cara penyerang dapat memperoleh akses. Mereka dapat mendistribusikan server berbahaya yang disamarkan sebagai integrasi yang sah, memodifikasi konfigurasi host MCP sehingga host menjalankan perintah berbahaya, atau mengakses server MCP yang berjalan di lingkungan dengan kontrol keamanan yang tidak memadai, misalnya melalui DNS rebinding, yang mengelabui browser agar mengirim permintaan ke layanan localhost.

Cara melindungi dari penyusupan server MCP lokal

Penggunaan kotak pasir (sandboxing) dan protokol persetujuan yang ketat penting saat menggunakan server MCP lokal. Server MCP hanya boleh diinstal dari penyedia tepercaya, dan izin sistem operasi harus membatasi direktori mana saja yang dapat diaksesnya.

Kerentanan MCP sering kali merupakan ancaman lama dalam wujud baru

Kerentanan MCP sering kali berasal dari penerapan baru atas risiko dan metodologi serangan yang sudah dikenal. MCP menghadirkan cara-cara baru bagi penyerang untuk mengeksploitasi kerentanan ini melalui interaksi antara LLM, server MCP, dan layanan eksternal.

Tentu saja, ancaman yang khusus untuk MCP memang ada. Namun, perlu diingat bahwa protokol keamanan standar, seperti menerapkan otorisasi yang ketat, menggunakan penyedia tepercaya, dan mewaspadai injeksi prompt, akan sangat membantu dalam melindungi implementasi MCP apa pun.