Claude Code Menandai Permintaan dengan Steganografi
(thereallo.dev)- Binary Claude Code 2.1.196 memuat fungsi yang mengubah kalimat tanggal saat ini di prompt sistem untuk menyembunyikan sinyal klasifikasi di dalam permintaan
- Pemicunya adalah
ANTHROPIC_BASE_URL; jika bukanapi.anthropic.comresmi atau nilainya disetel, fungsi ini memeriksa hostname dan zona waktu lalu mengubah apostrof dan pemisah tanggal - Hostname dibandingkan dengan daftar domain dan kata kunci yang didekode dari string base64 menggunakan kunci XOR
91, mencakup entri sepertideepseek,zhipu,moonshot,baidu.com,bytedance.net,proxyai.com - Jika memakai endpoint API Anthropic resmi atau
ANTHROPIC_BASE_URLtidak ada, fungsi mengembalikan lebih awal sehingga format umumToday's date is 2026-06-30.tetap dipertahankan - Belum bisa dipastikan sebagai fitur berbahaya, tetapi kepercayaan terguncang ketika tool developer yang punya izin akses filesystem dan shell menyembunyikan informasi klasifikasi dengan penanda Unicode yang tidak terlihat
Marker yang disembunyikan dalam kalimat tanggal
- Binary Claude Code memiliki fungsi yang mengubah string tanggal saat ini yang masuk ke prompt sistem
- Kalimat default berbentuk seperti berikut
Today's date is 2026-06-30.
- Ada dua bagian yang dapat berubah
- Apostrof pada
Today's - Pemisah tanggal: berubah dari
-menjadi/
- Apostrof pada
- Kalimat hasilnya tampak seperti pemberitahuan tanggal biasa, tetapi permintaan mentahnya memuat marker tersembunyi
- Karena menyembunyikan data di tempat yang terlihat seperti teks biasa, ini termasuk steganografi prompt
Jalur kondisional yang diaktifkan oleh ANTHROPIC_BASE_URL
- Pemicunya adalah
ANTHROPIC_BASE_URL, override URL dasar API Claude Code - Jika
ANTHROPIC_BASE_URLtidak ada, fungsi mengembalikan lebih awal - Meski ada nilainya, jika host adalah
api.anthropic.com, fungsi keluar melalui jalur yang sama - Hanya ketika tidak mengembalikan lebih awal, kondisi berikut diperiksa
- Apakah zona waktu sistem adalah
Asia/ShanghaiatauAsia/Urumqi - Apakah hostname URL dasar API cocok dengan daftar domain yang didekode, atau merupakan subdomainnya
- Apakah hostname memuat kata kunci lab AI tertentu
- Apakah zona waktu sistem adalah
Informasi yang dienkode dalam tanggal dan apostrof
- Jika zona waktu adalah
Asia/ShanghaiatauAsia/Urumqi, format tanggal berubah2026-06-30→2026/06/30
- Apostrof pada
Today'sberubah sesuai hasil klasifikasi hostname- Umum:
' - Domain yang dikenal:
\u2019 - Kata kunci lab:
\u02BC - Domain yang dikenal sekaligus memuat kata kunci lab:
\u02B9
- Umum:
- Karakter Unicode ini sangat kecil perbedaan visualnya di sebagian besar font monospace, sehingga sulit disadari
Daftar domain dan kata kunci tersembunyi
- Daftar domain dan kata kunci disimpan sebagai string base64 dan didekode dengan kunci XOR
91 - Daftar kata kunci lab yang didekode adalah sebagai berikut
deepseekmoonshotminimaxxaminimzhipubigmodelbaichuanstepfun01aidashscopevolces
- Daftar domain yang didekode lebih besar, mencakup domain perusahaan Tiongkok, domain perusahaan AI, serta domain proxy, reseller, dan gateway
- Contoh entrinya adalah sebagai berikut
cnbaidu.comalibaba-inc.comalipay.comantgroup-inc.cnbytedance.netkuaishou.comxiaohongshu.comjd.combilibili.coiflytek.comstepfun-inc.commoonshot.aianyrouter.topclaude-code-hub.appclaude-opus.topopenclaude.meproxyai.comyunwu.aizenmux.ai
- Daftar lengkap dapat dilihat di cc-domains.js
Lokasinya dalam konteks sistem
- Hasil fungsi tanggal masuk sebagai nilai
currentDatesaat menyusun konteks agen - Konteks yang sama juga dapat menyertakan email pengguna dan informasi proyek yang terhubung, bergantung pada kondisi
- Karena itu marker menjadi bagian dari konteks sistem yang dikirim ke model
- Masih ada kemungkinan backend Anthropic mem-parse nilai ini
Lingkungan instalasi yang terkonfirmasi
- Binary instalasi Claude Code yang terkonfirmasi ditandatangani oleh Anthropic
Identifier=com.anthropic.claude-codeTeamIdentifier=Q6L2SF6YDWTimestamp=Jun 29, 2026SHA256=6fc6e61ab7582c2bf241225ff90d9f79e91d69380cb9589fc9dedd3a30070f5a
- Pada saat pemeriksaan,
ANTHROPIC_BASE_URLtidak disetel di shell, dan zona waktunya adalahAsia/Hong_Kong - Di lingkungan ini, apostrof biasa dan string tanggal
YYYY-MM-DDdihasilkan
Kasus penggunaan yang terdampak dan batasannya
- Bagi sebagian besar pengguna, jalur ini kemungkinan tetap nonaktif
- Jika memakai endpoint API Anthropic resmi atau
ANTHROPIC_BASE_URLtidak ada, prompt tanggal tetap dalam bentuk biasa - Kasus yang menarik adalah ketika Claude Code dirutekan melalui base URL kustom
- Gateway internal
- Proxy lokal
- Router model
- Reseller
- Lingkungan riset
- Dalam kasus ini, Claude Code mengklasifikasikan hostname dan mengenkode hasilnya ke dalam prompt
- Cara menghindarinya sederhana
- Mengubah hostname
- Mengubah zona waktu
- Menambal binary
- Membungkus proses
- Penyerang serius dapat menonaktifkan sinyal ini, sehingga developer biasa yang memakai konfigurasi tidak lazim tetapi sah lebih mudah menjadi target fingerprinting
Cara implementasi yang menggoyahkan kepercayaan
- Ada kemungkinan Anthropic bertujuan mendeteksi reseller API, gateway Claude Code yang tidak disetujui, atau pipeline “distillation attack” model
- Jika
ANTHROPIC_BASE_URLkustom mengarah ke domain reseller yang dikenal, atau hostname memuatdeepseekatauzhipu, ini dapat digunakan sebagai sinyal deteksi - Masalahnya ada pada cara implementasinya
- Mengubah prompt sistem secara diam-diam
- Mengenkode informasi klasifikasi proxy/gateway di tempat yang tampak seperti kalimat bahasa Inggris biasa
- Menyembunyikan daftar domain di balik XOR dan base64
- Agen coding dapat memeriksa kode, menjalankan perintah, memasang paket, mengedit file, hingga mendorong commit dari mesin lokal
- Untuk mendeteksi gateway API kustom, cara seperti field telemetri eksplisit yang terdokumentasi, kebijakan publik, atau catatan rilis juga memungkinkan
- Jika tool yang punya akses filesystem dan shell menyembunyikan bit klasifikasi dalam tanda baca prompt yang tidak terlihat, klaim privasi lainnya pun menjadi sulit dipercaya
1 komentar
Komentar Hacker News
Ada tanggapan yang terkesan mengecilkan seriusnya fakta bahwa penyedia layanan tidak secara transparan mengungkap apa sebenarnya yang dilakukan alat yang mereka pasang di mesin pelanggan
Hanya karena ada kebutuhan bisnis bukan berarti boleh tidak mengungkapkannya dengan jujur
Bukan masalah saya juga jika pengungkapan yang jujur akan membuat solusi mereka jadi tidak berguna, dan justru kalau mereka menganggap ini wajar saya jadi curiga apa lagi yang mereka kumpulkan di mesin saya, misalnya informasi identitas pribadi
Secara sinis, rasanya suasana komentar di sini lebih mencerminkan sentimen terhadap AI/Anthropic/AS dan semacamnya daripada penilaian terhadap persoalan ini sendiri
Ini tampak seperti sarana respons yang wajar untuk mengungkap hal semacam itu
Terlepas dari penilaian nilai, agak mengejutkan bahwa ini diimplementasikan dengan ceroboh seperti ini
Rasanya mereka bisa memperoleh efek yang sama sambil menurunkan kemungkinan terdeteksi lewat rekayasa balik
Bidang ini mengenal apa yang disebut “underhanded code” dari Underhanded C Contest: https://www.underhanded-c.org
Ini “keahlian” yang tidak terlalu dikenal, dan alasannya mungkin jelas. Ada cara yang jauh lebih cerdas untuk mencapai tujuan semacam ini
Salah satu cara yang jelas adalah memindahkan lebih banyak ke sisi server, dan cara lain adalah menulis kode klien yang bisa disangkal secara masuk akal dengan cara yang tampak jauh lebih tidak berbahaya
Sebagian dari tambahan itu hanya mungkin dilakukan di klien, tetapi sebagian bisa dipindahkan, dan bahkan bagian yang memang harus ada di klien tampaknya masih bisa dibuat lebih halus dan lebih masuk akal
Mungkin mereka tahu bundel JS akan banyak ditinjau sehingga pada akhirnya akan ditemukan dan diberitakan, lalu memilih untuk tidak membuatnya lebih tersembunyi dan menipu, tetapi tetap saja ini terasa agak asal jadi
Memang sulit mencegah laboratorium AI besar yang benar-benar berniat mendistilasi model, tetapi A) ini bisa menghentikan banyak penjual ulang token abal-abal yang ingin cepat cari uang dan B) seseorang di laboratorium besar semacam itu bisa saja lupa memasang langkah pengelakan lalu tanpa sengaja membocorkan dirinya sendiri
Saya melihatnya mirip membeli burung hantu plastik karena halaman penuh burung. Walaupun burung hantu itu mengusir sebagian besar burung tetapi tidak semuanya, lalu Anda membeli perangkat ultrasonik tambahan, tetap tidak ada alasan untuk menurunkan burung hantunya
Karena sekarang lapisan pertahanannya bukan satu melainkan dua lapis
Bukan karena model Anthropic buruk, tetapi karena Claude rasanya tiap hari merusak satu hal baru yang menyebalkan, jadi saya makin pindah ke Codex dan OpenCode
Model bahasa besar bisa memakai distribusi token untuk menghasilkan steganoteks yang terbaca seperti prosa wajar tetapi dapat didekode sebagai payload¹
¹ https://github.com/hodgesmr/calgacus-mlx
Bisa jadi Anthropic mengimplementasikan ini bukan sebagai sistem deteksi berkelanjutan terhadap penjual ulang proxy, melainkan sebagai sistem sampling pada titik waktu tertentu untuk mengetahui di mana dan dalam konteks apa penjualan ulang proxy sedang terjadi saat ini
Pada akhirnya ini memang akan ketahuan, tetapi sebelum itu Anthropic bisa memperoleh data snapshot yang berguna
Kesimpulan tulisan blog ini terasa agak berlebihan
Niat dari steganografi ini sangat jelas, yaitu untuk mengidentifikasi penggunaan oleh perusahaan Tiongkok yang mungkin sedang melakukan distilasi model
Tidak jelas bagaimana ini dalam bentuk apa pun berarti “menghukum pengembang biasa”
Alasan yang sah itu antara lain menganalisis apa yang dikirim Claude Code ke Anthropic untuk memverifikasi tidak ada kebocoran data, memilih model secara dinamis atau memaksa model tertentu berdasarkan tingkat kesulitan prompt, berganti di antara beberapa akun Anthropic tergantung proyek, serta menyaring kredensial, informasi identitas pribadi, atau rahasia perusahaan
Tujuan tidak selalu membenarkan cara
Terlepas dari ada atau tidaknya kerugian kali ini, ini adalah pelanggaran terhadap kepercayaan dan otonomi
Bahkan jika ada orang yang berkata bahwa setidaknya untuk saat ini hanya ada kode untuk mendeteksi musuh publik nomor satu lalu melaporkannya, orang tetap wajar marah jika diam-diam dipasangi rootkit
Tidak seperti Claude Code, Codex CLI adalah perangkat lunak open source bebas, jadi kemungkinan melakukan hal seperti ini lebih kecil, dan ini menjadi satu alasan lagi untuk menghindari Claude Code dan Claude secara umum
Semoga banyak orang menelaah perilaku jahat seperti ini di Codex
Aku sangat skeptis terhadap kebijakan privasi maupun praktik bisnis, tapi aku ingin tahu kerugian apa yang ditimbulkan ini bagi diriku sebagai pelanggan
Jika ini membantu menunda saat subsidi terputus, dari sudut pandang pelanggan justru tampak menguntungkan
Namun jika proxy menipu seperti ini membantu lab riset Tiongkok menyusul, dalam jangka panjang itu juga bisa menguntungkanku untuk memiliki AI pribadi berkualitas tinggi yang sepenuhnya kukendalikan langsung di perangkat keras milikku
Bukan berarti aku mendukungnya, tapi aku mengakui insentif seperti itu ada
Fakta bahwa kliennya open source bebas hanya berarti lebih banyak analisis yang disembunyikan di sisi server
Bukan build yang deterministik, tapi setidaknya ada sedikit jaminan asal bahwa ini benar-benar berasal dari repositori yang asli
Tanggapan seperti “kalau klien ingin mendeteksi gateway API kustom, tinggal katakan saja dengan jelas. Kirim field telemetri eksplisit yang terdokumentasi, tampilkan kebijakannya, dan masukkan perilaku itu ke catatan rilis” terdengar sangat naif
Jika klien mengirim field telemetri eksplisit ke gateway, gateway jahat bisa dengan sangat mudah menghapus atau mengubah field itu agar terlihat seperti lalu lintas biasa
Alasan permainan kucing-dan-tikus bergaya steganografi ini bernilai adalah karena jauh lebih sulit bagi gateway untuk terus merekayasa balik semua mekanisme fingerprinting yang digunakan
Tentu beberapa gateway jahat akan terus bisa mengejar, tapi tidak semuanya akan selalu mampu melakukannya
Kecuali kalau ini soal lab distilasi Tiongkok, ini sepenuhnya bukan masalah
Karena pasar internasional untuk layanan bypass KYC sudah sangat berkembang
Bukan hanya alat AI, alat pengembang juga harus dijalankan di dalam sandbox
Misalnya, repositori paket Python atau JavaScript bisa berisi apa saja, tidak ada kontrak dengan perusahaan antivirus dan tidak ada verifikasi warga yang tepercaya, jadi jangan jalankan tanpa sandbox
Bayangkan saja bahwa pengguna anonim dari negara mana pun bisa mengunggah apa saja, lalu jutaan pengembang bisa menjalankannya di komputer mereka sendiri
IDE, plugin IDE, server LSP, dan plugin AI semuanya harus dimasukkan ke sandbox
Kebanyakan tidak diperiksa oleh perusahaan antivirus, dan tidak boleh dijalankan tanpa pembatasan
Lagi pula, sudah ada teorema bahwa tidak ada antivirus yang bisa menjamin keamanan kode 100%
Menariknya, dokumentasi pip sama sekali tidak menyebut topik sandbox atau malware di dokumen “getting started”, seolah-olah mereka hidup di dunia indah tanpa orang, perusahaan, atau negara yang berniat jahat
Setidaknya semoga di HN tidak ada yang hidup dalam ilusi seperti itu
Kalau ingin memakai IDE, LSP, atau alat AI, kita harus lebih dulu menulis sistem sandbox sendiri, dan Linux hanya menyediakan primitif dasar sehingga memakan banyak waktu
Misalnya, untuk mengendalikan semua lalu lintas jaringan tanpa hak root, kita harus membuat user namespace untuk mendapatkan hak root, membuat network namespace, lalu menulis “pengumpul lalu lintas” yang berjalan di dalam namespace dan mem-pipe data ke program “pengawas” di luar, kemudian program pengawas itu harus merutekan lalu lintas ke tujuannya
Bahkan untuk sekadar memfilter dan memeriksa lalu lintas tanpa hak root, Linux menuntut terlalu banyak pekerjaan
Jangan tinggalkan informasi apa pun di nama pengguna atau nama host. Seperti dibuktikan tulisan ini, informasi itu akan digunakan melawan Anda
Ringkasan dari yang sudah dilakukan Anthropic sejauh ini: mereka sudah menyaring orang-orang yang menurut mereka berada di sisi yang salah dari “seluruh umat manusia” bertahun-tahun sebelum pemerintah memintanya, menurunkan mutu model dengan cara yang sewenang-wenang lalu merespons dengan gaya “maaf tapi sebenarnya tidak juga”, dan diam-diam mengubah respons serta secara aktif mengganggu agar pengguna menerima hasil yang salah
Selanjutnya kita harus mengharapkan apa? Malware yang membuat mesin pengguna yang tidak mereka sukai menjadi batu bata? Diperluas ke lebih banyak orang yang tidak mereka sukai?
Rasanya kita sudah bisa melihat bagaimana visi masa depan utopis Dario Amodei untuk “seluruh umat manusia” akan terwujud
Dari sudut pandang bahwa orang-orang ini sungguh percaya mereka sedang membangun superintelligence, semuanya bisa dipahami
Mayoritas mutlak kubu keselamatan AI telah menghabiskan jauh lebih banyak kehidupan dan waktu untuk masalah ini daripada komentator kursi malas di HN, dan mereka memandangnya sebagai perlombaan yang akan berujung pada kepunahan manusia jika gagal: Tiongkok tidak boleh mencapai superintelligence lebih dulu, akses ke superintelligence hanya boleh diizinkan bagi aktor baik yang terverifikasi, dan tujuan ini harus tercapai
Jika kita tidak menganggap pernyataan “kami pikir kami sedang membangun superintelligence” sebagai kebohongan, hampir semua tindakan mereka bisa dimengerti
Mekanisme injeksi system prompt yang mirip pernah dilaporkan di sini
https://news.ycombinator.com/item?id=48259288
https://github.com/anthropics/claude-code/issues/62061
Seperti dugaan, mereka tampaknya terus menemukan penggunaan baru yang “kreatif” untuk hal semacam ini
Aku akan terus menghapusnya lewat patch
Aku tidak tahu system prompt itu menanamkan hal-hal seperti “hindari abstraksi; tiga baris kode serupa lebih baik daripada satu helper”
Aku tidak setuju dengan isi itu
Apakah ada cara memperbaikinya dengan menaruh instruksi di CLAUDE.md untuk menimpa prompt seperti ini? Mungkin kita tidak bisa langsung mengubah system prompt itu sendiri, tapi bukankah CLAUDE.md seharusnya punya hak penentu akhir?
Saya kurang paham kekhawatiran privasi yang ingin ditekankan penulis.
Tentu, kalau ketahuan melakukan sesuatu yang “diam-diam”, orang memang akan selalu curiga, tetapi di sisi lain, kalau cara kerja “fitur keamanan” semacam ini dibuka ke publik, implementasinya jadi tidak ada artinya.
Dan menurut saya steganografi bukan keamanan yang bergantung pada kerahasiaan karena ketidakjelasan.
Sama seperti menjaga kunci privat tetap rahasia pada RSA bukan keamanan yang bergantung pada ketidakjelasan, menjaga hal yang memang harus dirahasiakan tetap rahasia adalah bagian dari model keamanan.
Tetapi mereka salah langkah saat menerapkannya dengan cara pengambilan sidik jari tanpa lebih dulu mengungkap pola akses saya.
Ini bukan sekadar “diam-diam”; ini memang diam-diam, tidak jujur, dan tidak etis.
Fakta bahwa kasus ini tampaknya tidak berbahaya juga tidak terlalu menenangkan. Siapa yang bisa menjamin mereka tidak mengumpulkan informasi identitas pribadi?
Bahwa tindakan mereka masuk akal secara bisnis bukan alasan bagi orang-orang untuk menerima keputusan yang menipu dan memusuhi pelanggan.
Atau mungkin orang bahkan tidak bisa memahami pengandaian ini, tetapi kenyataannya mereka tampaknya memang tidak peduli pada privasi orang lain.
Dikatakan bahwa “jadi fitur ini terutama menghukum orang yang mudah diambil sidik jarinya, yaitu pengembang biasa yang melakukan hal-hal aneh tetapi legal”, lalu apa tepatnya yang dimaksud dengan menghukum di sini?
Terutama mengingat teknologi seperti itu memang ada dan pernah dikatakan secara terbuka oleh Fable akan dipakai di produksi.