Claude Code اکنون ۹ متغیر سیاستی را از افزونه‌های نصب‌شده جدا نگه می‌دارد

mixed-news.com

انتشار در منبع: انتشار در سایت ما:

مقاله اصلی · English

بیرونی‌ترین لایه امنیتی تعبیه‌شده در Claude Code در ۱۱ اکتبر بازطراحی شد و اکنون متغیرهای محیطی و قوانین مجوز یک سازمان را از دسترس افزونه‌هایی که کارکنان همان سازمان نصب می‌کنند، دور نگه می‌دارد. این تغییر در مخزن Anthropic در قالب کامیتی با زمان ثبت ۱۹:۰۷:۱۶ به وقت جهانی ثبت شده که توسط ربات انتشاردهنده پوشه mods ارسال شده است.

اجرای Claude Code در مرورگر
اجرای Claude Code در مرورگر. افزونه‌هایی که آن را دربر می‌گیرند داخل فایل اجرایی عرضه می‌شوند. تصویر: Anthropic

این لایه یک ماژول داخلی متعلق به خود Anthropic با نام sec-default است که در بیرونی‌ترین سطح قرار گرفته تا تصمیم‌های همه افزونه‌های دیگر از آن عبور کنند. توضیح رسمی Anthropic درباره این ماژول اکنون علاوه بر سیاست ابزارها و قوانین مسدودسازی، به قوانین مجوز و محیط پین‌شده نیز اشاره می‌کند؛ مواردی که پیش‌تر در توضیح آن ذکر نشده بود. Anthropic می‌گوید این ماژول هیچ سیاست جدیدی به سیستم اضافه نمی‌کند.

پین‌شده بودن یعنی افزونه‌ای که خارج از سیاست سازمان قرار دارد نمی‌تواند آن مقدار را تغییر دهد. این محدودیت شامل همه نام‌های متغیرهایی می‌شود که یک سازمان در تنظیمات مدیریت‌شده خود تعریف می‌کند، همچنین متغیر CLAUDE_CODE_PROCESS_WRAPPER هر زمان که سیاست یک اجراکننده را مشخص کند. علاوه بر این، Anthropic می‌گوید ۹ نام زیر در هر نسخه به‌صورت پیش‌فرض پین هستند:

  • CLAUDE_CODE_MANAGED_SETTINGS_PATH
  • CLAUDE_CODE_REMOTE_SETTINGS_PATH
  • CLAUDE_CODE_MOCK_REMOTE_SETTINGS
  • CLAUDE_CODE_DISABLE_ADMIN_ENV_UNION
  • CLAUDE_CONFIG_DIR
  • CLAUDE_SECURESTORAGE_CONFIG_DIR
  • USE_LOCAL_OAUTH
  • USE_STAGING_OAUTH
  • CLAUDE_LOCAL_OAUTH_API_BASE

هر ۹ متغیر به محل خواندن سیاست‌ها و اطلاعات ورود، یا نحوه ترکیب سطوح مختلف سیاستی مربوط هستند. افزونه‌ای که تلاش کند به یکی از آن‌ها دسترسی پیدا کند، در این نسخه پیام رد جدیدی دریافت می‌کند: «env (managed): ${name} is not for plugins outside policy to change».

دو نکته مرزهای این سازوکار را مشخص می‌کند. اگر هیچ سیاستی برای خواندن وجود نداشته باشد، همه متغیرها پین‌شده محسوب می‌شوند؛ بنابراین دستگاهی بدون تنظیمات مدیریت‌شده سخت‌گیرانه‌ترین حالت را دارد، نه آسان‌ترین حالت. همچنین تطبیق نام‌ها به حروف بزرگ و کوچک حساس نیست؛ زیرا همان‌طور که در توضیح کد جدید آمده، برخی سیستم‌ها نام‌هایی مانند Path و PATH را یکسان می‌خوانند.

افزونه‌های بازارهای راه دور هیچ‌گاه مورد تأیید سازمان قرار نمی‌گیرند

