Seorang penyelidik keselamatan yang mengimbas 24 projek pelayan MCP (Model-Control-Protocol) sumber terbuka telah mendedahkan satu kelemahan suntikan arahan (command-injection) sandbox yang tunggal tetapi teruk, dengan skor 9.8 pada skala CVSS. Pepijat tersebut wujud dalam AgenticX, sebuah rangka kerja ejen AI peringkat pertengahan, dan membolehkan penyerang menyuntik sebarang arahan shell ke dalam bekas Docker yang menjalankan pelayan tersebut.

Mengapa pelayan MCP penting

MCP adalah "gam" yang membolehkan ejen AI autonomi berkomunikasi dengan alatan luaran—fail, pangkalan data, pelayar, dan sebagainya. Pembangun menyematkan pelayan MCP dalam aplikasi mereka untuk memberikan model bahasa keupayaan untuk membaca, menulis, dan bertindak ke atas sumber dunia nyata. Protokol itu sendiri adalah ringan dan diterima pakai secara meluas, tetapi penyelenggara setiap projek bertanggungjawab untuk mengamankan kod di sekelilingnya.

Pelaksanaan MCP berskala besar seperti Cline atau Aider sudah pun menerima audit berkala dan mempunyai proses keselamatan yang matang. 24 projek yang diperiksa di sini berada dalam julat "peringkat pertengahan" di GitHub, dengan antara 100 hingga 1,000 bintang. Repositori tersebut sering mengutamakan penyampaian ciri dengan pantas berbanding kod yang diperkukuh, sekali gus mewujudkan titik buta bagi pengguna yang menganggap mana-mana pelayan MCP sumber terbuka adalah selamat secara lalai.

Imbasan tersebut

Penyelidik tersebut membina pengimbas yang mencari lima corak serangan aplikasi web klasik:

  • Command injection
  • Path traversal
  • Server-Side Request Forgery (SSRF)
  • SQL injection
  • Sandbox escape

Menjalankan pengimbas tersebut merentasi 5,911 fail sumber telah menghasilkan 94 amaran awal. Selepas triaj manual, hanya satu amaran yang terbukti sebagai kerentanan sebenar.

Di sebalik pepijat AgenticX

AgenticX membina arahan shell dengan melakukan interpolasi rentetan yang dibekalkan pengguna ke dalam f-string Python, kemudian menghantar hasilnya secara terus ke shell bekas tersebut. Tiada pengesahan atau pembungkusan (quoting) laluan fail dilakukan. Oleh itu, prom yang berniat jahat boleh menyuntik tanda koma bertitik (semicolon) atau metakarakter shell yang lain, menyebabkan bekas tersebut melaksanakan sebarang arahan yang dipilih oleh penyerang.

Penyelidik tersebut menampal (patch) kod tersebut dengan:

  1. Menggunakan shlex.quote() untuk melarikan (escape) sebarang laluan yang dibekalkan oleh model bahasa dengan selamat.
  2. Menambah semakan eksplisit untuk corak path-traversal (../) sebelum membina arahan tersebut.

Menjalankan semula pengimbas selepas pembaikan menunjukkan tahap risiko menurun secara drastik, mengesahkan bahawa mitigasi tersebut menangani punca utama.

Siapa yang menang, siapa yang kalah

  • Pembangun AI yang menyematkan pelayan MCP ke dalam produk mereka kini mempunyai contoh konkrit tentang bagaimana satu langkah sanitasi yang tertinggal boleh merosakkan keseluruhan rantaian keselamatan. Anggap setiap parameter yang datang daripada model bahasa sebagai input yang tidak dipercayai, sama seperti anda mengendalikan sebarang muatan (payload) API luaran.

Sisi cerita yang lain

Penyelidik tersebut menegaskan bahawa protokol MCP itu sendiri kekal kukuh. Kelemahan tersebut bukanlah kelemahan reka bentuk dalam format wayar (wire format), sebaliknya ia adalah kecuaian pengekodan dalam pelaksanaan tertentu. Projek yang lebih besar dan telah diaudit dengan baik sudah pun menangani isu yang serupa, dan komuniti sumber terbuka boleh belajar daripada tampalan AgenticX. Walau bagaimanapun, insiden ini menunjukkan bahawa projek "peringkat pertengahan" boleh menyimpan pepijat berimpak tinggi walaupun mempunyai jumlah bintang yang sederhana.

Kesimpulan

Satu f-string yang tidak diperiksa dalam AgenticX telah menukarkan keseluruhan pelayan MCP menjadi pelancar untuk pelaksanaan kod rawak. Episod ini membuktikan bahawa keselamatan ekosistem ejen AI kurang bergantung pada protokol dan lebih bergantung pada pelaksanaan yang berdisiplin. Pembangun mesti menganggap setiap parameter yang dijana LLM sebagai ancaman, platform harus menguatkuasakan perlindungan masa larian (runtime safeguards), dan alatan keselamatan perlu berkembang untuk memahami rantaian kepercayaan unik yang dicipta oleh ejen AI.

Sumber: dev.to/easterndev/i-scanned-24-mcp-server-projects-and-found-a-real-sandbox-command-injection-cvss-98-4k9h