
15,465 Server MCP Tanpa Kawalan Memadai
15,465 Server MCP Tanpa Kawalan Memadai
MCP sepatutnya menjadi USB-C untuk AI: satu standard untuk menyambungkan model, agen dan IDE kepada tools serta data. Protokolnya berjaya. Ribuan developer membina server, dan syarikat menyambungkannya terus ke workflow agen. Apa yang tidak muncul ialah bahagian yang biasanya datang bersama pertumbuhan — seseorang yang menjaga pintu.
OX Security Research menerbitkan kajian ekosistem pada 24 September 2026, menganalisis 15,465 server MCP awam dan mengecilkannya kepada 5,095 hostname unik untuk analisis infrastruktur. Angka besarnya senang difahami. Yang tidak senang ialah apa yang hostname itu tunjukkan.
Pasaran tanpa penjaga pintu
Pada 2012, Google menjalankan Bouncer, pengimbas automatik yang memeriksa aplikasi Android daripada malware sebelum sampai kepada pengguna. Ia tidak sempurna — penyelidik berjaya menyeludup malware melepasi pengimbas itu — tetapi ia wujud. Pasaran MCP tiada yang setara. Sesiapa sahaja boleh menulis server, push, dan publish.
Penyelidik OX berhujah semakan pun tidak akan menutup jurang itu. Server MCP remote boleh menjalankan kod backend yang berbeza sama sekali daripada apa yang ditunjukkan oleh repo awamnya. Semakan kod memberitahu anda apa yang developer terbitkan, bukan apa yang server itu jalankan sebenarnya. Pasukan ini pernah membentangkan "In GitHub We Trust: 10 Ways You Can Get Pwned" di RSAC dan OWASP, dan mereka nampak kepercayaan berlebihan yang sama berulang di sini. Jika anda mahu mekanik bagaimana kepercayaan itu dieksploitasi, artikel saya sebelum ini tentang MCP tool poisoning menghuraikan permukaan serangannya.
Ini juga pusingan kedua OX pada protokol ini: awal 2026, pasukan mereka mengesan kelemahan kritikal dalam source code MCP Anthropic, yang telah dimuat turun lebih 150 juta kali.
Apa maksud angka itu
Kajian ini wajar dibaca dengan teliti kerana peratusannya kecil tetapi akibatnya tidak:
- Infrastruktur tanpa sempadan. 15.6% daripada hostname yang dianalisis — 796 daripada 5,095 — berada pada infrastruktur di luar Amerika Syarikat, termasuk 19 di China dan 18 di Rusia. MCP tiada konsep wilayah pada peringkat protokol, jadi sesebuah organisasi boleh menguatkuasakan kawalan residensi yang ketat pada workload cloud sendiri sambil agennya menghubungi server di luar sempadan itu tanpa halangan.
- Traffic production atas infrastruktur pengguna. Kira-kira 0.45% hostname melalui rangkaian rumah dan perkhidmatan consumer tunneling, terutamanya
ngrok-free. Ini bermakna workflow agen production boleh bergantung pada infrastruktur tanpa jaminan uptime, tanpa kawalan akses perusahaan, dan tanpa jejak audit yang sebenar. - Domain terbiar, risiko yang masih hidup. 2.3% hostname sudah tidak resolve. Enam daripadanya tidak didaftarkan dan boleh dibeli pada $4 hingga $12 setahun. Beli satu, dan anda mewarisi identiti server yang masih dipanggil oleh sesuatu config agen di suatu tempat.
Perkara terakhir itu yang perlu direnungkan. Hostname MCP yang tergantung bukan sekadar link mati; ia sasaran pengambilalihan yang berharga seperti kos pendaftaran domain. Lokasi pun bukan kekal: pengendali boleh membuka server pada alamat IP AS yang bersih hari ini dan memindahkan traffic ke tempat lain esok, jadi sebarang semakan residensi hanyalah snapshot, bukan jaminan.
Prompt injection yang kekal selepas satu klik
Penemuan paling konkrit juga paling mudah dihasilkan semula. Penyelidik menguji server MCP berniat jahat terhadap Claude Code yang digandingkan dengan Haiku 3.5. Server itu mula-mula meminta akses kepada fail yang tidak berbahaya. Pengguna meluluskannya dengan kebenaran always-allow. Server kemudian meminta fail sensitif — .env antara yang disasarkan — dan mendapatkannya tanpa sebarang prompt lagi.
Serangan yang sama gagal terhadap Opus 4.6 dan 4.7, yang laporan itu kaitkan dengan pengesanan lebih kuat pada peringkat model. Respons Anthropic, menurut ringkasan OX, ialah apabila always-allow sudah diberikan, itulah tingkah laku yang didokumentasikan, dan pengesanan kandungan berniat jahat pada peringkat model hanyalah heuristik, bukan sempadan keselamatan. Perbezaan itu penting. Kebenaran yang anda beri sekali ialah kebenaran yang server itu simpan, tidak kira betapa bijaknya sesebuah model mengesan permintaan yang buruk.
Laporan itu berhati-hati untuk tidak membesar-besarkan penemuan ini: ia adalah penemuan tentang model permission, bukan bukti setiap agen akan menyerahkan .env. Tetapi ketidakseimbangan itu yang menjadi intinya. Satu klik "approve" memberi kuasa kepada kelas tindakan itu, dan menarik balik kuasa itu memerlukan langkah manual yang selalunya dilupakan. Setiap server MCP yang pernah anda luluskan masih memegang apa sahaja yang anda berikan pada hari itu.
Audit config MCP anda sendiri
Anda tidak boleh mentadbir apa yang belum anda inventori. Kebanyakan pasukan mempunyai server MCP bertaburan dalam config editor, fail projek dan tetapan CI. Ini skrip Python kecil yang membaca config MCP dan menandakan infrastruktur yang mungkin tidak anda kawal:
#!/usr/bin/env python3
"""Flag remote MCP servers in a config whose infrastructure you don't control."""
import json
import socket
import sys
from urllib.parse import urlparse
CONSUMER_TUNNELS = ("ngrok.io", "ngrok-free.app", "loca.lt",
"localtunnel.me", "trycloudflare.com")
def host_of(entry):
if isinstance(entry.get("url"), str):
return urlparse(entry["url"]).hostname or ""
for arg in entry.get("args", []):
if isinstance(arg, str) and arg.startswith(("http://", "https://")):
return urlparse(arg).hostname or ""
return ""
def main(path):
servers = json.load(open(path)).get("mcpServers", {})
dead = []
for name, entry in servers.items():
host = host_of(entry)
if not host:
print(f" [local] {name}: stdio server, no remote host")
continue
tag = "consumer-tunnel" if host.endswith(CONSUMER_TUNNELS) else "remote"
try:
ip = socket.gethostbyname(host)
print(f" [{tag}] {name}: {host} -> {ip}")
except socket.gaierror:
dead.append(name)
print(f" [DEAD] {name}: {host} does not resolve")
print(f"\n{len(dead)} unreachable server(s) still wired into your config.")
if __name__ == "__main__":
main(sys.argv[1] if len(sys.argv) > 1 else "mcp.json")
Jalankannya pada setiap mcp.json dan claude_desktop_config.json yang anda temui. Baris [DEAD] ialah domain tergantung yang boleh didaftarkan oleh orang lain esok; baris [consumer-tunnel] ialah server yang berjalan atas komputer riba seseorang. Kedua-duanya tidak sepatutnya berada dalam laluan agen perusahaan secara tidak sengaja.
Disiplin yang betul
Semua ini bukan alasan untuk meninggalkan MCP. Ia alasan untuk melayan server MCP sebagai dependency pihak ketiga:
- Inventori setiap server. Catat hostname, siapa yang mengendalikannya, dan di mana kod itu berjalan. Jika anda tidak boleh menjawab "siapa pemilik domain ini?", anda tidak mempunyai governance.
- Utamakan server self-hosted atau yang dikunci pada versinya untuk apa sahaja yang menyentuh kelayakan atau data production. Server remote yang repo-nya anda semak tetap server remote.
- Buang always-allow secara menyeluruh. Berikan kebenaran berskop mengikut sumber, dan anggap setiap server remote sebagai tidak dipercayai walaupun selepas satu kelulusan.
- Pantau DNS egress. Agen yang menghubungi hos di luar senarai yang diluluskan ialah isyarat paling murah, dan ia menangkap kes di mana lokasi server berubah selepas anda meluluskannya.
Protokolnya bukan masalahnya. Kepercayaan yang kita berikan kepadanya itulah masalahnya. Sehingga pasaran menambah pemeriksaan, code signing dan pengesahan asal, perusahaan perlu melakukan kerja itu sendiri — dan inventori ialah tempat ia bermula.
Sumber
- OX Security: How MCP Is Bypassing a Decade of Cloud Security Best Practices
- OX Security: 15,465 MCP Servers. 0 Governance.
- The Hacker News: Welcome to the Jungle: What We Found Inside 15,465 Public MCP Servers
// penulis
Editor & Operator
Mohd Firdaus Abu Bakar (MrDodgerX) is an enterprise geospatial systems engineer in Malaysia and the editor behind hejes.my. He runs the briefing pipeline, curates and edits every draft, verifies each factual claim against primary sources, and presses the publish button — nothing ships without his review. He writes about AI, security and Malaysia's tech scene from a builder's perspective. Professional profile and code: the links below.
// sumber //
disahkan fakta · 07 OKT 2026 · hejes-content-fact-check
- How MCP Is Bypassing a Decade of Cloud Security Best PracticesOX Security · diakses 07 OKT 2026
- 15,465 MCP Servers. 0 Governance.OX Security · diakses 07 OKT 2026
- Welcome to the Jungle: What We Found Inside 15,465 Public MCP ServersThe Hacker News · diakses 07 OKT 2026
berkaitan //

MCP Tool Poisoning: Serangan yang Bersembunyi dalam Tools Agen
Description tools ialah input yang sentiasa dipercayai agen. Bagaimana MCP tool poisoning berfungsi — dan seni bina permission yang mengekangnya.

Domain placeholder kini jadi pelantar malware
Domain placeholder third-party.com yang dipakai dalam docs kini menghidangkan ClickFix kepada pelawat Windows, dan 13 domain seumpamanya membawa scam.

Plugin4Shell: Pemilik Repo Boleh Menukar Plugin Terkunci
Plugin4Shell ialah bypass git SHA pin dalam Claude Code, Codex, GitHub Copilot dan Gemini CLI — pemilik repo boleh pasang kod lain atas pin yang disemak.
// sertai suapan
satu ilmu seminggu. tiada spam.
ringkasan mingguan. berhenti bila-bila masa.