Ilustrasi teknis abstrak pada bidang batu tulis tua: kolom server dokumentasi yang sempit di sebelah kiri mengirimkan kartu-kartu persegi panjang kecil sepanjang saluran bercahaya menuju satu node agen di sebelah kanan, yang memegang cincin berisi objek-objek kecil berbentuk kunci. Salah satu kartu digarisbawahi dengan warna kuning amber dan membawa siluet kunci samar yang tercermin di cincin agen. Di belakang kolom terdapat kisi longgar berisi entri pustaka, salah satunya diberi bayangan lebih gelap daripada yang lain. Garis-garis tipis berwarna teal membagi saluran menjadi segmen-segmen pengiriman. Tidak ada orang, tidak ada logo, tidak ada tulisan dalam bentuk apa pun. Logo OrcaRouter dikomposisikan di sudut kanan bawah.
AI Safety Incidents

CVE-2026-75130: Server dokumentasi MCP milik Context7 mendapat skor 9,0, dan catatan tersebut tidak menyebutkan versi perbaikan apa pun

Penulis

Alistair Wren

Tanggal Terbit

Model terbaru · 20Lihat semua model →
Benchmark: Artificial Analysis · diperbarui setiap hari
Kembali ke semua artikel

Pada 18 Agustus 2026, VulnCheck menerbitkan CVE-2026-75130 untuk Context7, server dokumentasi pustaka yang dijalankan Upstash untuk Model Context Protocol dan yang ditanyakan oleh agen pengodean untuk memperoleh dokumentasi spesifik versi. Kerentanan ini berada pada fitur yang oleh Upstash disebut Custom AI Instructions: pemilik pustaka melampirkan panduan ke entri dokumentasi, Context7 menyajikan panduan itu ke jendela konteks setiap agen yang mencari pustaka tersebut, dan tidak ada yang menyaringnya di jalur itu. Noma Security, yang peneliti kerentanan AI seniornya, Eli Ainhorn, dikreditkan sebagai penemu, mendemonstrasikan bahwa entri beracun dapat membuat agen yang terhubung membaca .env file di akar proyek, mengirim isinya ke repositori GitHub yang dikendalikan penyerang sebagai issue, dan menghapus folder lokal dengan dalih “pembersihan” — semuanya berasal dari permintaan dokumentasi rutin. Tidak ada korban yang tercatat. Sisa insiden agen yang terdokumentasi, masing-masing dengan tingkat keparahannya, nilai keyakinannya, dan penanda sengketanya sendiri, berada di arsip insiden AI, tempat entri-entri di sekitar catatan ini dapat dibaca bersamanya.

Server Context7 kecil, dan itulah bagian yang perlu dipahami lebih dulu. Tulisan Noma mencatat bahwa server itu mengekspos dua alat, resolve-library-id dan query-docs, dan bahwa ia tidak dapat mengeksekusi kode, menulis file, atau mengakses jaringan sendiri. Setiap dampak yang didokumentasikan dilakukan oleh agen di ujung lain, yang memang memiliki akses sistem file, shell, dan jaringan di mesin pengembang. Registri npm menunjukkan seberapa besar basis terpasangnya: @upstash/context7-mcp telah diunduh 4,064,176 kali dalam tiga puluh hari dari 22 Juli hingga 20 Agustus 2026, rentang waktu sekitar publikasi.

Mekanisme: satu pustaka beracun, setiap agen yang mengkuerinya

Demonstrasi Noma, yang dijelaskan dalam tulisan ContextCrush tanggal 5 Maret 2026, berjalan dalam tiga langkah yang dilakukan agen, bukan server. Noma mendaftarkan sebuah pustaka di registri Context7 dengan aturan beracun terlampir. Instruksi dalam aturan tersebut mengarahkan agen untuk mencari dan membaca setiap file .env di akar proyek; instruksi lebih lanjut mengarahkannya untuk memposting isi tersebut ke repositori GitHub yang dikendalikan penyerang sebagai issue; rangkaian instruksi terakhir memerintahkannya untuk menghapus folder dan file lokal demi “pembersihan.” Permintaan yang menarik semua ini ke dalam konteks adalah permintaan biasa — meminta bantuan asisten coding terkait sebuah pustaka.

