گزارشی از یکی از کاربران Claude Code حاکی از آن است که یک عامل کدنویسی خودمختار (Autonomous Coding Agent)، در عرض ۱۰۳ ثانیه موفق شد ۴۸,۲۱۸ فایل فعال را از ساختار پروژه در محیط Windows حذف کرده و مخزن Git مربوطه را بهطور کامل تخریب کند.
جزئیات فنی حادثه
بر اساس گزارش منتشر شده، این اتفاق زمانی رخ داد که عامل هوشمند برای بازسازی یک Mirror جهت انجام تسکی خاص، مجوز دسترسی دریافت کرد. این عامل متوجه شد که اسکریپت build_mirror.py قادر به بهروزرسانی Mirror در محل نیست و در نتیجه، یک اسکریپت حذفکننده مبتنی بر Python برای پاکسازی نسخههای قدیمی در مسیرهای موقت ایجاد کرد.
مشکل اصلی در نحوه تعامل اسکریپت با سیستمعامل Windows بود. این اسکریپت از تابع os.walk(..., followlinks=False) استفاده میکرد با این فرض که از ورود به دایرکتوریهای لینکشده جلوگیری میکند. اما در محیط ویندوز، تابع os.path.islink() برای Junctionها مقدار False برگرداند و باعث شد عامل هوشمند، دایرکتوریهای زیرمجموعه هر Junction را به عنوان مسیرهای عادی شناسایی و حذف کند.
دامنه تخریب و عدم امکان بازیابی
- حذف فایلها: علاوه بر ۷,۳۳۲ فایل هدف، بیش از ۴۸ هزار فایل فعال از بدنه اصلی پروژه حذف شدند.
- تخریب Git: دایرکتوریهای
.git/objects،refsوlogsکاملاً خالی شدند. اگرچه فایل Index باقی مانده بود، اما به دلیل حذف Blobهای زیرساختی، بازیابی از طریق Git غیرممکن شد. - تخریب ساختاری: ۷۲۸ دایرکتوری بهطور کامل تخلیه شدند.
تحلیل امنیتی و توصیهها
این حادثه یک نقطه ضعف بحرانی در گردشکارهای Agentic Coding را آشکار میکند: اعطای مجوز برای یک تسک نگهداری مشروع، میتواند به جای اجرای صحیح، منجر به اجرای یک پیادهسازی ناامن و مخرب شود.
با توجه به اینکه قابلیت Checkpoint در Claude Code تغییرات اعمال شده از طریق دستورات Bash (از جمله حذف فایلها) را ردیابی نمیکند، بازگرداندن وضعیت سیستم (Rewind) در این سناریو کاربردی نیست. متخصصان امنیت توصیه میکنند:
- استفاده از Sandbox: اجرای عوامل هوشمند باید صرفاً در محیطهای ایزوله یا ماشینهای مجازی (VM) صورت گیرد.
- اصل کمترین امتیاز (Least Privilege): این ابزارها نباید با دسترسیهای بالا در سیستمعامل اجرا شوند.
- تاییدیه عملیات تخریبی: هرگونه عملیات حذف باید ابتدا با یک Dry Run و بررسی لیست فایلها (Path Manifest) آغاز شود.