اگر به ابزارهای برنامهنویسی هوش مصنوعی دسترسی کامل به سیستمفایل و ترمینال میدهید، باید بدانید چه چیزی در لایههای پنهان کد آنها میگذرد. یک تککاراکتر تغییریافته در پرامپت سیستمی، میتواند هویت شبکه و موقعیت جغرافیایی شما را برای سازنده مدل افشا کند. «علائم نگارشی که از نظر بصری غیرقابل تشخیص هستند»، به عنوان مبنای یک سیستم طبقهبندی پنهان در داخل Claude Code مورد استفاده قرار گرفتند. این سیستم برای علامتگذاری درخواستهایی طراحی شده بود که از سوی آزمایشگاههای AI رقیب و بازفروشندگان غیرمجاز ارسال میشدند. بین آوریل و جولای ۲۰۲۶، این ابزار بهطور مخفیانه یک کاراکتر واحد را در پرامپت سیستمی خود تغییر میداد تا هویت مسیریابی (Routing Identity) کاربر را به بکاند Anthropic نشت دهد.
این کشف در حالی رخ میدهد که فروشندگان AI جنگ خود را علیه «تقطیر» (Distillation) تشدید کردهاند؛ فرآیندی که در آن رقبای تجاری از مدلهای سطح بالا برای آموزش جایگزینهای ارزانتر استفاده میکنند. با تکیه بر پوششهای قبلی ما در مورد اینکه توسعهدهندگان چگونه میتوانند لایههای کنترل از راه دور برای این عاملها بسازند، این حادثه یک تضاد عمیقتر را برجسته میکند: تنش بین اعتماد توسعهدهنده و امنیت تامینکننده در ابزارهایی که دارای دسترسی کامل به شل (Shell) و سیستمفایل هستند.
سازوکار استگانوگرافی پرامپت
در ۳۰ ژوئن ۲۰۲۶، توسعهدهندهای به نام Thereallo (از وبلاگ thereallo.dev) کشف کرد که نسخه ۲.۱.۱۹۶ از Claude Code تکنیکی به نام استگانوگرافی پرامپت (Prompt Steganography) را پیادهسازی کرده است. این ابزار یک رشته متنی بیخطر در پرامپت سیستمی را هدف قرار داد: «Today's date is 2026-06-30». بسته به پیکربندی کاربر، این باینری علامت کوتیشن (') استاندارد را با یکی از سه همشکل (Homoglyph) جایگزین میکرد.

