CrawlForge
Laman UtamaPlaygroundKes PenggunaanIntegrasiHargaDokumentasiBlog
SSRF dalam MCP server: kenapa pengikis bocorkan rahsia awan
AI Engineering
Kembali ke Blog
Kejuruteraan AI

SSRF dalam MCP server: kenapa pengikis bocorkan rahsia awan

C
CrawlForge Team
Pasukan Kejuruteraan
13 Ogos 2026
9 min bacaan

Pada halaman ini

Jawapan Pantas

Sebuah kajian arXiv pada Julai 2026 (arXiv:2608.00150) mengaudit 414 MCP server yang terdedah ke internet secara dinamik dan menemui 68 kerentanan boleh lapor, dengan 91.8% langsung tiada pengesahan OAuth. MCP server pengikisan web ialah kelas yang paling terdedah kerana mengambil URL yang dibekalkan model ialah ciri yang diiklankannya: halaman yang dibaca ejen boleh membawa arahan suntikan yang mengemudi pelayan ke hujung metadata awan, dan responsnya mengalir terus kembali ke dalam konteks model. CVE-2026-65056 merekodkan tepat rantaian ini dalam mcp-webresearch 0.1.7, yang hanya mengesahkan protokol URL. Pertahanan yang berkesan menyekat mengikut julat IP yang diselesaikan dan bukan nama hos, memeriksa literal IP dan IPv6 dipetakan IPv4, memaku sambungan kepada IP yang disahkan, mengesahkan semula setiap lompatan ubah hala, dan melindungi navigasi pelayar secara berasingan.

Pada Julai 2026, seorang penyelidik keselamatan mengacukan pengimbas buatan khas kepada setiap MCP server yang dapat mereka temui di internet awam. Mereka mengesahkan 640 pelayan produksi, mengaudit 414 daripadanya secara dinamik, dan menemui 68 kerentanan yang boleh dilaporkan — suntikan SQL, suntikan templat prompt, lintasan laluan, dan SSRF yang menyasarkan terus perkhidmatan metadata awan.

Angka yang sepatutnya menghentikan langkah anda: 91.8% daripada pelayan yang mereka audit langsung tiada pengesahan OAuth.

Jika anda membina atau menjalankan MCP server untuk pengikisan web, ini masalah anda lebih daripada sesiapa pun. Seluruh tugas sesebuah alat pengikisan ialah menerima URL dan mengambilnya. Apabila URL itu dipilih oleh model bahasa, dan model itu pula boleh dipengaruhi oleh kandungan halaman yang dibacanya, anda telah membina sebuah mesin server-side request forgery dan menyerahkan stereng kepada penyerang.

Isi kandungan

  • Keadaan keselamatan MCP server pada 2026
  • Mengapa pelayan pengikisan ialah kes terburuk
  • Anatomi sebuah CVE sebenar
  • Tangga pintasan: enam cara pemeriksaan URL gagal
  • Senarai semak pertahanan yang benar-benar bertahan
  • Bagaimana CrawlForge melaksanakannya
  • Jika anda pengguna, bukan pembina

Keadaan keselamatan MCP server pada 2026

Kajian tersebut ialah Exposed by Design: A Dynamic Security Assessment of Internet-Facing MCP Servers at Scale (Nicolás Padilla, arXiv:2608.00150, dihantar pada 31 Julai 2026). Ia merupakan penilaian tingkah laku dinamik pertama terhadap MCP server sebenar di lapangan, bukannya bacaan statik ke atas kod sumber.

Kaedahnya ialah penemuan pasif menerusi sebelas sumber data — log ketelusan sijil, GitHub, npm, PyPI, HuggingFace, Smithery, Censys, FOFA, Shodan dan lain-lain — diikuti ujian aktif menggunakan Corvus, sebuah rangka kerja dengan 34 modul ujian merangkumi 10 kelas kerentanan khusus MCP.

Apa yang ditemuinya sepanjang empat pusingan pengukuran:

PenemuanAngka
Contoh MCP server yang dapat dikesan di internet awamMelebihi 21,000
Pelayan produksi yang disahkan640
Pelayan yang diaudit secara dinamik414
Kerentanan boleh lapor yang ditemui68
Pelayan yang diaudit tanpa pengesahan OAuth91.8%
Contoh alat yang mendedahkan pelaksanaan shell tanpa kawalan akses687
Pelayan disahkan yang lenyap dalam tempoh tiga hari41.6%

