پرش به محتوای اصلی
پرش به محتوای مقاله

آنتروپیک ۴ حفره امنیتی خطرناک در Claude Code را مسدود کرد

·۱۵ مرداد ۱۴۰۵۶ دقیقه مطالعه۱ بازدید
راهنما
چک‌لیست بررسی رگرسیون دور زدن مجوز در Claude Code 2.1.223
چک‌لیست بررسی رگرسیون دور زدن مجوز در Claude Code 2.1.223
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

شناسایی و رفع مکانیزم‌های پنهان‌سازی دستورات از طریق کاراکترهای یونیکد و Tab در رابط کاربری Claude Code؛ تغییری که نشان می‌دهد حتی دیالوگ‌های تأیید انسانی هم می‌توانند توسط مدل دور زده شوند.

اگر به عامل‌های هوش مصنوعی دسترسی به شل (Shell) داده‌اید، احتمالاً بدون آنکه بدانید، درهای سیستم خود را به روی حملات تزریق باز کرده‌اید. شرکت آنتروپیک (Anthropic) در ۶ اوت ۲۰۲۶ با انتشار نسخه ۲.۱.۲۲۳ ابزار Claude Code، چهار شکاف امنیتی را بست که از طریق آن‌ها دستورات مهندسی‌شده می‌توانستند سیستم را برای اجرای عملیات‌های غیرمجاز فریب دهند. این به‌روزرسانی برای هر تیمی که از این ابزار استفاده می‌کند، یک الزام امنیتی محسوب می‌شود.

این به‌روزرسانی در حالی می‌رسد که توسعه‌دهندگان از رابط‌های ساده‌ی چت به سمت جریان‌های کاری عامل‌محور (Agentic) — شبیه به استخدام کارمندی که نه تنها پیشنهاد می‌دهد، بلکه خودش وارد پوشه‌های سیستم شده و فایل‌ها را تغییر می‌دهد — حرکت می‌کنند. این قابلیت‌ها در واقع تکامل همان رویکردی است که زمانی که Claude Code ابزارهای ویرایش مستقیم فایل‌ها را به ترمینال آورد ایجاد شد. همان‌طور که در تحلیل قبلی ما درباره‌ی بهره‌وری برنامه‌نویسان با مدل‌های کلود اشاره کردیم، انتقال به اجرای خودکار، ریسک‌های جدیدی مثل «دور زدن دسترسی‌ها» را ایجاد می‌کند. در یک محیط عملیاتی، تفاوت بین یک عملیات امنِ «فقط خواندنی» و یک دستور تخریبی سیستم، می‌تواند تنها در یک کاراکتر نامرئی در پرامپت باشد.

چهار مرز امنیتی در خطر

به نقل از راهنمای فنی dev.to، نسخه ۲.۱.۲۲۳ روی این چهار آسیب‌پذیری تمرکز کرده است:

  • پنهان‌سازی دستورات Bash: پیش از این، یک دستور Bash مهندسی‌شده می‌توانست بخش‌هایی از خود را از بررسی‌های دسترسی پنهان کند و اجازه اجرای غیرمجاز را بگیرد. اکنون هر بخش اجرایی پیش از اجرا، طبقه‌بندی می‌شود تا هیچ بخشی از دید سیستم پنهان نماند.
  • رندرینگ پرامپت: استفاده از Tab یا کاراکترهای نامرئی یونیکد برای پنهان کردن معنای واقعی دستور در دیالوگ تأیید ممکن بود. در واقع، کاربر چیزی را می‌دید که با آنچه اجرا می‌شد متفاوت بود. اکنون سیستم باید اکشن نرمال‌شده‌ی کامل را نمایش دهد یا در صورت عدم امکان، آن را مسدود کند.
  • فرار از سندباکس جریان کاری: اسکریپت‌های جریان کاری می‌توانستند با فراخوانی‌های پویا import()، کدی را خارج از سندباکس (Sandbox) — محیطی ایزوله شبیه به یک اتاق آزمایش بسته که مانع نشت مواد شیمیایی به محیط بیرون می‌شود — اجرا کنند. این آپدیت تضمین می‌کند که فایل‌های خارج از مرز (fixtures) خوانده یا نوشته نشوند.
  • نادیده گرفتن سیاست‌ها: برخی تعریف‌های عامل که از bypassPermissions استفاده می‌کردند، می‌توانستند سیاست‌های سازمانی را که هدفشان غیرفعال کردن حالت دورزدن بود، نادیده بگیرند. اکنون این درخواست‌ها رد شده یا به حالت مجاز بازمی‌گردند.