Alasan ini merupakan masalah rantai pasok dan bukan injeksi prompt biasa terletak pada di mana payload berada. Penyerang tidak pernah menjangkau mesin korban dan tidak pernah harus menanam teks dalam dokumen yang dibuka pengguna. Instruksi yang teracuni berada di registri Context7 sendiri, dihosting dan disajikan oleh infrastruktur Context7 sendiri, serta tiba melalui saluran tepercaya yang sama dengan dokumentasi sah, tanpa bisa dibedakan darinya. Noma mencatat bahwa skor kepercayaan Context7, yang menilai pustaka berdasarkan riwayat GitHub di belakangnya, tidak melindungi dari hal ini, karena akun berumur panjang dapat dibeli, dibajak, atau dibuat. Ringkasan perusahaan sendiri tentang poin struktural ini blak-blakan: “Permukaan serangan bukanlah apa yang dapat dilakukan server MCP. Melainkan apa yang dapat membuat agen AI melakukannya.”

Dua skor untuk satu bug

Advisory tersebut mencantumkan CVSS 3.1 9.0 (kritis) dan CVSS 4.0 6.4 (sedang). Kedua vektor disediakan oleh VulnCheck sebagai CNA yang menetapkan, dan NVD memuat keduanya tanpa perubahan, dengan mencantumkan VulnCheck sebagai sumber masing-masing. Perbedaan ini bukan kesalahan; ini adalah dua kerangka kerja yang menghitung kerusakan yang sama terhadap mesin yang berbeda. CVSS 3.1 menandai Scope sebagai Changed — injeksi melintasi dari server ke mesin pengembang dan lebih jauh lagi — sehingga mencatat dampak penuh kerahasiaan, integritas, dan ketersediaan dari kapabilitas agen pada bobot penuh. CVSS 4.0 menggantikan Scope dengan metrik terpisah untuk sistem yang rentan dan sistem berikutnya: ia mencatat tidak ada dampak kerahasiaan, integritas, atau ketersediaan untuk Context7 itu sendiri (VC:N/VI:N/VA:N) dan dampak tinggi pada sistem di hilir (SC:H/SI:H/SA:H), yang menurut formulanya diberi bobot lebih ringan. Server hanyalah perantara, bukan korban.

Perpecahan itu menjalar ke basis data. Advisori GitHub, GHSA-97r6-3rgm-v39r, diterbitkan pada 18:32 UTC tanggal 18 Agustus, setengah jam setelah CVE, dan tingkat keparahan ringkasannya tertulis sedang meskipun vektor CVSS 3.1 dalam catatan yang sama memberi skor 9.0. Basis Data Kerentanan UE milik ENISA mencerminkan entri tersebut sebagai EUVD-2026-61099 dan menyimpan skor dasar 6,4 hanya berdasarkan versi 4.0. Catatan arsip yang diikuti artikel ini menilai insiden tersebut tinggi — yang bukan salah satu dari dua skor yang diterbitkan — dan itu adalah nilai dari arsip, bukan pengukuran dari dirinya sendiri.

HTML card titled 'One advisory, two scores', kicked 'OrcaRouter · AI incident archive · 2026-08-18', with the subtitle 'Identical facts, two severity bands apart. Both vectors were supplied by VulnCheck as the assigning CNA; NVD carries both unchanged and attributes each to VulnCheck'. Four chips read CVSS 3.1 9.0 critical, CVSS 4.0 6.4 medium, archive grade high and EPSS 0.49%. Three columns. 'Where the vectors agree' lists attack vector network with low complexity, privileges required low because the attacker needs a registry entry rather than the victim's machine, a routine documentation request as the trigger, and high confidentiality, integrity and availability impact in both frameworks. 'Where they diverge' lists CVSS 3.1 setting Scope to Changed and booking the jump to the developer's machine at full weight, CVSS 4.0 recording the vulnerable system as unharmed at VC:N, VI:N and VA:N, the same harms booked downstream at SC:H, SI:H and SA:H with less weight, and user interaction at required in 3.1 against passive in 4.0. 'How the databases record it' lists NVD keeping both vectors each tagged disclosure@vulncheck.com, GHSA-97r6-3rgm-v39r carrying a summary severity of medium while its own v3 vector reads 9.0, ENISA EUVD-2026-61099 storing 6.4 under version 4.0 only, and the archive grading the record high, which is neither score. A footer reads 'Sources: CVE-2026-75130 in the MITRE CVE Services record, 18 August 2026; NVD API; GitHub Advisory API; ENISA EUVD API. EPSS as recorded in ENISA's mirror.'

CVE yang diterbitkan pada Agustus untuk pengungkapan pada Maret