Baris terakhir itulah yang sering dilangkau orang, dan ia mungkin yang paling mendedahkan. Empat daripada setiap sepuluh pelayan lenyap antara dua pusingan pengukuran berturutan — tanda perisian yang dilancarkan terus ke internet tanpa semakan keselamatan, kemudian ditarik semula.

Mengapa pelayan pengikisan ialah kes terburuk

Kebanyakan nasihat SSRF mengandaikan sebuah aplikasi web yang penyerangnya perlu mencari suatu parameter tersembunyi yang diambil di pihak pelayan. Sebuah MCP server pengikisan menterbalikkan hal itu sepenuhnya: mengambil URL yang dibekalkan penyerang ialah ciri yang diiklankan.

Tiga sifat bertindan dengan buruk:

URL dikawal oleh model. Skema alat anda menyatakan url: string. Model yang mengisinya. Tiada apa-apa dalam protokol yang membezakan URL yang ditaip pengguna daripada URL yang direka model.

Model membaca teks yang tidak dipercayai. Inilah bahagian yang menukar sifat reka bentuk menjadi eksploit. Ejen anda mengikis satu halaman; halaman itu mengandungi teks yang mengarahkan model mengambil http://169.254.169.254/latest/meta-data/iam/security-credentials/; model mematuhinya. Itulah suntikan prompt yang bertukar terus menjadi SSRF, dan permintaan itu berasal dari dalam rangkaian anda dengan apa jua kelayakan yang dipegang oleh instans anda.

Output kembali terus ke dalam konteks model. SSRF klasik bersifat buta — selalunya anda tidak dapat melihat responsnya. Di sini pula, badan respons dipulangkan kepada model sebagai output alat, dan dari situ masuk ke dalam perbualan, log, dan berkemungkinan panggilan alat seterusnya. Penyedutan data datang sedia terbina.

Hujung metadata awan menjadi sasaran yang jelas kerana ia tidak memerlukan pengesahan secara reka bentuk dan berada pada alamat tetap yang terkenal di setiap penyedia utama. Tetapi primitif yang sama turut mencapai panel pentadbiran dalaman, Redis pada localhost, pelayan API Kubernetes, dan apa jua yang selama ini mempercayai perimeter rangkaian.

Anatomi sebuah CVE sebenar

CVE-2026-65056 (diterbitkan 21 Julai 2026, CWE-918, skor asas CVSS 4.0 8.3 HIGH) memerihalkan rantaian ini dari hujung ke hujung dalam sebuah pakej sebenar. Perisian yang terjejas ialah mcp-webresearch pada versi 0.1.7 dan ke bawah.

Menurut rekod NVD, kecacatannya ialah alat visit_page hanya mengesahkan protokol URL — ia memeriksa sama ada anda menghantar http: atau https: dan tidak pernah menapis julat IP persendirian atau terpelihara. Nasihat itu kemudian menghuraikan rantaian penuhnya: penyerang mengemudi argumen URL yang dikawal LLM menerusi suntikan prompt, pelayar Playwright milik pelayan menavigasi ke hujung dalaman seperti perkhidmatan metadata instans awan, dan kandungan halaman dalaman yang sensitif — termasuk kelayakan — dipulangkan ke dalam konteks model.

Itu bukan laluan serangan teori. Itulah huraian CVE tersebut.

Ia juga bukan kes terpencil. CVE-2026-26118 ialah server-side request forgery dalam Azure MCP Server milik Microsoft sendiri, dinilai CVSS 3.1 8.8 HIGH, turut CWE-918, dibaiki dalam 1.0.2 dan 2.0.0-beta.17. Jika Microsoft pun menghantar SSRF dalam MCP server rasmi, kebarangkalian sebuah pelayan pengikisan hasil kerja hujung minggu melakukannya dengan betul bukanlah tinggi.

Tangga pintasan: enam cara pemeriksaan URL gagal

Inilah bahagian yang memeritkan. Kebanyakan pembangun yang memang menambah perlindungan SSRF hanya menambah anak tangga pertama atau kedua dan berhenti di situ. Setiap anak tangga di bawah ialah pintasan sebenar bagi anak tangga di atasnya.