زمینه: چه کسانی در معرض خطر هستند؟

طبق گزارش‌های فنی، این به‌روزرسانی برای توسعه‌دهندگان و تیم‌های پلتفرمی که Claude Code را در محیط‌های مختلف، از جمله ترمینال‌های محلی، IDEها، عامل‌های پس‌زمینه یا اتوماسیون‌های مدیریت‌شده اجرا می‌کنند، حیاتی است. ریسک زمانی به اوج می‌رسد که:

  • دستورات Bash توانایی تغییر (Mutate) در مخزن کد (Repository) را داشته باشند.
  • تعریف عامل‌ها، حالت‌های دسترسی خاصی را درخواست کنند.
  • اسکریپت‌های جریان کاری برای اجرای کد پیکربندی شده باشند.

توسعه‌دهندگان باید این اصلاحات را با چک‌لیست‌های ماسک کردن فایل‌های اعتبارنامه (Credential-file masking) برای جلوگیری از تزریق اسرار (Secrets) و لیست‌های سفید سخت‌گیرانه شبکه برای کنترل خروجی (Egress control) تکمیل کنند. برای پیاده‌سازی دقیق‌تر، می‌توانید ۱۰ تنظیمات حیاتی برای جلوگیری از دور زدن حفاظ‌های امنیتی در Claude Code را به عنوان راهنمای تکمیلی بررسی کنید.

فرآیند تأیید و پاک‌سازی

صرفاً تغییر شماره نسخه کافی نیست. راهنمای منتشر شده تأکید می‌کند که توسعه‌دهندگان باید تمام لانچرها، از جمله ادغام‌های IDE، کارهای CI، عامل‌های پس‌زمینه و لانچرهای شرکتی را بررسی کنند تا هیچ باینری قدیمی فعال نماند. شما باید کانال نصب، مسیر نهایی (Resolved path) و وضعیت سندباکس را برای هر سطح ثبت کنید.

به دلیل اینکه جلسات بازگشتی (Resumed sessions) ممکن است نسخه جدید را نپذیرند، ری‌استارت کامل تمام پروسه‌های فعال اجباری است. با اجرای دستور claude --version و ثبت خروجی همراه با برچسب زمانی، نسخه پروسه را ثابت کنید. هر سطحی که هنوز نسخه قدیمی را گزارش دهد، باید از کارهای خودکار حذف شود.

برای اثبات رفع مشکل، استفاده از یک ماتریس «بدون محموله» (Payload-free) با استفاده از نشانگرها در مخازن ایزوله توصیه می‌شود تا ریسک کپی کردن رشته‌های اکسپلویت عمومی در ترمینال‌های عملیاتی از بین برود. تست‌ها باید شامل موارد زیر باشد:

  • دستورات ترکیبی: تأیید اینکه اگر بخش اول دستور مجاز باشد اما بخش دوم یک نشانگر ایجاد کند، بخش دوم همچنان ارزیابی شود.
  • دقت پرامپت: اطمینان از اینکه کاراکترهای Tab در ابتدا یا کاراکترهای فرمت‌بندی یونیکد نمی‌توانند دستور نمایش‌داده‌شده را از دستور اجرایی متفاوت کنند.
  • منطق Wrapper: تأیید اینکه تخصیص‌های محیطی اجازه نمی‌دهند یک دستور ردشده، قوانین مجازِ بی‌ربط را به ارث ببرد.
  • لغو عملیات: بررسی اینکه لغو یک پرامپت، باعث شود نشانگر در سیستم باقی نماند.

