وقتی یه AI agent به shell دسترسی داره، دیگه فقط یه ابزار ساده تولید متن و کد نیست، میتونه فایل تغییر بده، command اجرا کنه و به network و اطلاعات حساس دسترسی پیدا کنه.
بعد از ماجرای خارج شدن مدلهای OpenAI از محیط ایزولهی یه تست امنیتی و رسیدنشون به زیرساخت Hugging Face، شرکت Anthropic هم رفت سراغ ارزیابیهای خودش و سه مورد پیدا کرد که مدلها به سیستمهای واقعی دسترسی پیدا کرده بودن. چیزی که توجه من رو جلب کرد این بود که توی این تستها به Claude گفته بودن داخل یه محیط شبیهسازیشدهست و به اینترنت دسترسی نداره، اما بهخاطر یه اشتباه توی تنظیمات، اینترنت واقعاً باز بوده.
🔐 پرامپت میگفت اینترنت وجود نداره، ولی زیرساخت این محدودیت رو اعمال نکرده بود.
اینجا دیگه prompt و permission dialog بهتنهایی کافی نیستن. محدودیت باید بیرون از خود agent و در سطح سیستمعامل اعمال بشه.
این دقیقاً همون مشکلیه که سالها قبل از AI هم داشتیم، اینکه به یکی بگیم «لطفاً به این قسمت دست نزن» و بعد امیدوار باشیم رعایتش کنه.
پس باید agent رو طوری ایزوله کنیم که فقط به چیزهایی که ما میخوایم دسترسی داشته باشه.
قبلاً هم درباره sandbox نوشته بودم و گفته بودم که باید روشهای مختلف رو تست کنیم. توی این مدت خودم چند روش مختلف رو امتحان کردم.
📦 اولین چیزی که به ذهن میرسه استفاده از کانتینره، اما صرفاً گذاشتن agent داخل یه کانتینر لزوماً sandbox مناسبی نیست. اگه network باز باشه، مسیرهای حساس mount شده باشن یا اطلاعات حساس داخل کانتینر باشه، agent هنوز میتونه از مرز پروژه خارج بشه.
🖥 ماشین مجازی isolation قویتری میده، ولی معمولاً برای workflow روزمره سنگین و بیش از حد کلیه. ضمن اینکه اگه داخل VM دوباره credentialها، اینترنت و دسترسی پروداکشن رو بدون محدودیت در اختیار agent بذاریم، فقط از سیستم میزبان محافظت کردیم، نه از سرویسهای بیرونی.
🔒 در نهایت میرسیم به nono که قبلاً هم بهش اشاره کرده بودم. چیزی که nono رو برای من جذاب میکنه اینه که بدون کانتینر و VM، دسترسی agent رو در سطح سیستمعامل محدود میکنه. یعنی بهجای اینکه به agent بگیم «این کار رو نکن»، کاری میکنیم که اساساً نتونه انجامش بده.
یه مزیت خیلی مهم دیگهاش اینه که nono میتونه عملیات فایل، اتصالهای شبکه و اجرای commandها رو توی audit log ثبت کنه. با فعال کردن rollback هم قبل و بعد از session از فایلهای داخل محدوده sandbox snapshot میگیره تا بشه تغییرات رو دید یا فایلها رو به حالت قبل برگردوند.
البته nono هم معجزه نمیکنه، اگه policy رو اشتباه تعریف کنیم، دوباره به همون مشکل میخوریم. ولی برای پروژههای حساس، داشتن یه محدودیت فنی و قابلآزمایش خیلی بهتر از اعتماد کردن به prompt، denylist یا permission dialog خود هارنسه.
🔗 گزارش Anthropic: https://www.anthropic.com/news/investigating-incidents-cybersecurity-evals
🔗 وبسایت nono: https://nono.sh