1. Pengesahan protokol semata-mata. Memeriksa http:/https: dan tiada apa-apa lagi. Inilah tepatnya CVE-2026-65056. Ia menghalang file:// dan gopher://, dan tiada apa-apa yang penting di sini.

2. Senarai hitam rentetan nama hos. Menyekat rentetan literal localhost dan 127.0.0.1. Dipintas dengan mudah, kerana satu alamat IP mempunyai banyak ejaan.

3. Pengekodan literal IP alternatif. 127.0.0.1 juga ialah 2130706433 dalam perpuluhan dan 0x7f000001 dalam heksadesimal. Penghurai URL WHATWG — yang terbina dalam setiap masa jalan moden — menormalkan kesemuanya kepada alamat yang sama selepas pemeriksaan rentetan anda sudah pun lulus. Lebih buruk lagi, dalam Node.js literal IP tidak pernah melalui penyelesaian DNS, jadi perlindungan yang dicangkuk pada panggilan lookup langsung tidak nampak apa-apa.

4. IPv6 dipetakan IPv4. ::ffff:127.0.0.1 dan ::ffff:169.254.169.254 membenamkan alamat IPv4 di dalam tatatanda IPv6. Pemeriksaan julat yang hanya memahami IPv4 empat serangkai akan melepaskannya terus. Ini turut membuka varian yang dikawal DNS: penyerang menerbitkan rekod AAAA yang menuding ke alamat dalaman yang dipetakan.

5. Pengikatan semula DNS (TOCTOU). Anda menyelesaikan nama hos, mengesahkan ia alamat awam, meluluskannya — dan kemudian klien HTTP menyelesaikannya sekali lagi apabila ia benar-benar menyambung. Dengan TTL yang pendek, penyerang memulangkan IP awam pada carian pertama dan IP dalaman pada carian kedua. Satu-satunya pembaikan yang kekal ialah memeriksa dan kemudian memaku sambungan kepada IP yang telah disahkan, supaya alamat yang anda luluskan ialah alamat yang anda sambungi.

6. Lompatan ubah hala. Anda mengesahkan URL yang diberikan kepada anda. Pelayan memulangkan 302 Location: http://169.254.169.254/. Melainkan setiap lompatan disahkan semula — dan melainkan lompatan pertama yang dibenarkan tidak secara senyap menanggalkan perlindungan bagi bakinya — anda hanya memindahkan kerentanan itu satu langkah ke hilir.

Ada kes ketujuh yang khusus bagi automasi pelayar: jika alat anda memandu Playwright atau Puppeteer, pelayar melakukan navigasinya sendiri. Melindungi pembalut fetch anda tidak membantu langsung. Anda memerlukan pemeriksaan pra-navigasi dan bacaan semula URL sebenar selepas navigasi, kerana ubah hala di pihak klien dan meta-refresh berlaku di dalam halaman itu sendiri.

Senarai semak pertahanan yang benar-benar bertahan

[ ] Block by resolved IP range, never by hostname string [ ] Run the range check on IP-literal hosts too — they skip DNS entirely [ ] Normalize IPv4-mapped IPv6 before any range comparison [ ] Pin the connection to the validated IP (defeats DNS rebinding) [ ] Re-validate every redirect hop, not just the first URL [ ] Scope allowlists per-hop, so one trusted host does not unguard the chain [ ] Guard browser navigation separately, with a post-navigation URL re-check [ ] Block 169.254.0.0/16 (metadata), loopback, and 0.0.0.0 by default [ ] Offer strict mode: full RFC1918 and IPv6 ULA private ranges [ ] Put a deadline and a size cap on every response body read [ ] Mask secrets before any telemetry or log write [ ] Require authentication — 91.8% of audited servers do not

Julat yang wajar disekat secara lalai ialah gelung balik (127.0.0.0/8, ::1), link-local termasuk metadata awan (169.254.0.0/16), dan alamat tidak ditentukan 0.0.0.0. Sekatan julat persendirian penuh (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00::/7) sepatutnya tersedia sebagai mod ketat — banyak penggunaan yang sah memang perlu mengikis hos pementasan dalaman, dan perlindungan yang tidak boleh dikonfigurasikan sesiapa ialah perlindungan yang akhirnya dimatikan orang sepenuhnya.

