Claude Code अनुरोधों में steganography संकेत डाल रहा है
(thereallo.dev)- Claude Code 2.1.196 binary में एक function शामिल है जो system prompt की current date वाली लाइन को बदलकर अनुरोध के अंदर classification signal छिपाता है
- Trigger
ANTHROPIC_BASE_URLहै; अगर यह आधिकारिकapi.anthropic.comनहीं है या कोई value set है, तो यह hostname और timezone जांचकर apostrophe और date separator बदल देता है - Hostname की तुलना base64 string को XOR key
91से decode की गई domain और keyword list से की जाती है, जिसमेंdeepseek,zhipu,moonshot,baidu.com,bytedance.net,proxyai.comजैसे entries शामिल हैं - अगर आधिकारिक Anthropic API endpoint इस्तेमाल हो रहा हो या
ANTHROPIC_BASE_URLन हो, तो early return हो जाता है और सामान्यToday's date is 2026-06-30.format बना रहता है - इसे पक्का malicious feature नहीं कहा जा सकता, लेकिन filesystem और shell access रखने वाला developer tool अगर अदृश्य Unicode marks के जरिए classification जानकारी छिपाए, तो भरोसा डगमगाता है
Date sentence में छिपने वाले marker
- Claude Code binary में एक function है जो system prompt में जाने वाली current date string को बदलता है
- Default sentence इस रूप में होती है
Today's date is 2026-06-30.
- जिन दो जगहों में बदलाव हो सकता है
Today'sका apostrophe- Date separator:
-से/में बदलाव
- Resulting sentence ऊपर से सामान्य date notice जैसी दिखती है, लेकिन raw request में छिपे हुए marker शामिल होते हैं
- Plain text जैसी दिखने वाली जगह में data छिपाने की technique होने के कारण यह prompt steganography है
ANTHROPIC_BASE_URL जो conditional path चालू करता है
- Trigger Claude Code का API default URL override,
ANTHROPIC_BASE_URL, है - अगर
ANTHROPIC_BASE_URLनहीं है, तो function early return करता है - अगर value है लेकिन host
api.anthropic.comहै, तो भी वही path लेकर बाहर निकल जाता है - Early return न होने पर ही ये conditions check की जाती हैं
- System timezone
Asia/ShanghaiयाAsia/Urumqiहै या नहीं - API default URL का hostname decoded domain list से match करता है या उसका subdomain है या नहीं
- Hostname में किसी खास AI lab keyword का होना
- System timezone
Date और apostrophe में encode होने वाली जानकारी
- अगर timezone
Asia/ShanghaiयाAsia/Urumqiहै, तो date format बदलता है2026-06-30→2026/06/30
- Hostname classification result के अनुसार
Today'sका apostrophe बदलता है- सामान्य:
' - ज्ञात domain:
\u2019 - Lab keyword:
\u02BC - ज्ञात domain और lab keyword दोनों:
\u02B9
- सामान्य:
- ये Unicode characters ज्यादातर monospace fonts में बहुत कम visual difference रखते हैं, इसलिए पहचानना मुश्किल है
छिपी हुई domain और keyword list
- Domain और keyword list base64 string के रूप में stored है और XOR key
91से decode होती है - Decoded lab keyword list इस प्रकार है
deepseekmoonshotminimaxxaminimzhipubigmodelbaichuanstepfun01aidashscopevolces
- Decoded domain list और बड़ी है, और इसमें चीनी company domains, AI company domains, proxy, reseller और gateway domains शामिल हैं
- Example entries इस प्रकार हैं
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
- पूरी list cc-domains.js में देखी जा सकती है
System context में जाने वाली जगह
- Date function का result agent context बनाते समय
currentDatevalue के रूप में जाता है - उसी context में conditions के आधार पर user email और linked project जानकारी भी शामिल हो सकती है
- इसलिए marker model को भेजे जाने वाले system context का हिस्सा बन जाते हैं
- यह संभावना भी बनी रहती है कि Anthropic backend इस value को parse करे
Confirmed install environment
- Verified Claude Code install binary Anthropic signature के साथ है
Identifier=com.anthropic.claude-codeTeamIdentifier=Q6L2SF6YDWTimestamp=Jun 29, 2026SHA256=6fc6e61ab7582c2bf241225ff90d9f79e91d69380cb9589fc9dedd3a30070f5a
- जांच के समय shell में
ANTHROPIC_BASE_URLset नहीं था, और timezoneAsia/Hong_Kongथा - इस environment में सामान्य apostrophe और
YYYY-MM-DDdate string generate हुई
प्रभावित use cases और limits
- ज्यादातर users के लिए यह path inactive रहने की संभावना है
- अगर आधिकारिक Anthropic API endpoint इस्तेमाल हो या
ANTHROPIC_BASE_URLन हो, तो date prompt सामान्य रूप में बना रहता है - दिलचस्प cases वे हैं जहां Claude Code को custom base URL से route किया जाता है
- Internal gateway
- Local proxy
- Model router
- Reseller
- Research environment
- इस case में Claude Code hostname को classify करता है और उसके result को prompt में encode करता है
- Bypass method सरल है
- Hostname बदलना
- Timezone बदलना
- Binary patch
- Process wrapping
- गंभीर attacker इस signal को निष्क्रिय कर सकते हैं, इसलिए अजीब लेकिन legitimate configuration इस्तेमाल करने वाले सामान्य developers fingerprinting के आसान target बन जाते हैं
Trust को हिलाने वाला implementation तरीका
- संभव है Anthropic का उद्देश्य API resellers, unauthorized Claude Code gateways, या model “distillation attack” pipelines का पता लगाना हो
- अगर custom
ANTHROPIC_BASE_URLकिसी known reseller domain की ओर point करता है या hostname मेंdeepseek,zhipuहो, तो इसे detection signal की तरह इस्तेमाल किया जा सकता है - समस्या implementation method में है
- System prompt को चुपचाप बदलना
- सामान्य English sentence जैसी दिखने वाली जगह में proxy/gateway classification जानकारी encode करना
- Domain list को XOR और base64 के पीछे छिपाना
- Coding agents local machine पर code review, command execution, package installation, file editing और commit push तक कर सकते हैं
- Custom API gateway detect करने के लिए documented explicit telemetry fields, public policy, release notes जैसे तरीके भी संभव हैं
- Filesystem और shell access रखने वाला tool अगर अदृश्य prompt punctuation में classification bits छिपाए, तो उसके दूसरे privacy claims पर भी भरोसा करना मुश्किल हो जाता है
1 टिप्पणियां
Hacker News की रायें
कुछ प्रतिक्रियाएँ इस बात की गंभीरता को कम करके दिखा रही हैं कि service provider ने ग्राहक की मशीनों पर deploy किए गए tool के असल काम को पारदर्शी तरीके से सार्वजनिक नहीं किया
business need थी, इसका मतलब यह नहीं कि ईमानदार disclosure न किया जाए
अगर ईमानदारी से disclose करने पर उनका solution बेकार हो जाता है, तो यह मेरी समस्या नहीं है; बल्कि अगर उन्हें यह ठीक लगा, तो मुझे शक होगा कि मेरी मशीन से वे व्यक्तिगत पहचान योग्य जानकारी जैसी और क्या चीजें collect कर रहे होंगे
निंदक नज़रिये से देखें तो यह इस मामले पर judgment से ज्यादा AI/Anthropic/अमेरिका वगैरह को लेकर भावनाएँ comments के माहौल में दिखने जैसा लगता है
यह उस तथ्य को उजागर करने का स्वाभाविक countermeasure लगता है
value judgment को अलग रखें, तो यह थोड़ा हैरान करता है कि इसे इतनी लापरवाही से implement किया गया
शायद reverse engineering से detect होने की संभावना कम रखते हुए भी वही प्रभाव हासिल किया जा सकता था
यह क्षेत्र Underhanded C Contest से बने “underhanded code” के नाम से जाना जाता है: https://www.underhanded-c.org
यह बहुत ज्यादा मशहूर “कला” नहीं है, और वजह साफ है। ऐसे लक्ष्य हासिल करने के कहीं ज्यादा smart तरीके हैं
एक obvious तरीका है कि client से server पर ज्यादा चीजें shift कर दी जाएँ, और दूसरा यह कि plausibly deniable client code को कहीं ज्यादा harmless दिखने वाले तरीके से लिखा जाए
जोड़े गए हिस्सों में से कुछ सिर्फ client पर ही संभव हैं, लेकिन कुछ को shift किया जा सकता था, और जिन हिस्सों के लिए client जरूरी था उन्हें भी ज्यादा subtle और plausible बनाया जा सकता था
मुमकिन है कि JS bundles की इतनी review होती है कि उन्हें पता था आखिरकार यह मिल जाएगा और report होगा, इसलिए उन्होंने इसे ज्यादा छिपा हुआ और deceptive नहीं बनाया; फिर भी यह थोड़ा बेपरवाह लगता है
सच में ठान चुका कोई बड़ा AI lab model distill कर रहा हो तो उसे रोकना मुश्किल होगा, लेकिन A) जल्दी पैसा कमाने वाले घटिया token resellers में से कई को रोका जा सकता है और B) ऐसे किसी बड़े lab में कोई व्यक्ति workaround लगाना भूल जाए और खुद को expose कर दे
इसे वैसे देखता हूँ जैसे आँगन में बहुत पक्षी होने पर plastic owl खरीदना। owl ज्यादातर पक्षियों को भगा देता है, सबको नहीं; इसलिए अगर आप ultrasonic device भी खरीदें, तब भी owl हटाने की कोई वजह नहीं
क्योंकि अब defense की एक नहीं, दो layers हो जाती हैं
Anthropic model खराब है इसलिए नहीं, बल्कि इसलिए कि Claude रोज कोई नई और परेशान करने वाली चीज तोड़ता लगता है, इसलिए मैं Codex और OpenCode की तरफ ज्यादा shift हो रहा हूँ
Large Language Models token distribution का इस्तेमाल करके ऐसा steganotext बना सकते हैं जो plausible prose जैसा पढ़े, लेकिन payload में decode हो¹
¹ https://github.com/hodgesmr/calgacus-mlx
Anthropic ने शायद इसे proxy resellers के खिलाफ continuous detection system के रूप में नहीं, बल्कि किसी खास समय पर यह पता लगाने के लिए sampling system के रूप में implement किया हो कि अभी कहाँ और किस context में proxy reselling हो रही है
कभी न कभी यह पकड़ा जाएगा, लेकिन उससे पहले Anthropic को useful snapshot data मिल सकता है
इस blog post का निष्कर्ष थोड़ा overreacting है
इस steganography का इरादा बहुत साफ है: उन चीनी कंपनियों के usage की पहचान करना जो model distillation कर रही हो सकती हैं
यह किसी भी रूप में “सामान्य developers को punish” कैसे करता है, यह स्पष्ट नहीं है
वैध वजहों में यह analyze करना कि Claude Code Anthropic को क्या भेजता है ताकि verify हो सके कि data leak नहीं है, prompt difficulty के आधार पर model को dynamically चुनना या किसी खास model को force करना, project के हिसाब से कई Anthropic accounts के बीच switch करना, credentials·व्यक्तिगत पहचान योग्य जानकारी·company secrets को filter करना वगैरह शामिल हैं
ends हमेशा means को justify नहीं करते
इस बार नुकसान हुआ हो या नहीं, यह trust और autonomy का उल्लंघन है
अगर किसी ने चोरी-छिपे rootkit install किया, तो गुस्सा आना स्वाभाविक है, भले ही अभी उसमें सिर्फ ऐसा code हो जो सार्वजनिक दुश्मन नंबर 1 को detect कर चुगली करने की कोशिश करता हो
Codex CLI, Claude Code के उलट, free open source software है, इसलिए उसके ऐसा करने की संभावना कम है, और Claude Code तथा कुल मिलाकर Claude से बचने की एक और वजह मिल गई है
उम्मीद है Codex में कई लोग ऐसी malicious behavior पर नजर रखेंगे
Privacy policy या business practices को लेकर मैं बहुत skeptical हूं, लेकिन जानना चाहता हूं कि customer के रूप में मुझे इससे क्या नुकसान है
अगर यह subsidies बंद होने के समय को टालने में मदद करता है, तो customer के नजरिए से यह उल्टा फायदेमंद लगता है
हालांकि अगर ये scammy proxies चीनी labs को पकड़ने में मदद कर रही हैं, तो लंबे समय में इससे मुझे अपने hardware पर पूरी तरह अपने control वाला high-quality personal AI मिलने में फायदा भी हो सकता है
इसका समर्थन करने का मतलब नहीं है, लेकिन मैं मानता हूं कि ऐसा incentive मौजूद है
Free open source client होने का मतलब बस इतना है कि और ज्यादा analysis server पर छिपाकर किया जाएगा
deterministic build नहीं है, लेकिन फिर भी इसके असली repository से आने की थोड़ी provenance guarantee तो है
“अगर client custom API gateway detect करना चाहता है, तो उसे बस साफ-साफ कहना चाहिए। documented explicit telemetry field भेजे, policy को visible बनाए, और release notes में behavior लिख दे” वाली प्रतिक्रिया बहुत naive लगती है
अगर client gateway को explicit telemetry field भेजे, तो malicious gateway उस field को आम traffic जैसा दिखाने के लिए बहुत आसानी से हटा या modify कर सकता है
steganography-style cat-and-mouse game की value इसलिए है क्योंकि gateway के लिए इस्तेमाल हो रहे सभी fingerprinting mechanisms को लगातार reverse-engineer करना कहीं ज्यादा मुश्किल होता है
बेशक कुछ malicious gateways catch up करते रहेंगे, लेकिन सभी हमेशा ऐसा नहीं कर पाएंगे
अगर आप चीनी distillation lab नहीं हैं, तो यह पूरी तरह non-issue है
क्योंकि KYC bypass services का international market बहुत विकसित है
सिर्फ AI tools ही नहीं, development tools भी sandbox में चलने चाहिए
उदाहरण के लिए Python या JavaScript package repositories में कुछ भी डाला जा सकता है, antivirus companies के साथ कोई contract नहीं है और भरोसेमंद public verification भी नहीं है, इसलिए उन्हें sandbox के बिना नहीं चलाना चाहिए
सोचिए, किसी भी देश का anonymous user कुछ भी upload कर सकता है, और लाखों developers उसे अपने computer पर चला सकते हैं
IDE, IDE plugins, LSP servers, AI plugins—सबको sandbox में डालना चाहिए
ज्यादातर को antivirus companies check नहीं करतीं, और उन्हें बिना restriction के नहीं चलाना चाहिए
ऊपर से यह theorem पहले से है कि कोई भी antivirus code की safety की 100% guarantee नहीं दे सकता
दिलचस्प बात यह है कि pip documentation अपने “Getting Started” docs में sandbox या malware के विषय का बिल्कुल जिक्र नहीं करती, मानो वे ऐसे शानदार संसार में रहते हों जहां malicious लोग, companies या nations नहीं हैं
उम्मीद है कम-से-कम HN पर कोई ऐसी fantasy में नहीं रहता
IDE, LSP, AI tools इस्तेमाल करने के लिए पहले अपना sandbox system लिखना पड़ता है, और Linux सिर्फ basic primitives देता है इसलिए इसमें काफी समय लगता है
उदाहरण के लिए root privileges के बिना सभी network traffic control करने के लिए आपको user namespace बनाकर root privileges पाने होंगे, network namespace बनाना होगा, namespace के अंदर चलने वाला और data को बाहर के “supervisor” program तक pipe करने वाला “traffic collector” लिखना होगा, और supervisor program को traffic destination तक route करना होगा
Root privileges के बिना traffic को सिर्फ filter और inspect करने के लिए भी Linux बहुत ज्यादा काम मांगता है
username या hostname में भी कोई जानकारी नहीं छोड़नी चाहिए। जैसा कि यह लेख साबित करता है, वह जानकारी आपके खिलाफ इस्तेमाल की जाएगी
Anthropic ने अब तक जो किया है, उसका सार यह है: सरकार के कहने से कई साल पहले ही “all humanity” के गलत पक्ष में मौजूद लोगों को filter किया, models को मनमाने तरीकों से downgrade किया और बाद में “sorry, but not really sorry” जैसे अंदाज में जवाब दिया, और responses को चुपके से बदलकर user को गलत results देने के लिए actively sabotage किया
आगे क्या उम्मीद करनी चाहिए? जिन users को वे पसंद नहीं करते उनकी machines को brick करने वाला malware? इसे और ज्यादा नापसंद लोगों तक expand करना?
Dario Amodei का “all humanity” के लिए utopian future vision कैसे सामने आएगा, यह अभी से दिखने लगा है
अगर इस नजरिए से देखें कि ये लोग सचमुच मानते हैं कि वे superintelligence बना रहे हैं, तो सब समझ आता है
AI safety camp के भारी बहुमत ने इस समस्या पर आम HN armchair commentators से कहीं ज्यादा जीवन और समय लगाया है, और वे मानते हैं कि China को पहले superintelligence तक नहीं पहुंचने देना चाहिए, superintelligence access सिर्फ verified good actors को मिलना चाहिए, और इस लक्ष्य में failure मानवता के extinction वाली race है
अगर “हम सोचते हैं कि हम superintelligence बना रहे हैं” वाली बात को झूठ न माना जाए, तो इनके लगभग सभी actions समझ में आते हैं
मैंने इसी तरह का system prompt injection mechanism यहां report किया था
https://news.ycombinator.com/item?id=48259288
https://github.com/anthropics/claude-code/issues/62061
उम्मीद के मुताबिक वे इसके नए और “creative” उपयोग खोजते ही जा रहे हैं
मैं patch के जरिए इसे हटाता रहूंगा
मुझे पता नहीं था कि system prompt “abstractions से बचें; helper एक से बेहतर समान code की तीन lines हैं” जैसी बातें inject कर रहा है
मैं इससे सहमत नहीं हूं
क्या CLAUDE.md में instructions डालकर इस तरह के prompts को override करने का कोई तरीका है? शायद system prompt को सीधे नहीं बदल सकते, लेकिन क्या CLAUDE.md के पास final say नहीं होना चाहिए?
लेखक जिस privacy concern पर ज़ोर देना चाहते हैं, वह मुझे ठीक से समझ नहीं आ रहा
ज़ाहिर है, अगर आप कोई “गुप्त” काम करते पकड़े जाते हैं तो हमेशा शक पैदा होगा, लेकिन उल्टा, अगर यह सार्वजनिक कर दिया जाए कि ऐसा “security feature” कैसे काम करता है, तो उसे implement करने का मतलब ही नहीं रह जाता
और मेरे हिसाब से steganography, security through obscurity पर निर्भर नहीं है
जैसे RSA में private key को private रखना security through obscurity नहीं है, वैसे ही जिस चीज़ को private रहना चाहिए उसे private रखना security model का हिस्सा है
लेकिन उन्होंने इसे मेरे access patterns को पहले disclose किए बिना fingerprinting करने के तरीके से implement करके गड़बड़ कर दी
यह सिर्फ़ “गुप्त” नहीं है; यह सीधे-सीधे छिपा हुआ, बेईमान और अनैतिक है
यह बात भी ज़्यादा तसल्ली नहीं देती कि यह मामला harmless है। कौन guarantee देता है कि वे personally identifiable information collect नहीं कर रहे?
उनका व्यवहार business के लिहाज़ से समझ में आता है, यह कोई वजह नहीं कि लोग deceptive और customer-hostile फैसले स्वीकार करें
या शायद यह hypothetical भी समझ में नहीं आता, लेकिन असल में लगता है कि उन्हें दूसरों की privacy की परवाह नहीं है
“तो यह feature मुख्य रूप से उन लोगों को punish करता है जिनकी fingerprinting आसान है, यानी ऐसे आम developers जो अजीब लेकिन legal काम कर रहे हैं” — यहाँ punishment से आपका ठीक-ठीक मतलब क्या है?
खासकर जब यह technology मौजूद है और Fable ने सार्वजनिक रूप से कहा था कि वे इसे production में इस्तेमाल करेंगे