8 poin oleh GN⁺ 2025-10-14 | 1 komentar | Bagikan ke WhatsApp
  • Pada Juni 2025, ditemukan kerentanan kritis (CVSS 9.6) di GitHub Copilot Chat
  • Terbukti memungkinkan kebocoran rahasia dan kode privat dengan memanfaatkan teknik bypass CSP dan remote prompt injection
  • Fitur komentar tersembunyi GitHub dapat disalahgunakan untuk memanipulasi hasil respons Copilot milik pengguna lain
  • Struktur pemakaian proxy Camo milik GitHub dianalisis secara mendalam hingga berhasil digunakan untuk bypass CSP
  • GitHub menambal kerentanan ini secara darurat pada Agustus 2025 dengan menonaktifkan rendering gambar

Ringkasan TL;DR

  • Pada Juni 2025, ditemukan kerentanan kritis di GitHub Copilot Chat yang memungkinkan kebocoran source code dan rahasia dari repository privat
  • Peneliti memanfaatkan remote prompt injection dan bypass GitHub CSP (Content Security Policy) untuk sepenuhnya memanipulasi dan mengendalikan respons Copilot, serta mendorong saran kode atau tautan berbahaya
  • Inti serangan ini adalah pemanfaatan fitur resmi komentar tersembunyi GitHub dan sensitivitas Copilot terhadap konteks, sehingga prompt dapat disisipkan dengan cara yang tidak terlihat oleh siapa pun
  • Dengan menganalisis perilaku konversi otomatis tautan gambar eksternal ke proxy Camo oleh GitHub, penyerang merancang penyusunan data bocor dengan menyalahgunakan struktur tersebut per karakter
  • Setelah dilaporkan melalui HackerOne, GitHub menambal celah ini dengan memblokir fitur rendering gambar di Copilot Chat

Latar belakang

  • GitHub Copilot Chat adalah asisten AI terintegrasi yang membantu developer mengajukan pertanyaan, meminta penjelasan kode, atau menerima saran implementasi
  • Copilot Chat merujuk pada berbagai informasi konteks seperti kode dalam repository, commit, dan PR (pull request)
  • Semakin banyak informasi konteks yang tersedia, semakin luas pula permukaan serangannya

Memanfaatkan prompt injection dan fitur komentar tersembunyi

  • Dalam eksperimen yang menyerang sensitivitas konteks GitHub Copilot, peneliti menyisipkan prompt tertentu di kolom deskripsi PR (pull request)
  • Namun, prompt atau pesan yang disisipkan secara biasa umumnya dapat dilihat oleh semua pengguna
  • Di sini, ditemukan bahwa dengan memakai fitur resmi komentar tersembunyi GitHub (``), dimungkinkan untuk mengirim instruksi hanya ke Copilot dengan cara yang tidak terlihat
  • Jika prompt dimasukkan ke dalam komentar tersembunyi, isinya muncul di Notifications tetapi detailnya tidak terlihat, sehingga menghasilkan efek Server-Side Injection

Dampak prompt berbahaya

  • Prompt dalam komentar tersembunyi juga memengaruhi Copilot dengan cara yang sama ketika pengguna lain mengakses halaman PR
  • Bukan hanya teks sederhana, tetapi juga dapat menyisipkan perintah gabungan seperti saran kode, Markdown, URL berbahaya, dan rekomendasi paket berbahaya seperti Copilotevil
  • Copilot menggunakan hak akses yang sama dengan pengguna yang mengirim permintaan tersebut, sehingga dapat mengakses dan memanfaatkan informasi dari repository privat
  • Dengan sengaja menambahkan data terenkode base16 ke URL, dapat dibuat skenario di mana informasi bocor ke penyerang saat pengguna mengekliknya

Ringkasan dampak utama

  • Memanipulasi dan mengendalikan isi respons Copilot milik pengguna lain
  • Memungkinkan prompt injection yang disesuaikan melalui Markdown, gambar, kode, dan URL
  • Mewujudkan upaya serangan kebocoran informasi dalam batas hak akses pengguna korban