Bagaimana CrawlForge melaksanakannya

Kami tidak menulis ini dari tepi gelanggang. Keluaran v5.0.0 CrawlForge ialah program pemulihan tujuh fasa, dan fasa pertamanya menangani tepat kelas pepijat ini — termasuk satu yang kami sendiri pernah hantar.

Perlindungan SSRF kami menyelesaikan nama hos dan memeriksa alamat yang terhasil, tetapi tidak menjalankan pemeriksaan yang sama apabila hos itu memang sudah berupa literal IP. Itulah anak tangga ketiga pada tangga di atas, dan ia benar-benar wujud dalam kod kami. Fasa 1 membaikinya dengan menjalankan pemeriksaan julat pada nama hos berbentuk literal IP semasa pemeriksaan awal dan, secara berasingan, membalut buildConnector milik dispatcher undici dengan pemeriksaan setiap sambungan — supaya lompatan ubah hala terus ke alamat dalaman ditangkap pada masa sambungan walaupun Node tidak pernah menghalakannya melalui DNS.

Baki tangga itu diliputi seperti berikut:

  • IPv6 dipetakan IPv4 dinormalkan kepada IPv4 terbenamnya sebelum pemeriksaan julat, dalam mod lalai mahupun ketat.
  • Sambungan dipaku kepada IP yang disahkan, menutup tetingkap pengikatan semula DNS.
  • Senarai benaran dinilai setiap lompatan — lompatan pertama yang diluluskan tidak lagi menanggalkan perlindungan rantaian ubah hala.
  • Navigasi pelayar dilindungi secara berasingan: scrape_with_actions mengesahkan sebelum page.goto dan membaca semula page.url() selepasnya, lalu menutup halaman jika navigasi mendarat dalam julat tersekat.
  • Setiap subsistem yang membuat permintaan telah disambungkan — pengambilan halaman dan metadata, muat turun PDF, penghantaran webhook, dan pemberitahuan penyelidikan semuanya melalui perlindungan ini dan bukan fetch mentah.
  • Rahsia disamarkan sebelum telemetri penggunaan meninggalkan proses.

Tetapan lalai menyekat gelung balik, link-local/metadata, dan 0.0.0.0. SSRF_STRICT=true menambah penguatkuasaan RFC1918 dan ULA yang penuh, ALLOWED_DOMAINS membenarkan hos dalaman yang dipercayai, dan SSRF_PROTECTION_ENABLED=false wujud sebagai kill switch bagi mereka yang benar-benar memerlukannya.

Bash
SSRF_STRICT=true                    # full private-range enforcement
ALLOWED_DOMAINS=staging.acme.dev    # trusted internal targets

Jika anda pengguna, bukan pembina

Anda tidak perlu membaca kod sumber sesiapa pun untuk mengurangkan pendedahan anda dengan ketara.

Audit apa yang telah anda sambungkan. Setiap MCP server dalam konfigurasi klien anda berjalan dengan akses rangkaian mesin anda dan kelayakan anda. Pada VM awan atau VPN korporat, jangkauan itu jauh lebih luas berbanding pada komputer riba.

Utamakan pelayan yang menerbitkan pendirian keselamatannya. Log perubahan yang menamakan kelas CVE yang telah ditutupnya memberitahu anda lebih banyak daripada senarai ciri. Kesenyapan bukan bukti keselamatan; berdasarkan angka kajian tadi, kesenyapan lebih hampir kepada bukti sebaliknya.

Kurangkan permukaan serangan yang anda dedahkan kepada model. Jika sesebuah pelayan menyokong senarai putih alat, gunakannya. CrawlForge menerima CRAWLFORGE_TOOLS atau CRAWLFORGE_TOOL_GROUPS untuk mendedahkan hanya alat yang benar-benar anda perlukan, yang sekali gus mengurangkan lambakan konteks dan mengecilkan apa yang boleh dicapai oleh model yang terkena suntikan prompt.