سخت‌سازی محیط اجرا

برای کسانی که به مرزهای سخت نیاز دارند، پیکربندی «شکست بسته» (Fail Closed) پیشنهاد می‌شود. این یعنی غیرفعال کردن راه فرارِ تلاش مجدد (Retry escape hatch) و اجباری کردن پشتیبانی از سندباکس. بلوک پیکربندی پیشنهادی به شرح زیر است:

{ "permissions": { "disableBypassPermissionsMode": "disable" }, "sandbox": { "enabled": true, "failIfUnavailable": true, "allowUnsandboxedCommands": false } }

باید توجه داشت که این اصلاحات، دیالوگ دسترسی را به یک بازبینی معنایی کامل تبدیل نمی‌کند. آنتروپیک از دفاع دو لایه استفاده می‌کند: لایه دسترسی تصمیم می‌گیرد ابزار شروع به کار کند یا خیر، و سندباکس Bash که توسط سیستم‌عامل اعمال می‌شود، محدود می‌کند که آن ابزار به چه بخش‌هایی از فایل‌سیستم یا شبکه دسترسی داشته باشد. Claude Code قوانین «رد صریح» (Explicit deny) را پیش از قوانین «پرسش» و «اجازه» ارزیابی می‌کند؛ بنابراین، قوانین ردِ محدود باید حتی در صورت فعال بودن سندباکس حفظ شوند.

نقشه راه استقرار در ۶ مرحله

برای بازگرداندن امنِ قابلیت‌های خودکار، تیم‌ها باید این مسیر ساختاریافته را طی کنند:

۱. سنسور: فهرست تمام فایل‌های اجرایی و نسخه‌های مورد استفاده در تمام رابط‌ها.
۲. ارتقا و ری‌استارت: به‌روزرسانی از طریق کانال‌های مدیریت‌شده و بستن جلسات طولانی.
۳. بستن دورزدن‌ها: استفاده از تنظیمات مدیریتی (و نه تنظیمات کنترل‌شده توسط مخزن) برای غیرفعال کردن حالت bypass.
۴. ماتریس دستورات: اجرای تست‌های نشانگر بدون محموله که در بالا ذکر شد.
۵. تست ایزولاسیون: ایجاد یک عامل آزمایشی که bypassPermissions درخواست کند تا رد شدن آن توسط سیاست ادمین تأیید شود، و تست اینکه importهای پویا نتوانند به فایل‌های خارج از سندباکس دسترسی داشته باشند.
۶. بازگشت تدریجی: شروع با یک مخزن کم‌ریسک و یک لانچر پیش از گسترش کلی.

تحلیل: شکاف اعتماد در سیستم‌های عامل‌محور

این انتشار یک تنش رو به رشد در توسعه هوش مصنوعی را برجسته می‌کند: شکاف بین اجرای «ادراک‌شده» و اجرای «واقعی». وقتی یک عامل AI دستوری را برای تأیید ارائه می‌دهد، انسان فرض می‌کند متنی که می‌بیند دقیقاً همان چیزی است که اجرا خواهد شد. کشف اینکه فرمت‌بندی یونیکد می‌تواند نمایش را از اجرا جدا کند، یادآور این است که CLIهای مبتنی بر LLM در برابر حملات کلاسیک تزریق و پنهان‌سازی آسیب‌پذیر هستند. این چالش مشابه همان نگرانی‌هایی است که در مورد نحوه عملکرد gate.cat برای جلوگیری از حذف سرورهای عملیاتی توسط عامل‌های هوشمند مطرح شده بود.