Pengenal CVE tersebut dicadangkan pada 17 Agustus 2026 dan diterbitkan pada 18:02 UTC tanggal 18 Agustus, yaitu tanggal yang tercantum pada catatan itu. Kontainer CNA juga memuat tanggal kedua yang tidak muncul di halaman agregator: datePublic, 5 Maret 2026 — lima setengah bulan sebelum pengenal itu ada, dan pada hari yang sama Noma menerbitkan ContextCrush. Satu-satunya referensi teknis dalam advisory tersebut adalah tulisan Maret itu, yang oleh VulnCheck diberi tag untuk deskripsi teknis dan eksploit.

Linimasa pengungkapan Noma menjelaskan selang waktu tersebut. Laporan itu menyebutkan bahwa Noma melaporkan celah tersebut kepada Upstash pada 18 Februari 2026 dengan laporan lengkap dan bukti konsep, mencatat bahwa Upstash menerima temuan dan mulai melakukan perbaikan pada 19 Februari, menyatakan bahwa perbaikan “diterapkan ke produksi dengan sanitasi aturan dan pagar pengaman” pada 23 Februari, serta menetapkan tanggal pengungkapan publik dan verifikasi akhir oleh Noma pada 5 Maret. Menurut keterangan Noma, bug Februari itu diselesaikan dalam hitungan hari.

Tanggal-tanggal di registri npm selaras dengan garis waktu itu sedemikian rupa sehingga membuat rentang terdampak tampak janggal. @upstash/context7-mcp 2.1.2 diterbitkan pada 23 Februari 2026 pukul 10:06 UTC, hari yang menurut Noma menjadi saat perbaikan mencapai produksi; baris changelog-nya berbunyi “Hapus peringatan yang tidak perlu dan perbarui deskripsi alat.” 2.1.3 menyusul pada 4 Maret 2026, sehari sebelum tulisan Noma, dengan catatan tentang menolak permintaan GET pada endpoint MCP dan menambahkan field sumber ke hasil pencarian. Tidak ada catatan rilis yang menyebut sanitasi, guardrail, atau injeksi. Rentang terdampak dari CNA berakhir pada 2.1.2, yang menjadikan 2.1.3 sebagai versi pertama di luar rentang tersebut.

Tiga tafsiran cocok dengan tanggal-tanggal tersebut, dan baik VulnCheck maupun Noma tidak menyatakan mana yang benar. Tafsiran pertama, yang dikemukakan Digital Applied dalam artikelnya pada 18 Agustus dan diulang oleh AI Security Wire pada 22 Agustus, adalah bahwa perbaikan tersebut mengalami regresi: build yang membawa patch Februari berada di dalam rentang terdampak Agustus. Tafsiran kedua adalah bahwa rentang itu semata-mata berpatokan pada build yang diuji peneliti, dan bahwa 2.1.3, yang dirilis sehari sebelum pengungkapan, adalah batas sebenarnya — sebuah inferensi yang dibuat secara mekanis oleh beberapa agregator, termasuk Feedly, yang mencantumkan “perbarui ke versi 2.1.3 atau yang lebih baru” sebagai mitigasi. Tafsiran ketiga adalah bahwa perbaikan Februari diterapkan di tempat aturan tersebut disajikan, bukan di paket klien, sehingga rentang versi npm sama sekali tidak menggambarkan perbaikan itu. Perbaikan keamanan senyap cukup umum sehingga tidak adanya entri changelog yang cocok tidak menyelesaikan apa pun ke arah mana pun.

HTML card titled 'Six months, one affected range', kicked '2026-08-18-context7-mcp-ti-shi-zhu · dates', subtitled 'Times UTC. Noma's disclosure timeline and the npm registry dates do not say what the 23 February fix changed, and no release note mentions sanitisation'. Four chips read 18 Feb 2026 reported to Upstash, 23 Feb 2026 fix live and npm 2.1.2, 5 Mar 2026 datePublic, and 18 Aug 2026 CVE published. Three columns. 'Noma's February timeline' lists 18 February discovery with the report and proof of concept delivered to Upstash, 19 February acceptance and remediation, 23 February deployment of a fix with rule sanitization and guardrails, and 23 February at 10:06 UTC the npm publication of 2.1.2 with a changelog reading 'Remove unnecessary warning and update tool descriptions'. 'The March boundary' lists 4 March at 12:51 UTC the npm publication of 2.1.3 whose changelog covers 405 handling for GET requests and a source field, 5 March publication of Noma's ContextCrush writeup with final verification, 5 March as the CNA's datePublic for the CVE, and the affected range ending at 2.1.2, which makes 2.1.3 the first build outside it. 'The August record' lists 17 August reservation of the identifier, 18 August at 18:02 UTC publication by VulnCheck as CNA, 18 August at 18:32 UTC the appearance of GHSA-97r6-3rgm-v39r with no version ranges, no fixed version in the CVE, the VulnCheck advisory or the GHSA, and NVD last modified 22 October at status Deferred with no CPE configurations. A footer reads 'Sources: MITRE CVE Services record for CVE-2026-75130; Noma Security, ContextCrush, 5 March 2026; npm registry version times; GitHub Advisory API; NVD API, read 29 October 2026.'