Anggap kandungan yang dikikis sebagai input bermusuh. Inilah anjakan pemikiran yang paling penting di sini. Mana-mana halaman yang dibaca ejen anda boleh mengandungi arahan yang ditujukan kepada model anda. Setiap serangan di atas bergantung pada hal itu, dan sebanyak mana pun pengukuhan rangkaian tidak akan membaiki aliran kerja yang menyalurkan teks yang dikikis terus ke dalam panggilan alat tanpa semakan.


Membina ejen yang membaca web secara langsung? Mulakan percuma dengan 1,000 credits — perlindungan SSRF aktif secara lalai, tanpa perlu konfigurasi. Lihat dokumentasi penuh, rujukan scrape_with_actions, atau cara kami menangani pengesanan anti-bot dalam mod stealth.

Cuba sendiri — tiada pendaftaran diperlukan

Jalankan mana-mana daripada 27 alat scraping dan pengekstrakan CrawlForge dalam playground, kemudian mula secara percuma dengan 1,000 credits.

1,000 credits percuma • Sekali sahaja • Tiada kad kredit diperlukan

Tag

securitySSRFMCPweb-scrapingAI agents

Tentang Penulis

C

CrawlForge Team

Pasukan Kejuruteraan

Membina MCP server web scraping yang paling menyeluruh. Kami mencipta alatan yang membantu pembangun mengekstrak, menganalisis dan mengubah data web untuk aplikasi AI.

Kekal dikemas kini dengan pandangan terkini

Dapatkan tutorial, kemas kini produk dan petua web scraping terus ke peti masuk anda.

Tiada spam. Berhenti melanggan bila-bila masa.

Praktikkan ini

Uji alat CrawlForge pada mana-mana URL — percuma, tanpa pendaftaran.

Pada halaman ini

Frequently Asked Questions

Apakah SSRF dalam konteks sebuah MCP server?+

Server-side request forgery (CWE-918) ialah keadaan apabila penyerang mendorong pelayan membuat permintaan HTTP ke destinasi pilihan penyerang. Dalam MCP server pengikisan, risikonya bersifat struktur dan bukan sampingan: tugas alat itu memang mengambil URL, dan argumen URL tersebut diisi oleh model bahasa. Jika model membaca kandungan halaman yang dikawal penyerang dan mengandungi arahan suntikan, ia boleh dikemudi untuk mengambil alamat dalaman seperti hujung metadata awan. Responsnya kemudian kembali kepada model sebagai output alat, jadi berbeza dengan SSRF buta klasik, penyedutan data sudah terbina dalam reka bentuknya.

Berapa banyak MCP server yang sebenarnya bermasalah dari segi keselamatan?+

Kajian arXiv Exposed by Design (arXiv:2608.00150, dihantar 31 Julai 2026) menemui melebihi 21,000 contoh MCP server di internet awam, mengesahkan 640 daripadanya sebagai pelayan produksi, dan mengaudit 414 secara dinamik menggunakan rangka kerja ujian 34 modul. Ia menemui 68 kerentanan boleh lapor termasuk suntikan SQL, SSRF terhadap perkhidmatan metadata awan, suntikan templat prompt, dan lintasan laluan. 91.8% daripada pelayan yang diaudit tiada pengesahan OAuth, 687 contoh alat mendedahkan pelaksanaan shell tanpa kawalan akses, dan 41.6% pelayan yang disahkan lenyap dalam tempoh tiga hari antara pusingan pengukuran.

Mengapa menyekat localhost dan 127.0.0.1 sahaja tidak memadai?+

Kerana satu alamat IP mempunyai banyak ejaan yang sah, dan penghurai URL menormalkannya selepas pemeriksaan rentetan anda sudah pun lulus. 127.0.0.1 juga ialah 2130706433 dalam perpuluhan dan 0x7f000001 dalam heksadesimal. Tatatanda IPv6 dipetakan IPv4 seperti ::ffff:169.254.169.254 membenamkan alamat IPv4 dalam bentuk yang langsung terlepas daripada pemeriksaan julat empat serangkai. Dalam Node.js, literal IP tidak pernah melalui penyelesaian DNS, jadi perlindungan yang dicangkuk pada panggilan lookup tidak nampak apa-apa. Selain pengekodan, pengikatan semula DNS membolehkan penyerang memulangkan alamat awam pada carian pengesahan anda dan alamat dalaman pada sambungan sebenar, manakala satu lompatan ubah hala boleh memindahkan permintaan ke sasaran dalaman selepas pengesahan lulus.

