Asisten Pemrograman AI Anda Baru Saja Membaca Dompet Anda
Alat pemrograman AI membaca berkas .env sebelum Anda mengetik apa pun. Kunci API Anda — masing-masing seperti kartu kredit tanpa batas pengeluaran — sudah berada di jendela konteks milik pihak lain sebelum Anda menulis prompt pertama. Masalahnya bukan pada AI-nya. Masalahnya adalah bahwa rahasia berupa berkas.
Buka asisten pemrograman AI Anda. Sebelum Anda mengetik satu karakter pun, ia sudah membaca direktori proyek Anda. Berkas .env Anda. Kunci API Anda. Kata sandi basis data Anda. Kunci rahasia Stripe Anda.
Anda tidak memintanya. Anda tidak menyetujuinya. Ini fitur, bukan cacat — alat tersebut membutuhkan konteks proyek agar berguna. Jadi ia membaca semua yang bisa dibaca oleh seorang pengembang.
Dan seorang pengembang bisa membaca segalanya.
Versi greentext
Sebuah unggahan beredar luas minggu ini, ditulis sebagai monolog internal seorang pengembang:
> Buka Claude Code. Berkas .env Anda terbaca sebelum Anda mengetik apa pun. Kunci API Anda kini ada di percakapan. Anda menambahkan "jangan baca .env" ke CLAUDE.md. Tidak berhasil.
380.000 orang melihat unggahan itu. 2.700 menyimpannya. Bukan karena itu berita — melainkan karena itu cermin.
Setiap pengembang yang membacanya berpikir hal yang sama: itu persis pengaturan saya.
Instruksi tidak berhasil
Hal pertama yang dicoba orang adalah menulis aturan. "Jangan membaca berkas .env." Di CLAUDE.md, di AGENTS.md, di system prompt. Larangan yang langsung dan eksplisit.
Alat itu tetap membaca berkasnya.
Ini masuk akal jika Anda memikirkannya. Berkas dibaca sebagai bagian dari pembangunan konteks proyek — sebelum instruksi pun diproses. Meminta model untuk tidak membaca berkas yang sudah ia baca sama seperti meminta seseorang melupakan apa yang baru saja ia lihat. Informasi itu sudah ada di jendela konteks. Sudah terkirim. Instruksi datang setelah kerusakan terjadi.
Seorang peneliti menemukan bahwa bahkan aturan penolakan tingkat berkas pun bisa dielakkan melalui skrip kustom atau rantai pipa. Peneliti lain menemukan tagihan proxy yang membengkak karena kredensial HTTP_PROXY mereka dimuat dan digunakan secara otomatis.
Uang di dalam .env Anda
Orang membingkai ini sebagai masalah privasi. Ini masalah finansial.
Buka berkas .env tipikal pada proyek produksi:
OPENAI_API_KEY=sk-... STRIPE_SECRET_KEY=sk_live_... AWS_ACCESS_KEY_ID=AKIA... AWS_SECRET_ACCESS_KEY=... DATABASE_URL=postgresql://user:pass@...
Kunci OpenAI itu adalah kartu kredit tanpa batas pengeluaran dan tanpa PIN. Siapa pun yang memiliki string itu bisa menjalankan panggilan API senilai $40.000 dalam semalam. Kunci Stripe bisa menerbitkan pengembalian dana, membuat tagihan, mengakses data pembayaran pelanggan. Kredensial AWS — tergantung kebijakan IAM-nya, yang hampir pasti terlalu luas — bisa menyalakan instansi GPU, mengakses bucket S3, atau menghapus infrastruktur.
Ini bukan daftar kata sandi. Ini daftar dompet, masing-masing dengan saldo berbeda dan tanpa kunci.
29 juta dompet di trotoar
Laporan terbaru GitGuardian mencatat 28,6 juta rahasia terekspos dalam commit GitHub publik pada 2025. Lonjakan 34% dari tahun sebelumnya, dan kenaikan tahunan terbesar yang pernah mereka ukur.
Angka khusus AI lebih buruk. 1,2 juta rahasia layanan AI terekspos — lonjakan 81% dari tahun ke tahun. Commit yang ditulis bersama oleh alat pemrograman AI membocorkan rahasia pada laju sekitar dua kali lipat dari baseline. Dan 24.000 rahasia unik ditemukan dalam berkas konfigurasi MCP — saluran yang menghubungkan agen AI ke layanan eksternal.
Dua belas dari lima belas jenis rahasia yang paling cepat tumbuh adalah layanan AI. Bukan basis data. Bukan penyedia cloud. Layanan AI.
Alat yang kita gunakan untuk menulis kode lebih cepat justru membocorkan kunci ke sistem yang dihubungkan oleh kode tersebut.
Masalah yang sebenarnya
Pengembang yang mengunggah utas greentext itu menutupnya dengan solusi praktis — konfigurasi settings.json yang memblokir pembacaan berkas. Itu berhasil. Untuk saat ini, untuk alat itu.
Tapi masalah sebenarnya bukan Claude Code atau Cursor atau Copilot. Masalah sebenarnya adalah bahwa rahasia berupa berkas.
Berkas .env adalah dokumen teks biasa yang tersimpan di disk, dapat dibaca oleh proses apa pun yang berjalan sebagai pengguna Anda. Sebelum alat pemrograman AI, proses yang membaca proyek Anda adalah git, npm, node, editor Anda. Anda mempercayainya secara implisit. Anda tidak memikirkan fakta bahwa rahasia Anda hanya berjarak satu perintah cat dari terekspos.
Alat pemrograman AI hanya membuat yang implisit menjadi eksplisit. Mereka membaca proyek Anda dengan cara yang sama seperti alat lainnya — hanya saja mereka mengirim konteks itu ke tempat yang bisa Anda lihat.
Pipeline CI Anda juga membaca berkas .env. Test runner Anda juga. Linter Anda juga. Build Docker Anda juga. Tidak satu pun dari mereka meminta izin juga. Anda hanya tidak menyadarinya karena mereka tidak menunjukkan transkrip percakapan tentang apa yang mereka temukan.
Pola di baliknya
70% rahasia yang bocor pada 2022 masih aktif hari ini. Tidak dirotasi. Tidak dicabut. Masih berfungsi, masih memberikan akses, tiga tahun kemudian.
Ini angka yang sebenarnya. Bukan 29 juta kebocoran — 70% tidak pernah diperbaiki. Karena merotasi kunci berarti menemukan setiap sistem yang menggunakannya, memperbarui setiap deployment, menguji setiap integrasi. Kunci itu dibuat sekali, ditempelkan ke berkas .env, dan tidak pernah dipikirkan lagi. Biaya kebocorannya instan. Biaya memperbaiki kebocorannya tidak terbatas.
Jadi sebagian besar organisasi tidak memperbaikinya. Mereka tidak bisa. Mereka tidak tahu kunci mana ada di mana, mana yang masih aktif, mana yang sudah disalin ke berkas .env lain di mesin lain oleh pengembang lain yang perlu membuat sebuah fitur berfungsi pada Jumat sore.
Apa artinya ini sebenarnya
Setiap berkas .env adalah sebuah taruhan. Taruhan bahwa tidak ada proses yang akan membacanya yang seharusnya tidak. Taruhan bahwa tidak ada alat yang akan mengirimnya ke tempat yang tidak terduga. Taruhan bahwa tidak ada pengembang yang akan meng-commit-nya secara tidak sengaja.
29 juta kali tahun lalu, seseorang kalah dalam taruhan itu. Hanya di GitHub publik. Repositori privat — tempat GitGuardian menemukan rahasia di 35% repositori — bahkan tidak dihitung.
Solusinya bukan aturan settings.json. Solusinya bukan entri .gitignore. Solusinya bukan menulis "DO NOT READ .ENV" dengan huruf kapital semua di berkas instruksi Anda.
Solusinya adalah bahwa rahasia itu seharusnya tidak ada di sana sejak awal. Bukan dalam berkas. Bukan dalam variabel lingkungan yang dimuat dari berkas. Bukan dalam bentuk apa pun yang dapat dibaca oleh proses dengan izin Anda hanya dengan melakukan apa yang dilakukan proses: membaca berkas di direktori proyek Anda.
Jika rahasia itu ada di disk, ia akan dibaca. Satu-satunya pertanyaan adalah kapan, dan oleh apa.
---
Sumber
- GitGuardian — State of Secrets Sprawl 2025 — 28,6 juta rahasia bocor, tren kredensial layanan AI, statistik remediasi
- GitGuardian: 29M Leaked Secrets — Why AI Agent Credentials Are Out of Control — Liputan Help Net Security dengan rincian khusus AI
- Claude Code Can Consume, Transmit, and Compromise Your .env Files — Tulisan Martin Paul Eve tentang larangan CLAUDE.md yang gagal
- Claude Code Automatically Loads .env Secrets, Without Telling You — Analisis teknis Knostic tentang pemuatan rahasia otomatis
- From .env to Leakage: Mishandling of Secrets by Coding Agents — Analisis Knostic yang lebih luas terhadap Claude dan Cursor
- @zodchiii di X — Unggahan viral yang memicu tulisan ini (380 ribu tayangan, 2,7 ribu simpanan)