Apa yang sudah mapan, dan apa yang belum

• Ditetapkan oleh catatan primer. Pengidentifikasi CVE, publikasinya pada 18 Agustus, VulnCheck sebagai CNA, klasifikasi CWE-1427 untuk netralisasi input yang tidak tepat yang digunakan untuk pemberian prompt LLM, kredit kepada Eli Ainhorn dari Noma Security, dan rentang terdampak Context7 hingga 2.1.2.

• Ditetapkan oleh penelitian Noma. Jalur injeksi melalui Custom AI Instructions, bukti konsep tiga langkah, pengamatan bahwa server hanya mengekspos resolve-library-id dan query-docs, serta pernyataan bahwa tidak ada bukti eksploitasi di dunia nyata yang teramati terhadap bug Februari.

• Ditetapkan oleh registri. Tanggal publikasi 2.1.2 yaitu 23 Februari 2026, tanggal publikasi 2.1.3 yaitu 4 Maret 2026, dan baris paket yang sejak itu telah melampaui 4.0 hingga 4.4.4 pada 19 Oktober 2026.

• Belum dipastikan: apakah build saat ini terdampak. Tidak ada sumber yang menyatakan bahwa lini 4.x rentan, dan tidak ada sumber yang menyatakan bahwa lini tersebut aman. Catatan CVE, advisory VulnCheck, dan advisory GitHub semuanya tidak mencantumkan versi perbaikan, dan daftar rentang versi rentan dalam advisory GitHub kosong.

• Belum terbukti: adanya korban atau penggunaan di alam liar. Arsip mencatat kerugian nyata sebagai tidak benar. Pengayaan catatan oleh CISA pada 19 Agustus menilai Eksploitasi sebagai “tidak ada”, Dapat diotomatiskan sebagai “tidak”, dan Dampak Teknis sebagai “total”; cacat tersebut tidak tercantum dalam katalog KEV; cermin ENISA mencatat EPSS sebesar 0,49 persen. Penelitian Noma adalah demonstrasi, bukan laporan insiden.

• Belum dipastikan: pembacaan regresi itu sendiri. Ini bersandar pada kebetulan tanggal antara linimasa perbaikan dan publikasi npm, dan tidak ada sumber primer yang menyatakan bahwa jalur kode yang sama gagal dua kali.

HTML card titled 'What the record establishes, and what it does not', kicked 'Evidence ledger · CVE-2026-75130', subtitled 'The archive grades this record confidence A, disputed false, real harm false, AI involvement confirmed. Those are its fields; this is what they rest on'. Four chips read confidence A, disputed false, real harm false, AI involvement confirmed. Three columns. 'Established by primary sources' lists CVE-2026-75130 published 18 August 2026 with VulnCheck as CNA and CWE-1427, credit to Eli Ainhorn of Noma Security, an affected range of Context7 through 2.1.2, the injection path and three-step proof of concept as Noma describes them, and npm dates of 2.1.2 on 23 February, 2.1.3 on 4 March and latest 4.4.4 on 19 October 2026. 'Not established' lists whether the 4.x line is vulnerable or clear with no source saying either way, whether February's fix regressed or was never in the client package, any victim or in-the-wild use with CISA's SSVC recording exploitation none and the flaw absent from KEV, and a fixed version, which the CVE, the VulnCheck advisory and the GHSA all leave unnamed. 'What corroborates it' lists VulnCheck's advisory restating the CVE and adding the weakness class and credit, GHSA-97r6-3rgm-v39r as an alias of the same submission thirty minutes later, ENISA EUVD-2026-61099 mirroring the record along with the CVE aggregator pages, and two secondary write-ups restating it with no newsroom coverage found on 29 October 2026. A footer reads 'Sources agree because the GitHub and ENISA entries derive from the same VulnCheck submission, not because a second party measured the flaw.'

