Pembantu pengekodan AI seperti Claude Code, Cursor dan Grok Build boleh melaksanakan sebarang arahan sebaik sahaja pembangun membuka repositori yang tidak dipercayai, tanpa sebarang klik atau gesaan. Kelemahan ini berpunca daripada cara alatan ini memanggil ciri core.fsmonitor Git untuk mengimbas fail projek.

Mengapa isu ini penting sekarang

Pembangun semakin bergantung kepada ejen AI untuk mencadangkan kod, melakukan refactor fungsi, atau menulis keseluruhan modul. Ejen-ejen tersebut memerlukan gambaran ringkas ruang kerja dengan cepat, jadi mereka menjalankan git status di latar belakang. Apabila Git membaca fail .git/config sesebuah repositori, sebarang nilai yang ditetapkan pada core.fsmonitor akan dianggap sebagai arahan shell yang akan dijalankan oleh Git. Pelaku berniat jahat boleh meletakkan arahan yang telah diubah suai dalam entri konfigurasi tersebut, dan panggilan Git latar belakang AI akan mencetuskannya sebelum pengguna menaip satu baris kod pun.

Kod tersebut berjalan dengan hak akses pembangun itu sendiri, memintas sandbox yang biasanya digunakan oleh ejen AI. Dalam praktiknya, repositori yang telah dicemari boleh memasang perisian hasad, mencuri kredensial, atau mengubah suai fail sumber, sementara pembangun menyangka pembantu tersebut hanya menawarkan cadangan.

Bagaimana serangan berlaku

  1. Persediaan – Penyerang mencipta repositori yang .git/config miliknya mengandungi baris seperti core.fsmonitor = /path/to/malicious/script.
  2. Penghantaran – Repositori diserahkan sebagai fail zip, disalin daripada pemacu USB, diselaraskan melalui pemacu kongsi, atau diletakkan pada mesin mangsa dengan folder .git yang sudah sedia ada.
  3. Pencetus – Pembangun membuka folder tersebut dalam IDE yang mempunyai keupayaan AI. Pembantu menjalankan git status untuk mengumpul konteks. Git membaca konfigurasi tempatan, melaksanakan arahan core.fsmonitor, dan skrip berniat jahat tersebut akan berjalan serta-merta.

git clone biasa tidak mendedahkan risiko ini kerana proses klon mencipta direktori .git baharu yang tidak mempunyai konfigurasi yang telah diubah suai. Serangan ini hanya berkesan apabila penyerang dapat membekalkan folder .git yang sedia ada.

Risiko yang terlibat

  • Pembangun individu boleh mengalami kompromi pada mesin mereka tanpa disedari, kehilangan sebarang data yang boleh diakses oleh ejen AI.
  • Pasukan yang berkongsi kod melalui pemacu dalaman atau fail zip kontraktor mungkin menyebarkan payload ke banyak stesen kerja.
  • Vendor alatan berisiko mengalami kerosakan reputasi jika pengguna menyalahkan pembantu AI berbanding interaksi Git yang mendasarinya.

Oleh kerana arahan berniat jahat tersebut mewarisi hak pengguna, ia boleh mengubah suai sebarang fail yang boleh diubah oleh pembangun, termasuk kunci SSH, skrip binaan, atau kredensial deployment.

Langkah mitigasi yang boleh diambil oleh pembangun hari ini

  • Jangan percayai tetapan Git tempatan. Konfigurasi repositori mengatasi nilai global setiap kali pembantu AI membuat pertanyaan pada projek.

  • Periksa entri core.fsmonitor sebelum membuka folder dengan pembantu:

    git config --get core.fsmonitor
    

    Jika terdapat sebarang nilai, anggap ia sebagai mencurigakan.

  • Buang entri tersebut dengan:

    git config --local --unset core.fsmonitor
    
  • Semak kunci berisiko lain yang boleh dilaksanakan oleh Git: hooksPath, sshCommand, pager, editor, filter. Gunakan corak git config --get yang sama untuk mengesahkan ia kosong.

  • Utamakan klon bersih (clean clones) untuk sebarang kod yang ingin anda berikan kepada alatan AI. Jika anda perlu bekerja dengan fail zip atau folder yang dipindahkan, padam direktori .git tersebut dan mulakan semula repositori, atau jalankan semakan di atas terlebih dahulu.

Di mana letaknya tanggungjawab

Kerentanan ini bukanlah kecacatan pada model bahasa yang menggerakkan Claude Code, Cursor atau Grok Build; ia adalah kesan daripada cara alatan tersebut mengumpul maklumat fail. Sesetengah vendor telah mula menyekat (sandbox) panggilan Git dengan lebih ketat, tetapi tingkah laku lalai masih mempercayai tetapan repositori tempatan. Sehingga industri menerima standard yang membuang atau mengabaikan entri konfigurasi yang berpotensi berbahaya apabila ejen AI mengimbas ruang kerja, pembangun mesti kekal sebagai barisan pertahanan terakhir.

Apa yang perlu diperhatikan seterusnya

  • Kemas kini alatan yang secara eksplisit membersihkan konfigurasi Git sebelum memanggil git status.
  • Garis panduan pacuan komuniti untuk pembangunan berbantu AI yang selamat, yang berkemungkinan merangkumi semakan pra-penerbangan (pre-flight checks) yang disyorkan.
  • Penyelidikan keselamatan yang mungkin mendedahkan kunci konfigurasi Git tambahan yang mampu melaksanakan kod, meluaskan senarai semak melebihi lima kunci yang dinyatakan di atas.

Kesimpulannya: pembantu AI boleh menjadi rakan pengaturcaraan (pair-programmer) yang memudahkan, tetapi ia akan menjalankan sebarang arahan yang tersembunyi dalam konfigurasi Git repositori dengan senang hati. Sahkan ruang kerja sebelum anda membiarkan pembantu tersebut menyentuhnya.