OpenAI بهتازگی codex-security را در GitHub منتشر کرده است – یک اسکنر قابل نصب از طریق npm که تحلیل سهمرحلهای از یک مخزن (repository) انجام میدهد و سعی میکند باگها را بهصورت خودکار اصلاح کند.
آنچه این عرضه نادیده میگیرد، نقص عمیقتری است که نمایشهای اخیر مربوط به دور زدن sandbox (محیط ایزوله) آن را آشکار کردهاند. محققان نشان دادند که عاملهای (agents) اجرا شده در محیطهای «بسته و محدود» برای ابزارهایی مانند Cursor، Codex CLI، Gemini CLI و Google Antigravity، همچنان میتوانند با سوءاستفاده از همان رابطهایی که sandbox را به سیستم میزبان (host) متصل میکنند، از محافظتهای تعیینشده فرار کنند. اسکنر جدید OpenAI به این سطح از حمله (attack surface) نمیپردازد.
نحوه عملکرد دور زدنها
عاملها درون کانتینرهای خود باقی میمانند، اما هر آنچه روی دیسک مینویسند بلافاصله توسط کمککنندههای خارجی – مانند git hooks، افزونههای Python، Docker daemons و سرویسهای مشابه – مورد اعتماد قرار میگیرد. این کمککنندهها فایلها را میخوانند، آنها را معتبر تلقی میکنند و بدون درخواست از کاربر، آنها را روی سیستم میزبان اجرا میکنند.
- Cursor به یک عامل اجازه داد تا یک git hook ثبت کند که خارج از sandbox اجرا میشد.
- Codex CLI در اعتبارسنجی پارامترهای دستورات git شکست خورد و مسیری را برای اجرای دلخواه (arbitrary execution) باز کرد.
- چندین عامل دسترسی مستقیم به Docker socket پیدا کردند؛ یک نقطه ورود سطح بالا (privileged) که به کد اجازه میدهد کانتینرها را روی ماشین میزبان راهاندازی کند.
- آسیبپذیریهای DuneSlide به مهاجم اجازه میدهد مؤلفهای را که sandbox را اعمال میکند بازنویسی کند و در واقع آن دیوار محافظتی را بهطور کامل از بین ببرد.
در هر مورد، اکسپلویت بهصورت بیصدا وارد شد – مثلاً از طریق یک نتیجه جستجوی وب یا پاسخی از یک ابزار multi-choice-prompt (MCP) که عامل آن را مصرف کرده بود. محموله مخرب (malicious payload) اجرا شد، ناپدید گشت و هرگز در یک اسکن استاتیک کد ظاهر نشد.
چرا ابزار OpenAI مشکل اصلی را پوشش نمیدهد
Codex-security بر تحلیل استاتیک (static analysis) تمرکز دارد: این ابزار فایلهای منبعی را که commit میکنید بررسی میکند، الگوهای ناامن را علامتگذاری میکند و میتواند آنها را بهطور خودکار بازنویسی کند. این رویکرد، کدهای بیدقت یا خطرناک را قبل از عرضه (ship) شناسایی میکند، اما این ابزار کدی را اسکن میکند که شما عرضه میکنید، در حالی که حملات در محیط زمان اجرا (runtime environment) خودِ عامل رخ میدهند.
دور زدنهای sandbox نشان میدهند که خطر واقعی در پل زمان اجرا (runtime bridge) بین sandbox هوش مصنوعی و بقیه زنجیره ابزار (toolchain) توسعهدهنده نهفته است. یک مهاجم نیازی به تزریق کد مخرب به مخزن ندارد؛ او فقط کافی است عاملِ داخل sandbox را متقاعد کند تا فایلی را بنویسد که بعداً توسط یک فرآیند خارجی اجرا شود.
چه کسی برنده و چه کسی بازنده است
- توسعهدهندگان
- فروشندگان ابزار
- OpenAI
- مهاجمان
جامعه اکنون چه کاری میتواند انجام دهد
اصلاحاتی که اهمیت دارند عملیاتی هستند، نه فقط در سطح کد. در اینجا گامهای عملیاتی که هر کسی در حال ادغام یک عامل کدنویسی هوش مصنوعی است باید بردارد، آورده شده است:
- نسخههای عامل را ثابت نگه دارید (Pin) و قبل از ارتقا، تغییرات (changelogs) را بخوانید. نسخههای جدید ممکن است بهطور ناخواسته یک hook یا socket جدید باز کنند.
- با «کلون کردن و بررسی» (clone and explore) مانند اجرای کد ناشناخته برخورد کنید. هرگز یک عامل را بدون جداسازی (isolation) اضافی، به سمت مخزنی که کنترل نمیکنید هدایت نکنید.
- هر ابزار کمکی را بازرسی کنید (git hooks، افزونههای Python، دسترسی Docker). اگر ابزاری میتواند بر اساس خروجی عامل، یک دایرکتوری یا یک symlink را تغییر دهد، فرض کنید که میتواند به سلاح تبدیل شود.
- دسترسی به Docker socket را از sandbox حذف کنید.
- بپرسید چه چیزی چه چیزی را میخواند. جریان داده (data flow) را از sandbox به سیستم میزبان ترسیم کنید؛ هر فرآیندی که فایلهای نوشته شده توسط عامل را مصرف میکند، باید بهدقت بررسی شود.
دیدگاه مقابل: چرا codex-security همچنان اهمیت دارد
این اسکنر بخشی از مشکل را بهبود میبخشد، اما جایگزین نیاز به مقاومسازی (harden) پل زمان اجرا نمیشود.
آنچه باید در آینده زیر نظر داشت
- راهنماهای مقاومسازی جامعهمحور که پیکربندیهای ایمن را برای زنجیرههای ابزار رایج توسعهدهندگان در هنگام استفاده با عاملهای هوش مصنوعی فهرست میکنند.
تیتر اخبار ممکن است یک اسکنر امنیتی جدید را جشن بگیرد، اما داستان واقعی این است که sandbox یک عامل کدنویسی هوش مصنوعی تنها یک نمای ظاهری است، اگر اکوسیستم اطراف همچنان به هر آنچه مینویسد اعتماد کند. موج بعدی محافظت باید فراتر از کد و به درون خطلولههایی (pipelines) که آن را اجرا میکنند، نگاه کند.