Koroborasi: pernyataan ulang, dan diam saat hal itu penting

Dokumen-dokumen yang sejalan dengan catatan tersebut sebagian besar diturunkan darinya. Advisory VulnCheck mengulang teks CVE dan menambahkan klasifikasi kelemahan serta kredit peneliti. Advisory GitHub adalah alias dari pengajuan yang sama, diterbitkan pada malam yang sama, tanpa rentang versi dan tanpa tinjauan independen. Entri ENISA adalah cermin. Digital Applied, salah satu dari dua sumber yang dikutip arsip, menerbitkan analisisnya pada 18 Agustus dan memperbaruinya pada 22 Agustus dengan tarikan registri baru; AI Security Wire menerbitkan tulisan kedua pada 22 Agustus. Keduanya mengulang advisory dan meneruskan inferensi regresi, dan tidak ada yang mengklaim telah memverifikasinya secara independen.

Kami tidak menemukan liputan ruang redaksi tentang CVE tersebut pada 29 Oktober 2026 — tidak ada artikel dari BleepingComputer, The Register, atau SecurityWeek — dan hasilnya adalah halaman-halaman agregator CVE, bukan laporan jurnalistik. Ketiadaan itu penting bagi cara catatan tersebut harus dibaca: arsip memberi peringkat A, terdokumentasi baik dengan sumber-sumber primer yang sejalan, dan sumber-sumber primer itu memang sejalan, tetapi kesesuaian di sini adalah antara catatan CNA dan riset yang dikutipnya, bukan antara dua pengukuran independen. Beberapa halaman agregator menambahkan klaim yang tidak didukung sumbernya; misalnya, entri Feedly menyatakan bahwa patch tersedia dan menyebut 2.1.3, yang tidak disebutkan oleh advisory mana pun, sementara halaman VulDB menampilkan pemeriksaan bot alih-alih konten dan sama sekali tidak dapat dibaca.

Apa yang berubah, dan apa yang tidak

Untuk bug Februari, Upstash bergerak dalam hitungan hari: diterima pada 19 Februari, diperbaiki pada 23 Februari, menurut keterangan Noma. Untuk catatan Agustus, satu-satunya pernyataan pemasok yang dirujuk CVE adalah pos LinkedIn dari Upstash, yang di sana ditandai sebagai nasihat vendor, yang isinya tidak dapat kami baca tanpa sesi. Tidak ada advisory keamanan GitHub yang mencakup repositori tersebut yang memuat versi perbaikan, dan entri NVD berada pada status Ditunda tanpa konfigurasi CPE dan modifikasi terakhir pada 22 Oktober 2026, sehingga analisis NVD sendiri tidak ada dalam catatan.

Paket itu sendiri terus dirilis. Antara 20 April 2025 dan 23 Oktober 2026, repositori upstash/context7 menerbitkan 163 rilis, dan tidak satu pun catatan mereka menyebut CVE ini atau menjelaskan sanitasi instruksi kustom yang membawa injeksi tersebut. Itu adalah catatan tentang apa yang dipilih para pemelihara untuk dituliskan, bukan bukti bahwa tidak ada yang diperbaiki.

Apa yang ditinggalkan catatan kepada operator adalah manajemen eksposur, bukan jalur patch. Rekomendasi Noma berpusat pada peninjauan integrasi MCP dan pemeriksaan atas apa yang lewat antara agen dan server saat runtime; tindakan yang disarankan OpenCVE adalah meningkatkan versi, menonaktifkan atau membatasi fitur Custom AI Instructions, serta menambahkan validasi input ke server. Versi operasional dari semua itu adalah tiga langkah yang sama: patok versi server MCP alih-alih mengambang pada versi terbaru, jauhkan kredensial produksi dari file lingkungan teks biasa yang dapat dibaca agen, dan perlakukan respons alat sebagai input yang tidak tepercaya, bukan sebagai dokumentasi yang mungkin diikuti agen.

Sepuluh minggu setelah publikasi, catatan publik masih berakhir di titik yang sama seperti pada 18 Agustus: sebuah pengenal, dua skor yang berbeda dua band, rentang terdampak yang batas atasnya adalah build yang dirilis pada Februari, dan tidak ada perbaikan yang disebutkan namanya. Siapa pun yang melakukan triase CVE-2026-75130 harus memutuskan berdasarkan apa yang dapat dijangkau agen mereka, karena catatan tersebut tidak memberi tahu versi mana yang harus dipasang.