من کلیدها را به Claude Code دادم. یک کرم هم همین کار را کرد.
عوامل کدنویسی هوش مصنوعی (AI coding agents) دچار جیلبریک نمیشوند. آنها دقیقاً همان کاری را انجام میدهند که برای انجامش ساخته شدهاند. آنها از اعتبارنامههای (credentials) شما برای اجرای دستورات استفاده میکنند. مشکل اینجاست که مهاجمان میتوانند ورودی را تأمین کنند.
آسیبپذیریهای اخیر سه روش مختلف برای وقوع این اتفاق نشان میدهند.
۱. کرم زنجیره تأمین (The Supply Chain Worm) کرمی به نام Mini Shai-Hulud بیش از ۱۷۰ بسته (package) را هدف قرار داد. این کرم فقط کلیدها را نمیدزدد و میرود؛ بلکه خودش را در فایلهای تنظیمات (config files) شما مینویسد. این کرم در فایلهای
.vscode/tasks.jsonیا.claude/settings.jsonپنهان میشود. این فایلها هنگام باز کردن یک پوشه یا شروع یک نشست (session)، کدها را بهطور خودکار اجرا میکنند. حتی اگر بسته مخرب را حذف کنید، قلاب (hook) مخرب روی دیسک شما باقی میماند.۲. دور زدن لیست مجاز (The Allowlist Bypass) ویرایشگر Cursor از یک لیست مجاز (allowlist) استفاده میکند تا اجرای خودکار (auto-run) را ایمن کند. مهاجمان راهی برای دور زدن آن با استفاده از دستورات داخلی شل (shell built-ins) مانند
exportپیدا کردهاند. با استفاده از تزریق دستور (prompt injection)، یک مهاجم باعث میشود عامل (agent) یک متغیر محیطی (environment variable) مسموم را تنظیم کند. این کار باعث میشود یک دستور تأیید شده، به شکلی رفتار کند که شما هرگز قصدش را نداشتید. کنترل امنیتی شکست خورد زیرا برای انسانها ساخته شده بود، نه ماشینها.۳. نقص پروتکل (The Protocol Flaw) پروکسی
mcp-remoteدارای یک نقص بحرانی در تزریق دستور (command injection) است. اگر به یک سرور MCP مخرب متصل شوید، آن سرور میتواند در طول فرآیند دستدادن (handshake)، دستوراتی را روی ماشین شما اجرا کند. این اتفاق به این دلیل میافتد که کلاینت به سروری که با آن ارتباط برقرار میکند، اعتماد میکند.
مسئله اصلی ساده است. یک عامل کدنویسی، مرز بین دادهها و دستورات را از بین میبرد. یک مدل زبانی بزرگ (LLM) دستورالعملها و دادههای خارجی را یکسان میبیند. هیچ مرزی بین آنچه شما میگویید و آنچه دنیا به عامل میگوید، وجود ندارد.
چگونه از خود محافظت کنید:
- به جای کلیدهای طولانیمدت، از توکنهای کوتاهمدت در متغیرهای محیطی خود استفاده کنید.
- اجرای خودکار (auto-run) را برای هر تسکی که با اسرار (secrets) یا محیط عملیاتی (production) در ارتباط است، غیرفعال کنید.
- فایلهای تنظیمات خود مانند
.claude/settings.jsonرا برای تغییرات غیرمنتظره زیر نظر داشته باشید. - گواهیهای اصالت (provenance attestations) را به عنوان اثبات منشأ، و نه اثبات ایمنی، در نظر بگیرید.
- وابستگیهای (dependencies) خود را به هشهای (hashes) مشخص محدود کنید.
با عامل هوش مصنوعی خود مانند هر فرآیند سطحبالای (high-privilege) دیگری رفتار کنید. این عامل به مرزهای سختگیرانه نیاز دارد.
اگر عوامل را در حالت اجرای خودکار (auto-run) اجرا میکنید، چگونه تصمیم میگیرید که چه زمانی اجازه کار به آنها را بدهید و چه زمانی متوقفشان کنید؟
Source: https://dev.to/kkierii/i-gave-claude-code-the-keys-so-did-a-worm-34a4
Optional learning community: https://t.me/GyaanSetuAi