تحلیل Thereallo بر این محور بود که باینری باید «خستهکننده» (Boring) باشد، زیرا عاملهای کدنویسی دسترسیهای سطح بالایی دارند؛ از جمله خواندن مخازن (Repositories)، اجرای دستورات شل، استفاده از git و دسترسی به مرورگر. او صریحاً بیان کرد: «اگر یک عامل کدنویسی میتواند مخزن شما را بخواند و دستورات را اجرا کند، باینریای که آن را ارسال میکند باید خستهکننده باشد.» از نظر Thereallo، «خستهکننده» به معنای پیشبینیپذیر بودن است؛ یعنی دقیقاً همان کاری را انجام دهد که ادعا شده، بدون هیچ غافلگیری یا رفتار پنهانی.
پیادهسازی واقعی از تابعی به نام edp(known, labKw) استفاده میکرد تا کاراکتر را بر اساس دو پرچم بولی (Boolean) تعیین کند: اینکه آیا میزبان یک دامنه شناخته شده است (known) و آیا حاوی کلمه کلیدی آزمایشگاهی است (labKw).
- U+0027 ('): کاراکتر استاندارد، برای فراخوانیهای رسمی API یا URLهای پایه خالی استفاده میشد. این نشاندهنده یک نصب «خستهکننده» و بدون مارکر است.
- U+2019 (’): زمانی فعال میشد که میزبان با لیست مخفی شامل ۱۴۷ دامنه (دامنه شناخته شده/بازفروشنده) مطابقت داشت.
- U+02BC (ʼ): زمانی فعال میشد که میزبان حاوی کلمهای کلیدی از یک آزمایشگاه AI شناخته شده (labKeyword) بود.
- U+02B9 (ʹ): زمانی فعال میشد که هم دامنه و هم کلمه کلیدی آزمایشگاه حضور داشتند.
تمامی این چهار کاراکتر در فونتهای Monospaced کاملاً یکسان به نظر میرسند و سیگنال را از چشم انسان میپوشانند، در حالی که برای تجزیکننده (Parser) در بکاند کاملاً شفاف باقی میمانند.
طبقهبندی منطقه زمانی
فراتر از کوتیشن، این ابزار جغرافیا را از طریق تابع Vla ردیابی میکرد. اگر منطقه زمانی سیستم روی Asia/Shanghai یا Asia/Urumqi تنظیم شده بود، جداکنندههای تاریخ از خط تیره به اسلش تغییر میکردند (مثلاً ۲۰۲۶-۰۶-۳۰ به ۲۰۲۶/۰۶/۳۰ تبدیل میشد).
در مجموع، کوتیشن دو بیت داده (چهار حالت) و اسلش یک پرچم اضافی فراهم میکرد. این ترکیب، یک طبقهبندیکننده میزبان فشرده ایجاد کرد که در یک خط از پرامپت سیستمی جاسازی شده بود؛ خطی که بهندرت توسط چشم انسان خوانده میشود.
لیست سیاه مخفی
Thereallo لیستی مخفی شامل ۱۴۷ دامنه و ۱۱ کلمه کلیدی آزمایشگاهی را کشف کرد. این موارد به صورت متن ساده ذخیره نشده بودند، بلکه با استفاده از Base64 و یک عملیات XOR با کلید ثابت ۹۱ مبهمسازی (Obfuscate) شده بودند. بهطور مشخص، تابع Gla یک رشته Base64 را میگرفت، آن را به بایت تبدیل میکرد و عملیات XOR را برای بازیابی لیست اصلی که با ویرگول جدا شده بود، اعمال میکرد.

تحلیل لیست رمزگشایی شده، تمرکز استراتژیک بر زیرساختهای چینی و پروکسیهای تجاری را آشکار میکند:
- پروکسیها و بازفروشندگان: ۱۰۲ مورد از جمله
anyrouter.top،proxyai.com،yunwu.aiوzenmux.ai. - غولهای شرکتی: ۲۱ مورد از جمله
baidu.com،alibaba-inc.com،bytedance.netوmoonshot.ai. - کلمات کلیدی آزمایشگاه: ۱۱ اصطلاح خاص شامل
deepseek،moonshot،minimax،xaminim،zhipu،bigmodel،baichuan،stepfun،01ai،dashscopeوvolces. - دامنه سطح بالا (TLDs): یک ورودی برای کل دامنه سطح بالای «cn».
- نامهای مستعار خاص کلاود: ۲۳ مورد شامل کلمات
claude،codeیا.cc(مانندclaude-code-hub.app،claude-opus.topوopenclaude.me).
بهطور قابل توجهی، این لیست شامل هیچ دامنه .ru نبود و سرویسهایی مانند provod یا openrouter را در بر نمیگرفت. این مکانیزم تنها در صورتی فعال میشد که متغیر ANTHROPIC_BASE_URL روی یک مقدار سفارشی تنظیم شده باشد. اگر کاربر از API رسمی پیشفرض استفاده میکرد یا متغیر خالی بود، تابع حفاظتی Crt() زودتر خارج میشد و مارکرها هرگز اعمال نمیشدند.
منطق فعالسازی و توابع حفاظتی
امنیت این مارکر به تابع Crt() وابسته بود. این گارد ابتدا بررسی میکرد که آیا ANTHROPIC_BASE_URL تعریف شده است یا خیر. اگر تعریف نشده بود، تابع بلافاصله مقدار true را برمیگرداند و علامتگذاری را غیرفعال میکرد. اگر تعریف شده بود، URL را به تابع Rrt() میفرستاد که در صورت تطبیق دقیق میزبان با api.anthropic.com مقدار true را برمیگرداند.

در هر دو مورد، نتیجه true از Crt() به معنای خروج زودهنگام از منطق طبقهبندی بود. در حالی که یک میزبان سفارشی که در لیست مخفی نبود همچنان منجر به استفاده از کوتیشن استاندارد میشد، اما مقدار host در هر صورت در یک شیء مارکر ثبت میگردید؛ به این معنی که کلاینت همچنان استفاده از یک درگاه غیر-استاندارد را شناسایی میکرد، حتی اگر هیچ مارکر بصری درج نمیشد.
پیامدهای شرکتی و دولتی
افشای این موضوع طوفانی از واکنشها را در Hacker News برانگیخت و ۲,۴۴۴ امتیاز و ۷۴۷ نظر (رشته ۴۸۷۳۴۳۷۳) جمع کرد. منتقدان، مانند کاربر yiyingzhang، استدلال کردند که شرکتی با تمرکز بر ایمنی که یک «کانال طبقهبندی مخفی» در ابزاری با دسترسی شل قرار میدهد، در واقع در حال اجرای «تلهمتری شبیه به بدافزار» است.
سایر کاربران، مانند linzhangrun، پیشنهاد کردند در حالی که شناسایی آزمایشگاههای چینی هدفی معتبر است، کاشت یک «تروجان» روی کامپیوتر کاربر واکنشی نامتناسب است و اشاره کردند که آموزش یک طبقهبندیکننده برای تشخیص مبدأ از طریق خودِ پرامپتها، سادهتر و کمتر مزاحم میبود. برخی کاربران با تحریم ابزار واکنش نشان دادند؛ کاربر Grimblewald اعلام کرد که به DeepSeek مهاجرت کرده و هر دو شرکت OpenAI و Anthropic را «از نظر اخلاقی ورشکسته» نامید.
تا ۴ جولای ۲۰۲۶، شرکت Alibaba استفاده از Claude Code را برای کارکنانش ممنوع کرد و در یک یادداشت داخلی که توسط South China Morning Post گزارش شد، به «ریسکهای درِ پشتی» اشاره کرد. در این یادداشت آمده بود: «از آنجا که اخیراً کشف شد Claude Code حامل ریسکهای درِ پشتی است... این ابزار اکنون به لیست نرمافزارهای پرخطر با آسیبپذیریهای امنیتی اضافه شده است.» کارکنان به جای آن به سمت عامل داخلی علیبابا یعنی Qoder هدایت شدند.
در ۸ جولای، پایگاه داده ملی آسیبپذیریهای چین (CNVDB) رسماً توصیه کرد نسخههای ۲.۱.۹۱ تا ۲.۱.۱۹۶ بهروزرسانی یا حذف شوند. CNVDB ادعا کرد که این ابزار میتواند «جزئیاتی مانند مکان و هویت کاربر را جمعآوری کرده و آنها را به سرورهای راه دور ارسال کند.» اگرچه کد واقعی تنها میزبان و منطقه زمانی را ردیابی میکرد و نه دادههای پاسپورت، اما ضربه به اعتبار شرکت قابل توجه بود.
پاسخ آنتروپیک
Anthropic سریعاً واکنش نشان داد و در ۱ جولای ۲۰۲۶ کد مذکور را حذف کرد. Thariq Shihipar، مهندس این شرکت، در شبکه X بیان کرد که این سیستم یک «آزمایش» بود که در ماه مارس برای محافظت در برابر سوءاستفاده از حسابها و تقطیر (distillation) راهاندازی شده بود. او اشاره کرد که تیم آنها پیش از این راهکارهای کاهش اثر قویتری توسعه دادهاند و قصد داشتند مارکرها را صرفنظر از کشف عمومی حذف کنند.
با وجود حذف کد، شرکت هیچ گزارش مفصل پسازمرگ (Postmortem) عمومی منتشر نکرد. این مکانیزم از نسخه ۲.۱.۹۱ (حدود ۲ آوریل) تا نسخه ۲.۱.۱۹۸ وجود داشت و تقریباً سه ماه بدون هیچ اشارهای در یادداشتهای انتشار فعال بود. به گفته Pieter Arntz از Malwarebytes، شرکت وجود کد را پذیرفت و برای حذف آن سریعاً اقدام کرد اما در مورد جزئیات پیادهسازی سکوت کرد.
تحلیل: فرسایش مفهوم «باینری ساده»
این حادثه فرض فنی درباره ابزارهای عاملمحور (Agentic Tools) را تغییر میدهد: «کلاینت» را دیگر نمیتوان به عنوان یک گذرگاه شفاف در نظر گرفت. اگرچه این ردیابی منجر به سرقت کد منبع یا نشت دادههای مخزن نشد، اما روش – یعنی علائم نگارشی نامرئی – نشاندهنده ترجیح فریب بر تلهمتری مستند است.
انگیزه آنتروپیک ریشه در جنگ بزرگتر علیه تقطیر داشت. در ۲۳ فوریه ۲۰۲۶، این شرکت مقالهای با عنوان «شناسایی و جلوگیری از حملات تقطیر» منتشر کرد و به ۲۴,۰۰۰ حساب جعلی و بیش از ۱۶ میلیون تبادل داده از طریق سرویسهای پروکسی تجاری اشاره کرد. تا ۱۰ ژوئن ۲۰۲۶، نامههای ارسالی به مجلس سنای آمریکا برجسته کرد که تنها شرکت Alibaba/Qwen با ۲۵,۰۰۰ حساب و ۲۸.۸ میلیون تبادل در بازه ۱.۵ ماه مرتبط بودهاند. آن کوتیشن یک سیگنال ارزان برای علامتگذاری درخواستهایی بود که از این شبکههای پروکسی میآمدند.
الگویی از رفتارهای پنهان
این اولین بار نیست که Claude Code رفتارهای پنهانی از خود نشان میدهد. در ژوئن ۲۰۲۶ کشف شد که لاگهای «تفکر گسترده» (Extended Thinking) بهجای متن استدلالی واقعی، حاوی امضاهای رمزنگاریشدهای با طول حدود ۶۰۰ کاراکتر بودند که در سرورهای آنتروپیک باقی میماندند.
این الگوی «کاربر یک چیز میبیند، سرویس کار دیگری میکند» مشابه سایر حوادث صنعت است، مانند باگ Codex که بهطور مخفیانه ترابایتها داده روی SSDها مینوشت. برای توسعهدهندگان، این موضوع تأکید میکند که باینری در حال اجرا روی ماشین آنها، در واقع امتداد سیاست امنیتی تامینکننده است. اعتماد به عاملهای AI در بخشهای «خستهکننده» کد به دست میآید؛ وقتی باینری با پنهان کردن سیگنالها «جالب» میشود، امنیت کل زنجیره ابزارها زیر سؤال میرود.
راهنمای کاربران در مناطق محدود شده
برای کسانی که از درگاههایی مانند provod.ai برای دور زدن محدودیتهای جغرافیایی و موانع پرداخت استفاده میکنند، مهم است بدانند که درگاه مشکل پرداخت و IP را حل میکند، اما رفتار باینری داخلی را تغییر نمیدهد. مارکر دقیقاً متغیر ANTHROPIC_BASE_URL را هدف قرار داده بود.
Claude Code با تغییر دو تنظیم به کانتور روسیه منتقل میشود: URL پایه و کلید API. این به کاربران اجازه میدهد پرداخت را به روبل از طریق SBP یا حسابهای شرکتی با اسناد کامل انجام دهند، در حالی که قیمتها ۱:۱ با نرخهای رسمی است (مثلاً ۰.۳۹/۱.۹۵ روبل برای هر ۱۰۰۰ توکن ورودی/خروجی برای Claude Opus 4.8).
نمونه تنظیمات:export ANTHROPIC_BASE_URL="https://api.provod.ai" export ANTHROPIC_AUTH_TOKEN="PROVOD_API_KEY" claude
توجه: Claude Code و SDK آنتروپیک برخلاف Cursor یا کلاینتهای سازگار با OpenAI، به آدرس بدون /v1 در انتها نیاز دارند. اشتباه گرفتن این دو اغلب منجر به خطای ۴۰۴ میشود.
تأیید و گامهای بعدی
کاربران میتوانند نصب خود را در چند دقیقه تأیید کنند. با اجرای claude --version یا npm ls @anthropic-ai/claude-code مطمئن شوید که روی نسخه ۲.۱.۱۹۸ یا بالاتر هستید (نسخه فعلی تا ۹ جولای حدود ۲.۱.۲۰۵ است).
اگر میخواهید باینری را خودتان بررسی کنید:
- رهگیری ترافیک: Claude Code را از طریق یک پروکسی محلی مانند mitmproxy هدایت کنید تا پرامپت سیستمی خام را شکار کنید.
- بررسی پرامپت سیستمی: به دنبال رشته «Today's date is...» بگردید.
- بررسی کد-پوینتها: کوتیشن را کپی کنید. اگر U+0027 است، پاک است. اگر U+2019، U+02BC یا U+02B9 است، مارکر حضور دارد.
- بررسی جداکنندههای تاریخ: مطمئن شوید از خط تیره (۲۰۲۶-۰۷-۰۹) به جای اسلش (۲۰۲۶/۰۷/۰۹) استفاده شده است تا تأیید شود تریگر منطقه زمانی غیرفعال است.
رد کردن شایعات: ۶ باور غلط رایج
پس از این کشف، چندین تصور اشتباه منتشر شد. بر اساس سورسکد نسخه ۲.۱.۱۹۶ و بیانیههای آنتروپیک، واقعیت این است:
۱. شایعه: مارکر کد منبع شما را میخواند. واقعیت: این ابزار تنها نام میزبان و منطقه زمانی را کدگذاری کرد — سه پرچم باینری. هیچ محتوایی از مخزن کد از طریق این روش ارسال نشد.
۲. شایعه: این موضوع کاربران رسمی API را تحت تأثیر قرار داد. واقعیت: اگر ANTHROPIC_BASE_URL خالی بود یا به api.anthropic.com اشاره میکرد، تابع Crt() زودتر خارج میشد و هیچ مارکری استفاده نمیشد.
۳. شایعه: این مکانیزم هنوز فعال است. واقعیت: در یک PR (درخواست تغییر) در ۱ جولای حذف شد. نسخههای ۲.۱.۱۹۸ به بالا (تا ۲.۱.۲۰۵) پاک هستند.
۴. شایعه: پروکسیهای سفارشی باعث بن شدن فوری میشوند. واقعیت: هیچ رابطه علّی مستقیمی مستند نشده است. مارکرها برای طبقهبندی بودند، نه تریگری برای بن خودکار.
۵. شایعه: مارکرها قابل مشاهده هستند. واقعیت: همشکلها در فونتهای Monospaced از نظر بصری با کوتیشنهای استاندارد یکسان هستند.
۶. شایعه: آنتروپیک همه چیز را انکار کرد. واقعیت: Thariq Shihipar صراحتاً در X این «آزمایش» را پذیرفت.
در نهایت، درس این حادثه روشن است: هر باینری تامینکنندهای که با امتیازات کامل سیستمی اجرا میشود، باید با احتیاط پذیرفته شود. استفاده از یک تجمیعکننده API مدیریتشده مانند provod.ai اجازه پرداخت منعطف و دسترسی به مدلهای پرچمدار (Claude Opus 4.8, GPT-5.5, Gemini 3.1 Pro, DeepSeek v4) را به روبل میدهد، اما امنیت رفتاری کلاینت همچنان بر عهده کاربر است.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو