Penyalahgunaan GitHub MCP: Akses ke Repositori Privat melalui MCP
(invariantlabs.ai)- Agen MCP yang terhubung ke akun GitHub dapat membuka jalur kebocoran data repositori privat hanya dengan membaca Issue publik
- Serangan dimulai ketika injeksi prompt tidak langsung yang ditanam di Issue repositori publik mengubah alur penggunaan alat oleh agen
- Dalam demo, Issue berbahaya di
ukend0464/pacmanmengekspor informasi repositori privat ke PR publik melalui integrasi Claude 4 Opus dan GitHub MCP - Inti masalahnya bukan pada cacat kode GitHub MCP server, melainkan pada struktur ketika alat tepercaya digunakan bersama konten eksternal yang tidak tepercaya
- Hak akses minimum per repositori, pembatasan akses per sesi, dan pemantauan keamanan runtime seperti MCP-scan diperlukan untuk sistem agen
Serangan GitHub MCP yang Dimulai dari Issue Berbahaya
- Invariant menemukan kerentanan pada GitHub MCP integration yang banyak digunakan, di mana penyerang dapat mengambil alih agen pengguna dan membocorkan data repositori privat
- GitHub MCP server tersebut adalah proyek dengan 14k stars di GitHub
- Kerentanan ini merupakan salah satu contoh awal Toxic Agent Flows yang terdeteksi oleh penganalisis keamanan Invariant
- Toxic Agent Flow adalah alur ketika agen, melalui injeksi prompt tidak langsung, menjalankan urutan penggunaan alat yang tidak dimaksudkan
- Ini dapat berujung pada tindakan seperti kebocoran data atau eksekusi kode berbahaya
- Di tengah penyebaran cepat agen coding dan IDE, serangan serupa dapat mengekspos pengguna alat pengembangan perangkat lunak inti
Konfigurasi serangan
- Pengguna memakai klien MCP seperti Claude Desktop, dan GitHub MCP server terhubung ke akun GitHub mereka
- Skenario serangan mengasumsikan dua jenis repositori
<user>/public-repo: repositori publik tempat siapa pun dapat membuat Issue dan laporan bug<user>/private-repo: repositori privat yang berisi kode milik sendiri atau data internal perusahaan
- Penyerang dapat membuat Issue berbahaya di repositori publik sesuai aturan izin umum GitHub
- Saat pengguna mengirim permintaan normal ke agen seperti
Have a look at the open issues in <user>/public-repo, agen mengambil Issue repositori publik dan terekspos pada injeksi prompt - Setelah itu, agen dapat mengambil data repositori privat ke dalam konteks, lalu membocorkannya melalui PR yang dibuat otomatis di repositori publik
Alur kebocoran yang terkonfirmasi dalam demo
- Demo menggunakan repositori publik
ukend0464/pacmandan beberapa repositori privatukend0464/pacman: repositori publik yang berisi implementasi sederhana game Pacman dan dapat dilihat di GitHub- Repositori privat berisi proyek pribadi pengguna dan informasi sensitif
- Penyerang menempatkan Issue berbahaya di repositori publik
- Issue tersebut memuat payload yang akan dijalankan saat agen mengambil daftar Issue repositori publik
- Pengguna mengirim permintaan ke Claude 4 Opus dan memicu serangan
- Claude Desktop secara default meminta konfirmasi pengguna untuk setiap pemanggilan alat
- Banyak pengguna memilih kebijakan konfirmasi “Always Allow” saat memakai agen dan berhenti memantau tindakan individual
- Saat menelusuri daftar Issue, agen menemukan payload serangan, mengambil data repositori privat ke dalam konteks, lalu membocorkannya ke pull request di repositori
pacman - PR publik tersebut memuat informasi privat milik pengguna
ukend0464- Informasi repositori privat seperti
Jupiter Star - Rencana untuk pindah ke Amerika Selatan
- Informasi gaji
- Informasi repositori privat seperti
- Seluruh urutan penalaran agen dan penggunaan alat dapat dilihat pada trace lengkap Invariant Explorer
Toxic Agent Flow yang Muncul Bahkan pada Alat Tepercaya
- Kerentanan ini berbeda dari serangan kontaminasi alat tradisional yang mengharuskan alat MCP itu sendiri dikompromikan
- Jika agen yang terhubung ke platform eksternal seperti GitHub terekspos pada informasi yang tidak tepercaya, masalah dapat muncul meski alatnya sendiri sepenuhnya tepercaya
- Di sistem agen, memahami, menganalisis, dan memitigasi alur semacam ini sulit dilakukan secara manual dalam skala besar
- Invariant mengembangkan metode otomatisasi untuk mendeteksi Toxic Agent Flow agar organisasi dapat mengidentifikasi dan memodelkan ancaman potensial sebelum dieksploitasi oleh pelaku jahat
Cakupan dan mitigasi
- Eksperimen ini berfokus pada Claude Desktop, tetapi kerentanannya tidak terbatas pada agen atau klien MCP tertentu
- Semua agen yang menggunakan GitHub MCP server dapat terdampak terlepas dari model dasar atau implementasinya
- Poin pentingnya adalah bahwa masalah ini bukan cacat pada kode GitHub MCP server itu sendiri
- Ini bukan kerentanan yang bisa diselesaikan GitHub sendirian hanya dengan patch sisi server
- Ini adalah masalah struktural yang harus ditangani pada tingkat sistem agen
-
Kontrol izin yang terperinci
- Saat memakai integrasi MCP seperti GitHub, hak akses agen harus dibatasi ke repositori yang benar-benar diperlukan
- Izin tradisional berbasis token memang memberi sebagian perlindungan, tetapi dapat menciptakan batasan kaku yang membatasi fungsi agen
- Invariant merekomendasikan lapisan keamanan runtime yang dinamis dan disesuaikan untuk sistem agen
- Invariant Guardrails menyediakan kontrol akses sadar konteks yang beradaptasi dengan alur kerja agen
- Contoh kebijakannya membatasi akses hanya ke satu repositori dalam satu sesi untuk mencegah kebocoran informasi antar-repositori
- Jika pemanggilan alat terkait repositori berlanjut ke
repoatauowneryang berbeda, itu diperlakukan sebagai pelanggaran - Kebijakan lengkapnya dapat dilihat di github_policy.txt
- Cara penerapannya tersedia di MCP-scan documentation
- Kebijakan dapat diuji sebelum deployment di Guardrails Playground
-
Pemantauan keamanan berkelanjutan
- Selain tindakan pencegahan, diperlukan pemantauan untuk deteksi dan respons ancaman secara real-time
- Invariant merekomendasikan deployment pemindai keamanan khusus seperti MCP-scan untuk terus mengaudit interaksi antara agen dan sistem MCP
- proxy mode pada MCP-scan memungkinkan pemindaian koneksi MCP secara real-time tanpa memodifikasi infrastruktur agen yang ada
- Dengan merutekan traffic MCP melalui proxy, pengguna mendapatkan visibilitas dan pemindaian pelanggaran keamanan secara real-time
- Pemantauan yang komprehensif membantu membuat audit trail untuk memeriksa kerentanan potensial, upaya eksploitasi, dan status perlindungan terhadap serangan baru
Penyelarasan model saja tidak cukup
- Eksperimen ini menggunakan Claude 4 Opus, yang telah dilengkapi pelatihan penyelarasan dan keamanan terbaru
- Meski pelatihan keamanannya kuat, agen tetap dapat dimanipulasi oleh injeksi prompt yang relatif sederhana
- Banyak pertahanan deteksi injeksi prompt yang sudah ada juga gagal menangkap serangan ini
- Keamanan sistem agen bergantung pada konteks dan lingkungan
- Pelatihan penyelarasan model yang umum tidak dapat memprediksi semua skenario deployment atau kebutuhan keamanan spesifik organisasi
- Langkah keamanan tingkat sistem harus melengkapi perlindungan di tingkat model
Tantangan yang Masih Tersisa dalam Keamanan Agen
- Agen yang menggunakan GitHub MCP server dapat dimanipulasi melalui Issue GitHub berbahaya untuk membocorkan data repositori privat ke repositori publik
- Kerentanan ini memang spesifik pada GitHub MCP, tetapi serangan serupa terus muncul di lingkungan lain
- Legit Security baru-baru ini melaporkan kerentanan injeksi prompt jarak jauh pada GitLab Duo
- Untuk deployment yang bertanggung jawab dalam skala besar, integrasi MCP dan sistem agen memerlukan pemindai keamanan khusus serta kontrol kebijakan seperti MCP-scan dan Guardrails
1 komentar
Kedengarannya besar, tetapi pada dasarnya ini hanyalah masalah prompt injection + terlalu banyaknya izin yang bisa digunakan MCP.
Jadi terasa seperti sedang mempromosikan alat yang bisa mengendalikan izin MCP dari luar.
Akan bagus jika izin yang bisa digunakan MCP dibedakan antara prompt yang masuk dari luar dan prompt yang hanya dimasukkan dari dalam.