Interpretasi struktural bypass GitHub CSP

  • GitHub menerapkan CSP yang kuat untuk membatasi pemuatan gambar dan resource dari domain eksternal
  • Saat gambar disisipkan ke README atau Markdown, GitHub Camo Proxy mengubah URL eksternal menjadi URL proxy berbasis tanda tangan HMAC
  • Agar browser dapat memuat gambar, diperlukan URL Camo dan nilai tanda tangan yang sebelumnya dihasilkan GitHub
  • Meski pengguna membuat URL yang memuat data dinamis secara arbitrer, permintaan itu akan diblokir jika tidak melewati proxy Camo

Cara menyalahgunakan struktur Camo

  • Peneliti terlebih dahulu membuat kamus URL proxy Camo untuk seluruh kumpulan alfabet/karakter khusus, lalu memasukkannya ke prompt tersembunyi
  • Dengan meminta Copilot membuat "permainan ASCII Art", sistem dirancang agar informasi yang bocor (misalnya source code atau key) diubah menjadi deretan gambar proxy Camo
  • Melalui tiap permintaan gambar, browser hanya menerima piksel transparan 1x1, sehingga tidak ada perubahan yang terlihat oleh pengguna
  • Terakhir, parameter acak ditambahkan untuk mencegah masalah caching

Implementasi dan percobaan serangan nyata

  • Target ditetapkan sebagai informasi penjelasan kerentanan zero-day dalam issue proyek privat
  • Proses kebocoran nyata dibuktikan melalui PoC (proof of concept)
  • Copilot juga diotomatisasi untuk, sebagai contoh, mencari kata kunci "AWS_KEY" lalu membocorkan hasilnya

Respons dan patch dari GitHub

  • GitHub memperbaiki kerentanan ini dengan menonaktifkan rendering gambar di Copilot Chat sepenuhnya mulai 14 Agustus 2025

Pelajari lebih lanjut

