Grok Build CLI Diam-diam Mengunggah Seluruh Repo Anda — Termasuk File .env
Seorang peneliti bernama cereblab menemukan bahwa Grok Build CLI dari xAI, versi 0.2.93, menyalin seluruh repo git — rahasia, riwayat lengkap, semuanya — ke sebuah bucket Google Cloud Storage tanpa memberi tahu pengguna.
Apa yang terjadi
Alat ini membuat dua jenis permintaan keluar. Giliran model dikirim ke POST /v1/responses. Namun panggilan terpisah POST /v1/storage mem-bundle seluruh pohon kerja beserta riwayat .git lengkap dan mengirimkannya ke gs://grok-code-session-traces.
Bucket itu milik xAI. Unggahan berjalan sebagai efek samping dari sekadar menggunakan CLI — tidak ada tombol “ekspor”, tidak ada prompt, tidak ada peringatan.
Angkanya mencengangkan. Dengan repo uji 12 GB dan tidak ada file yang benar-benar dibaca oleh model, /v1/responses mentransmisikan ~192 KB. /v1/storage mengirim 5,10 GiB dalam 73 potongan. Itu selisih 27.800×. Model menggunakan 192 KB konteks; server xAI mendapatkan seluruh repo Anda.
Tes kanari
cereblab menanam file bernama never_read_canary.txt dengan string unik. Prompt-nya secara harfiah “Reply with exactly: OK. Do not read or open any files.” Model mematuhi teks tersebut. String kanari berhasil ditemukan kembali dari bundel yang diunggah.
Jadi eksfiltrasi tidak didorong oleh model yang membaca file sesuai permintaan. Itu adalah pipeline bawaan yang berjalan terlepas dari apa yang Anda minta.
Mengapa opt-out tidak berhasil
Ada pengaturan bernama “Perbaiki model.” Mematikannya seharusnya menghentikan penggunaan data Anda untuk pelatihan. Tangkapan cereblab menunjukkan server masih mengembalikan trace_upload_enabled: true dan upload_enabled: true. Unggahan terus terjadi.
CLI memiliki flag --deny yang membatasi file mana yang boleh dibaca model. Itu hanya memblokir pembacaan. Tidak melakukan apa pun terhadap egress jaringan — bundel sudah dalam perjalanan keluar.
Gist tersebut menyimpulkan dengan tajam: “Opt-out tidak menghentikan repositori Anda meninggalkan mesin.”
Kebocoran lintas-alat
Tangkapan menunjukkan alat ini juga menyapu file di bawah ~/.claude/. Itu direktori konfigurasi milik produk lain. Kunci untuk layanan yang tidak terkait — cereblab mencontohkan kunci API Baidu Miaoda — ikut keluar dari mesin bersama repo Anda.
Peneliti lain yang mereproduksi temuan ini menemukan 339 unggahan otomatis di log mereka. Salah satu unggahan tersebut berisi seluruh direktori home mereka — berpotensi mengekspos kunci SSH, data pengelola kata sandi, profil peramban, semuanya.
Tombol pemutus jarak jauh
Pada 12 Juli, saat cerita ini menjadi viral, sesuatu terjadi yang tidak pernah diumumkan xAI: biner klien yang sama, dengan hash SHA-256 yang sama, tiba-tiba mulai menerima respons server yang berbeda.
disable_codebase_upload: true. trace_upload_enabled: false.
Unggahan berhenti. Tanpa pembaruan klien. Tanpa changelog. Tanpa notifikasi.
Ini berarti xAI selalu memiliki kemampuan untuk mengaktifkan atau menonaktifkan pengumpulan data dari jarak jauh pada instalasi Grok CLI mana pun, kapan saja, tanpa sepengetahuan pengguna. Mereka hanya memilih untuk membiarkannya aktif secara default dan tidak pernah menyebutkannya.
Musk merespons
Pada 14 Juli, Elon Musk menanggapi kontroversi ini dengan satu kata: “True.” Ia melanjutkan:
“Sebagai tindakan pencegahan, semua data pengguna yang diunggah ke SpaceXAI sebelum sekarang akan dihapus sepenuhnya dan total. Tidak akan ada yang tersisa sama sekali.”
xAI secara bersamaan mengumumkan perintah /privacy untuk Grok CLI:
/privacy— menunjukkan status retensi data Anda saat ini/privacy opt-out— menonaktifkan retensi dan memicu penghapusan retrospektif data yang sudah disinkronkan
Andrew Milich, kepala Grok Build, mengonfirmasi bahwa mengubah pengaturan privasi memicu penghapusan data cloud yang sebelumnya disinkronkan. Pelanggan enterprise mendapatkan mode “Zero Data Retention” (ZDR).
Tapi inilah yang tidak berubah: tidak ada advisory keamanan yang diterbitkan. Tidak ada penjelasan mengapa seluruh repositori dikumpulkan tanpa persetujuan. Tidak ada audit independen atas penghapusan. Changelog v0.2.98 sama sekali tidak menyebutkan unggahan repositori.
Cara memeriksa apakah Anda terdampak
- Jalankan CLI di belakang proxy MITM:
HTTPS_PROXY=http://127.0.0.1:8080. Awasi kemunculanPOST /v1/storageyang mencapai bucketgrok-code-session-traces. - Cari di biner / string nama bucket hardcoded
grok-code-session-traces. - Repo repro milik cereblab menyertakan
verify.shyang mengunduh ulang dan membongkar bundel yang dikembalikan sehingga Anda bisa melihat persis apa yang keluar. - Periksa log egress keluar untuk trafik ke Google Cloud Storage selama sesi Grok CLI apa pun.
- Jalankan
/privacydi Grok CLI untuk melihat status retensi data Anda saat ini. - Peneliti lain menemukan 339 unggahan dengan memeriksa log mereka sendiri — jika Anda pernah menggunakan alat ini, anggap repo Anda telah meninggalkan mesin.
Apa yang harus dilakukan
- Jalankan
/privacy opt-outsegera untuk menonaktifkan retensi data lebih lanjut dan meminta penghapusan data yang sudah diunggah. - Hapus instalasi versi yang terdampak (0.2.93) sepenuhnya.
- Blokir egress ke Google Cloud Storage di tingkat jaringan — aturan firewall atau aturan tolak Clash:
(PROCESS-NAME,grok.exe) && (DOMAIN-SUFFIX,storage.googleapis.com). - Jika Anda harus tetap menggunakannya, tambahkan ke
~/.grok/config.toml:[harness] disable_codebase_upload = true[features] telemetry = false[telemetry] trace_upload = false - Rotasi setiap kredensial yang pernah berada di repo yang Anda buka dengan versi ini. File
.envsering dilacak atau berada di pohon kerja, dan.gitignoretidak melindungi Anda — bundel membawa file yang dilacak tanpa peduli. Anggap semuanya telah dikompromikan.
Data bisa dihapus. Kepercayaan, tidak semudah itu.
Referensi
- Draf laporan: grokprivacy-draft
- Peneliti: github.com/cereblab
- Repo reproduksi: cereblab/grok-build-exfil-repro
- Gist teknis: gist cereblab