برای یک توسعه‌دهنده، این بدان معناست که «انسان در حلقه» (Human-in-the-loop) تنها به اندازه رندرکننده‌ی رابط کاربری مؤثر است. اگر بتوان به UI دروغ گفت، تأیید انسانی تنها یک تشریفات است، نه یک دروازه امنیتی. این تغییر، ما را به سمت معماری‌های «اعتماد صفر» (Zero-trust) سوق می‌دهد که در آن سندباکس دفاع اصلی است و دسترسی‌ها صرفاً یک لایه تسهیل‌کننده ثانویه هستند.

سوالات متداول و اشتباهات رایج

یک اشتباه رایج این است که فقط CLI تعاملی ارتقا یابد در حالی که IDEها یا عامل‌های پس‌زمینه روی باینری‌های قدیمی باقی بمانند. اشتباه دیگر استفاده از اسرار واقعی به عنوان «قناری» (Canary) برای تست است؛ تست‌های رگرسیون باید حتی در صورت شکست محصول، امن باشند.

در مورد نفوذ: هر نصبی پیش از نسخه ۲.۱.۲۲۳ نباید لزوماً به عنوان «مخترقه» تلقی شود. این انتشار اصلاحات را تأیید می‌کند، نه لزوماً اکسپلویت‌های فعال را. تیم‌ها باید لاگ‌ها را برای دستورات غیرمنتظره بررسی کنند و اعتبارنامه‌ها را تنها در صورتی که شواهدی وجود داشته باشد، تغییر دهند. در نهایت، به یاد داشته باشید که سندباکس Bash جایگزینی برای دسترسی‌ها نیست؛ هر دو برای محدود کردن دسترسی به فایل‌سیستم و شبکه ضروری هستند.

گام بعدی شما

  • تنظیمات disableBypassPermissionsMode سازمان خود را همین امروز بررسی کنید تا مطمئن شوید درخواست‌های سطح عامل نمی‌توانند سیاست‌های ادمین را دور بزنند. می‌توانید مرجع کامل پیکربندی را در مستندات رسمی تنظیمات Claude Code بیابید.
  • تمام جلسات فعال Claude Code را ببندید و نسخه را با دستور claude --version چک کنید.
  • مستندات رسمی تنظیمات Claude Code را برای پیاده‌سازی پیکربندی Fail Closed مطالعه کنید.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این حادثه بر اساس تجربه عملی نشان می‌دهد که مدل‌های زبانی در محیط‌های CLI مستعد حملات کلاسیک تزریق هستند. اعتماد به لایه دسترسی بدون داشتن یک سندباکس سخت‌گیرانه، ریسک دسترسی غیرمجاز به کل زیرساخت توسعه را به شدت افزایش می‌دهد.

تأثیر برای ایران

به‌دلیل محدودیت‌های دسترسی به APIهای آنتروپیک، این به‌روزرسانی بیشتر برای توسعه‌دهندگان ایرانی است که از طریق پروکسی یا حساب‌های سازمانی از Claude Code استفاده می‌کنند و باید فوراً نسخه‌های محلی خود را ارتقا دهند.

·نگاه ما
تحریریه دات‌هوش

این به‌روزرسانی نشان می‌دهد که در دنیای عامل‌های هوش مصنوعی، «تأیید انسانی» به تنهایی یک لایه امنیتی نیست، بلکه یک رابط کاربری است که می‌تواند فریب بخورد. وقتی کاراکترهای یونیکد می‌توانند آنچه کاربر می‌بیند را از آنچه مدل اجرا می‌کند جدا کنند، مفهوم Human-in-the-loop به یک فرمالیته تبدیل می‌شود. این اتفاق ما را به سمتی می‌برد که سندباکس‌های سخت‌افزاری و سیستم‌عاملی، تنها خط دفاعی قابل اعتماد در برابر مدل‌های زبانی باشند.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.