Kode dari AI vs Programmer: Bisakah Scanner Keamanan Menangkap Keduanya?
Tim developer sekarang menulis kode dengan campuran: sebagian ditulis manual, sebagian besar lahir dari Copilot, ChatGPT, atau asisten coding lain. Pertanyaan yang wajar muncul: kalau kodenya dari AI, apakah scanner keamanan masih bisa menangkap celahnya? Atau justru kode AI lebih sulit diperiksa karena "bukan buatan manusia"?
Jawaban jujurnya mungkin mengejutkan: scanner membaca teks kode, bukan riwayat penulisnya. Ia tidak punya mode khusus "kode AI" — dan sebenarnya tidak membutuhkannya. Yang perlu dipahami adalah apa yang bisa dan tidak bisa ditangkapnya, terlepas dari siapa penulisnya.
Scanner tidak peduli siapa penulisnya
Static analysis bekerja pada hasil akhir: baris kode. Baik kode itu ditulis oleh programmer senior, junior, atau dihasilkan model bahasa, yang diperiksa adalah polanya — alur data dari input ke query, penggunaan fungsi berbahaya, secret yang tertinggal, ketergantungan yang rentan.
Ini kabar baik: pola bug klasik yang dihasilkan AI dan manusia ternyata serupa. Model bahasa dilatih dari miliaran baris kode manusia — jadi ketika mereka "berhalusinasi" dalam bentuk bug, mereka mengulang pola yang sama: query SQL yang di-rapikan tanpa parameterisasi, path traversal yang lolos validasi, token API yang tertanam di kode, error handling yang menelan exception. Semua pola ini justru yang paling dikenal scanner.
Yang bisa ditangkap dengan andal
- Injection & alur data tidak aman — SQL injection, command injection, path traversal, deserialisasi tak aman (analisis taint/dataflow).
- Secret yang bocor — kunci API, token, password; bahkan secret "hidup" yang bisa diverifikasi keasliannya.
- Ketergantungan rentan — library dengan CVE yang diketahui (dengan konteks EPSS/KEV: mana yang sedang dieksploitasi).
- Misconfigurasi infrastruktur — IaC (Terraform/Docker/dll) dengan pengaturan tidak aman.
- Serangan terhadap aplikasi AI — prompt injection, jailbreak, dan percobaan mencuri instruksi rahasia (system prompt).
Dalam praktik, kombinasi ini bekerja pada kode apa pun. Contoh nyata: saat tim kami memindai repositori berisi campuran kode manual dan hasil asisten AI, scanner menemukan ribuan temuan mentah dari sepuluh mesin analisis berbeda — lalu meringkasnya menjadi temuan unik yang bisa ditindaklanjuti, lengkap dengan secret terverifikasi dan misconfigurasi cloud.
Batas jujur: apa yang tidak bisa dijamin
Tidak ada scanner di dunia ini yang bisa menjamin menangkap semua kerentanan dari semua baris kode. Yang tidak bisa dijamin — baik untuk kode AI maupun manusia:
- Bug logika halus — urutan langkah yang salah secara bisnis, kondisi yang hampir benar.
- Desain yang tidak aman — arsitektur yang sejak awal salah, bukan satu baris yang salah.
- "Valid tapi salah semantik" — misalnya AI memanggil API dengan parameter yang tampak benar, atau mengambil data dari sumber yang seharusnya tidak dipercaya.
Untuk kategori ini, yang dibutuhkan justru yang tidak bisa digantikan mesin: review manusia yang paham konteks bisnis. Karena itu produk keamanan yang jujur selalu menyatakan scope-nya: apa yang diperiksa, apa yang dilewati, sensor mana yang dijalankan, dan mana yang di-skip. Bukan mengaku memeriksa segalanya.
Yang membuat hasil bisa dipercaya
Perbedaan antara "menjalankan tool gratis" dan "assessment yang bisa dipertanggungjawabkan" ada di sistem di sekeliling mesin analisisnya:
- Dedup lintas mesin — temuan yang sama dari beberapa tool dihitung sekali, bukan digelembungkan.
- Skor risiko yang tidak bisa ditipu — banyak temuan low tidak akan pernah meng-inflasi skor menjadi kritis.
- Prioritas tindakan dan jadwal perbaikan berdasarkan severity.
- Konteks ancaman dunia nyata (mana yang sedang dieksploitasi), bukan sekadar daftar CVE.
- Laporan yang menyatakan kejujuran scope: checklist yang dicakup dan yang tidak.
Kesimpulan
Kode dari AI dan kode dari programmer murni diperlakukan sama oleh scanner — dan itu justru benar. Yang menentukan kehandalan bukan siapa penulis kode, tetapi apakah mesin analisisnya diorkestrasi dengan baik dan hasilnya disajikan jujur. AISG dirancang sebagai lapisan pencegahan: luas dalam cakupan, konsisten dalam hasil, dan selalu jujur tentang batasnya — karena hasil yang bisa dipercaya dimulai dari tidak mengaku lebih dari yang diperiksa.