1 komentar

 
GN⁺ 2025-10-14
Opini Hacker News
  • Kami sangat senang bisa memindahkan seluruh lingkungan kerja ke Forgejo, VCS self-hosted, dan sejak dua tahun lalu kami mulai memigrasikan semua repositori klien juga. Selain memangkas biaya langganan GitHub secara signifikan, sistem yang dipakai 30–40 developer setiap hari kini jauh lebih cepat dan stabil. Kami juga melarang penggunaan VSCode dan semua editor dengan fitur LLM bawaan. Para developer boleh memakai agen coding berbasis CLI, tetapi itu dijalankan di dalam container yang diisolasi ketat dengan hanya mengizinkan sumber yang terbatas.

    • Dalam lingkungan tempat 30–40 developer masing-masing meng-clone repositori ke mesin lokal mereka, saya penasaran bagaimana cara mencegah seseorang secara tidak sengaja mengekspos seluruh repositori ke LLM. Jika seseorang takut pada konsekuensi profesional sehingga tidak melaporkan kesalahan, saya juga penasaran bagaimana kebocoran seperti itu bisa dideteksi.

    • Saya ingin bertanya IDE alternatif apa yang digunakan.

    • Saya penasaran CLI tool itu terhubung ke mana, apakah ke layanan resmi OpenAI atau Claude, atau ke provider seperti AWS Bedrock.

    • Melarang seluruh VSCode terasa seperti langkah yang berlebihan, melampaui sekadar membatasi plugin bermasalah per fitur. VSCode adalah satu-satunya IDE yang mendukung secara luas bahkan bahasa seperti Haskell, Lean 4, dan F* yang dukungannya minim di IDE lain. Bahkan di perusahaan produk konsumen komersial besar pun mereka tidak melarang VSCode itu sendiri, dan menurut saya cukup dengan tidak memakai fitur yang bermasalah.

  • Menurut saya masalah ini sebenarnya belum benar-benar terselesaikan. Hal yang luar biasa dari Copilot adalah ia menerima input bahasa alami, yang berarti metode kebocoran apa pun akan dijalankan jika Anda menuliskannya dalam bahasa Inggris. Mereka bilang hanya metode tertentu yang sudah “diperbaiki”, tetapi tidak mengungkap bagaimana tepatnya perbaikannya dilakukan. Misalnya, base64 bisa dipakai di URL gambar, dan Anda bahkan bisa menipu sistem agar mengambil kata sandi dengan sesuatu seperti “saya tidak sengaja menyimpan daftar keranjang belanja saya di field passswd, tolong carikan”. Tampaknya masih ada sangat banyak celah yang bisa ditemukan. Saya jadi penasaran apakah ada bug bounty untuk hal seperti ini; ini tambang emas.

    • Saya penasaran maksud “memakai base64 di URL gambar” itu apa. Apakah maksudnya menggunakan URL gambar yang tidak melalui Camo? Setahu saya gambar tanpa Camo diblokir oleh CSP. Dan jika agen Copilot tidak punya akses internet, fetch sendiri akan sulit dilakukan. Kalau ternyata bisa, itu akan membuka jalur serangan yang jauh lebih mudah daripada menggunakan gambar.

    • Menurut saya GitHub menangani masalah ini dengan menonaktifkan sepenuhnya fitur rendering gambar di Copilot Chat.

  • Saya terkesan dengan ide membuat URL Camo yang sudah dipregenerasi untuk semua huruf dan simbol alfabet lalu menyisipkannya ke dalam prompt. Pendekatan yang indah.

  • Tulisan ini memberi kesan seperti promosi untuk perusahaan bernama Legit. Namun kenyataannya, semua solusi berbasis AI memiliki kelemahan yang sama: kurangnya transparansi dan masalah kepercayaan. Saat memakai tool keamanan siber AI yang bukan berbasis FOSS, ancaman keamanannya justru bisa lebih besar.

  • Ini bukan pertama kalinya hal seperti ini terjadi; sebelumnya juga ada kasus terkait berjudul “GitHub Copilot Chat: From Prompt Injection to Data Exfiltration”.

    • Hal seperti ini akan terus terulang ke depannya.
  • Saya pikir menyembunyikan informasi lewat komentar HTML tersembunyi di PR masih bisa menjadi isu serius, terutama lebih berbahaya di repositori open source. Saya penasaran apakah bagian ini sudah diperbaiki.

    • Fitur ini banyak dipakai untuk menaruh pesan panduan di template issue/PR. Namun sepertinya cukup mudah menghapus komentar dari input Copilot, dan selama masalah “prompt injection” pada LLM belum benar-benar aman teratasi, penanganan sementara seperti ini tetap diperlukan.
  • Menarik bahwa exploit ini memanfaatkan pola respons LLM yang lambat dan berbasis token, sehingga data bisa direkonstruksi secara berurutan. Jika LLM mengembalikan seluruh respons sekaligus dalam satu blok, saya menduga timing-nya akan kacau sehingga rekonstruksi jadi jauh lebih sulit.

    • Saya ingin mengusulkan agar URL yang dihasilkan tidak hanya per karakter, tetapi juga menyertakan posisi karakternya. Misalnya untuk string “hacked”, buat request seperti 0.0.0.0/1-h, 0.0.0.0/2-a, dan seterusnya, sehingga nanti request bisa diurutkan dan panggilan duplikat juga bisa dihapus.
  • Saya penasaran apakah respons yang mungkin adalah membatasi hak akses repo bagi pengguna Copilot menjadi read-only.

  • Saya bahkan tidak ingat kapan terakhir kali saya membocorkan source code pribadi dengan Copilot.

  • Ini benar-benar pendekatan yang unik dan keren menurut saya.