افزونه‌ای که از یک بازار راه دور، چه از طریق Git، GitHub یا npm دریافت شود، هرگز به‌عنوان افزونه متعلق به سازمان در نظر گرفته نمی‌شود؛ حتی اگر سازمان چنین قصدی داشته باشد. Anthropic نوشته است که چنین افزونه‌ای «در این نسخه هرگز نمی‌تواند مورد تأیید قرار گیرد»، بنابراین ابزارهای آن در همان سطح افزونه‌هایی ثبت می‌شوند که کاربر نصب کرده است. تنها نسخه‌ای که از یک پوشه محلی بازار افزونه خوانده شود و تنظیمات مدیریت‌شده سازمان آن را مشخص کرده باشد، مورد تأیید قرار می‌گیرد.

Claude Code در ابتدای ماه اکتبر امکان استفاده از افزونه‌های قابل نصب توسط کاربر را دریافت کرد و Anthropic در آن زمان هشدار داده بود که این افزونه‌ها می‌توانند به کلید API کاربر دسترسی داشته باشند.

Anthropic یک شکاف در همین سازوکار محافظتی را نیز نام برده است. زمانی که بررسی داخلی موتور، درخواستی را ایجاد کند که هیچ قانون یا هوکی را مشخص نکند؛ مانند درخواست تأیید برای اجرای یک فرمان پوسته در هنگام مسدود شدن خواندن فایل یا حذف خطرناک، نتیجه آن از درخواست ایجادشده توسط خود حالت امنیتی قابل تشخیص نیست. در نتیجه ممکن است افزونه کاربر همچنان بتواند به آن پاسخ دهد.

راه فرار موجود نیز محدودتر شده است. تنظیم allowModsToOverrideDenyRules در Anthropic چیزی را از حالت پین خارج نمی‌کند. همچنین سیاستی که کاربر بتواند آن را تغییر دهد، مانند Hive مربوط به HKCU در ویندوز، یا سیاست راه دوری که سرور در این نشست تأیید نکرده باشد، هیچ مجوزی از طریق این تنظیم ایجاد نمی‌کند. به گفته Anthropic، آن سیاست همچنان همان محدودیت‌های خود را حفظ می‌کند و چیزی بیشتر اعطا نمی‌کند.

شش رویداد جدید هوک با هزینه‌ای همراه هستند

این ماژول شش رویداد را که پیش‌تر تحت نظارت نبودند، به هوک‌ها اضافه می‌کند. دو مورد از آن‌ها، env.get و env.set، امکان پین‌کردن متغیرها را فراهم می‌کنند و چهار مورد دیگر شامل prompt.attachment، session.append، session.compact و ui.log هستند.

هم‌زمان، تعریف دخالت افزونه نیز گسترده‌تر شده است: اکنون افزونه زمانی دخالت‌کننده محسوب می‌شود که تصمیمی با مجوز بیشتر برگرداند، یا همان تصمیم را با دلیل، قانون یا هوک متفاوت ارائه کند. محدود کردن یک تصمیم به‌طور صریح بازنویسی محسوب نمی‌شود و هشدار نمایش‌داده‌شده به کاربر نیز برای حالتی که تصمیم حفظ شده اما متن یا قانون آن تغییر کرده است، عبارت جدید «تلاش کرد بازنویسی کند» را اضافه کرده است.

Anthropic هزینه این تغییرات را نیز توضیح داده است. استفاده از هوک‌های ui.log، env.get و env.set باعث می‌شود هر بار اجرای آن‌ها توسط هر افزونه، زنجیره‌ای از بررسی‌ها اجرا شود و درخواست env.set از خارج از سطوح سیاستی سازمان، تا زمان خواندن سیاست منتظر بماند. مدیران در نسخه ۲.۱.۲۸۵ فهرستی از ارائه‌دهندگان مجاز API دریافت کردند و تنظیمات مدیریت‌شده نیز محل نگهداری همان فهرست است.

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