Apakah pengikatan semula DNS dan bagaimana saya mempertahankannya?+

Pengikatan semula DNS ialah serangan masa-pemeriksaan lawan masa-penggunaan. Anda menyelesaikan nama hos, mengesahkan alamatnya awam, dan meluluskan permintaan itu — tetapi klien HTTP menyelesaikan nama hos tersebut sekali lagi apabila ia benar-benar membuka sambungan. Dengan TTL yang pendek, penyerang memulangkan IP awam pada carian pertama dan IP dalaman pada carian kedua, jadi permintaan yang anda luluskan bukanlah permintaan yang akhirnya dibuat. Pemeriksaan rentetan atau nama hos tidak dapat menutup tetingkap ini. Pembaikan yang kekal ialah memaku sambungan kepada alamat IP khusus yang telah anda sahkan, supaya alamat yang diluluskan itulah yang benar-benar disambungi.

Adakah perlindungan SSRF CrawlForge diaktifkan secara lalai?+

Ya. Perlindungan aktif secara lalai dan menyekat gelung balik, alamat link-local dan metadata awan (169.254.0.0/16), serta 0.0.0.0, tanpa perlu sebarang konfigurasi. Tetapkan SSRF_STRICT=true untuk menambah penguatkuasaan julat persendirian RFC1918 dan ULA IPv6 sepenuhnya, gunakan ALLOWED_DOMAINS untuk membenarkan hos dalaman yang dipercayai, dan SSRF_PROTECTION_ENABLED=false wujud sebagai kill switch. Perlindungan ini berjalan pada hos berbentuk literal IP dan juga nama hos yang diselesaikan, menormalkan IPv6 dipetakan IPv4, memaku sambungan kepada IP yang disahkan, menilai senarai benaran bagi setiap lompatan ubah hala, dan melindungi navigasi Playwright secara berasingan dengan pemeriksaan semula URL selepas navigasi.

Artikel Berkaitan

Alat Web Scraping Terbaik untuk Ejen AI pada 2026
AI Engineering

Alat Web Scraping Terbaik untuk Ejen AI pada 2026

Alat web scraping terbaik untuk ejen AI pada 2026, disusun mengikut kesediaan ejen: penemuan alat MCP-native, skema bertaip, dan output cekap token.

C
CrawlForge Team
|
9 Jun
|
11m
Cara Membina Saluran Paip RAG dengan Data Web
AI Engineering

Cara Membina Saluran Paip RAG dengan Data Web

Bina saluran paip RAG pengeluaran yang crawl laman web, mengekstrak kandungan, chunk teks, menjana embedding, dan menyajikan jawapan terbantu pengambilan.

C
CrawlForge Team
|
14 Apr
|
11m
Scraping Mod Senyap: Bagaimana CrawlForge Memintas Pengesanan Anti-Bot
AI Engineering

Scraping Mod Senyap: Bagaimana CrawlForge Memintas Pengesanan Anti-Bot

Penelitian teknik mendalam tentang sistem pengesanan anti-bot dan bagaimana ciri mod senyap CrawlForge membantu anda melakukan scraping laman web yang dilindungi secara beretika dan berkesan.

C
CrawlForge Team
|
22 Jan
|
14m

Footer

CrawlForge

Web scraping gred perusahaan untuk Ejen AI. 27 alat MCP khusus yang direka untuk pembangun moden yang membina sistem pintar.

Produk

  • Ciri
  • Playground
  • Harga
  • Kes Penggunaan
  • Integrasi
  • Alternatif
  • Changelog

Sumber

  • Mula Bekerja
  • Rujukan API
  • Templat
  • Panduan
  • Blog
  • Glosari
  • Soalan Lazim
  • Peta Laman

Pembangun

  • Protokol MCP
  • Claude Desktop
  • Cursor IDE
  • LangChain
  • LlamaIndex

Syarikat

  • Tentang
  • Hubungi
  • Privasi
  • Terma
  • Penggunaan Boleh Diterima
  • Cookies

Kekal dikemas kini

Dapatkan kemas kini terkini tentang alat dan ciri baharu.

Dibina dengan Next.js dan protokol MCP

© 2025-2026 CrawlForge. Hak cipta terpelihara.