تصور کنید سیستم شما نه یک ابزار تولید، بلکه یک آهنربای جذب داده برای جاسوسان دولتی باشد. در یک حمله هماهنگ زنجیرهای، گروه Sapphire Sleet (سپایر اسلیت) وابسته به دولت کره شمالی، مسیرهای سنتی جرایم سایبری را رها کرد تا مستقیماً زیرساختهای ساخت برنامههای عاملمحور (Agentic AI) را هدف قرار دهد. در این عملیات، مهاجمان به جای دنبال کردن سود مالی سریع، بر سرقت دادههای استراتژیک تمرکز کردند.
طبق گزارش Microsoft Threat Intelligence (هوش تهدید مایکروسافت) که در ۱۷ ژوئن ۲۰۲۶ منتشر شد، این مهاجمان بین ۱۴ تا ۱۷ ژوئن ۲۰۲۶، بیش از ۱۴۰ بسته در محدوده npm مربوط به Mastra و @mastra را آلوده کردند تا اعتبارنامههای حساس را استخراج کنند. Mastra — که شبیه به یک جعبهابزار جامع برای ساخت رباتهای هوشمند است — فریمورکی مبتنی بر TypeScript است که تیمها برای ایجاد خطوط کدنویسی خودکار، سرورهای MCP و ادغام با Claude Code از آن استفاده میکنند.
همانطور که در تحلیلهای پیشین ما دربارهی امنیت مدلهای بازمتن اشاره کردیم، تمرکز مهاجمان از سرقت دادههای ساده به شکار «دسترسیهای کلیدی» تغییر کرده است. این تغییر نشاندهنده یک چرخش استراتژیک در جاسوسی دولتهاست. در حالی که حملات قبلی مانند Miasma در ۱ ژوئن ۲۰۲۶ زیرساختهای عمومی شرکتها را هدف قرار داده بود، Sapphire Sleet (که با نام BlueNoroff نیز شناخته میشود) متوجه شد توسعهدهندگان ابزارهای کدنویسی AI، مجموعهای بسیار غنی و متمرکز از کلیدهای دسترسی را در یک ماشین واحد نگه میدارند. یک توسعهدهنده AI معمولاً کلیدهای API بدون محدودیت، توکنهای دسترسی ابری و دسترسی نوشتن به مخازن اصلی کد را دارد؛ دقیقا همان دروازهای که به حساسترین داراییهای یک سازمان میرسد.
مکانیسم حمله به Mastra
به نقل از مستندات مایکروسافت، این حمله از یک «قلاب پس از نصب» (postinstall hook) مخرب استفاده میکرد. این اسکریپت بلافاصله پس از اجرای دستور npm install بهصورت بیصدا در پسزمینه اجرا میشد. این عملیات با چنان سرعتی انجام میشد که معمولاً در کمتر از ۲ ثانیه تمام میشد و توسعهدهنده متوجه هیچ اتفاق غیرعادی نمیشد.
اهداف سرقت دادهها
این بدافزار برای اسکن محیط محلی و یافتن اهداف زیر طراحی شده بود:
- کلیدهای API ارائهدهندگان AI شامل Anthropic، OpenAI، Gemini و Mistral.
- توکنهای دسترسی شخصی (PAT) و توکنهای دقیقدانه (fine-grained) گیتهاب.
- فایلهای اعتبارنامه ابری برای AWS، GCP و Azure.
- فایلهای پیکربندی Claude Code که در مسیرهای
~/.claude.jsonو~/.claude/قرار دارند. - توکنهای OAuth مربوط به سرورهای پروتکل زمینهٔ مدل (MCP) که در تنظیمات Claude Code ذخیره شده بودند.
توالی اجرا و زمانبندی
دادههای سرقتی از طریق یک سیگنال HTTPS (Beacon) به زیرساختهای تحت کنترل مهاجمان ارسال میشد. بهدلیل سرعت بالای اجرا، اکثر توسعهدهندگان پیام «نصب موفقیتآمیز» را در ترمینال دیدند بدون اینکه بفهمند محیطشان مورد نفوذ قرار گرفته است. نسخههای مخرب دقیقاً بین ۱۴ تا ۱۷ ژوئن ۲۰۲۶ منتشر شدند. پس از انتشار گزارش انتساب مایکروسافت در ۱۷ ژوئن، بستههای آلوده ظرف چند ساعت پس از افشاگری از npm ابطال و حذف شدند.
شکاف امنیتی در عاملهای خودکار
مدلهای امنیتی سنتی بر حضور انسان در چرخه (Human-in-the-loop) برای بررسی وابستگیها تکیه دارند. یک برنامهنویس ممکن است پیش از نصب یک بسته ناشناس یا بررسی سورسکد آن تردید کند. اما عاملهای هوش مصنوعی (AI Agents) — مثل دستیاران دیجیتالی که میتوانند بهتنهایی تصمیم بگیرند و کد بزنند مانند Claude Code — این فرض را بهکل میشکنند. این آسیبپذیریها در کنار روشهای پیچیدهتری مانند تزریق پرامپت قرار میگیرند که میتوانند حفاظهای امنیتی مدلهای هوشمند را دور بزنند و سطح ریسک را افزایش دهند.
وقتی یک عامل AI تصمیم میگیرد پروژه به کتابخانه خاصی نیاز دارد، دستور نصب را بهطور خودکار اجرا میکند. عامل تسک را میخواند، تشخیص میدهد که بستهای مانند @mastra/core مورد نیاز است و دستور نصب را اجرا میکند. در این مسیر هیچ بررسی انسانی و هیچ مرحله تایید دستی وجود ندارد. قلاب پس از نصب سپس با تمام دسترسیهای فایلسیستم توسعهدهنده اجرا شده و پیش از هرگونه تعامل انسانی، دسترسی خواندن برای تمام فایلهای اعتبارنامه در ماشین را به مهاجم میدهد.
یک گردشکار دقیق و خطرناک در نصب Claude Code به این شکل است:$ claude --task "set up mastra agentic framework for this project"> Installing @mastra/[email protected]...> Running postinstall... (بدافزار در اینجا بهصورت بیصدا اجرا میشود)> Done in 2.8s> Framework initialized.
در این سناریو، توسعهدهنده تنها یک نصب موفق و یک پیکربندی اولیه را میبیند، اما در واقع تمام اعتبارنامههای او پیش از آن سرقت شدهاند.
شکست دفاعهای استاندارد
این حمله نشان داد که چهار مکانیسم استاندارد صنعت در برابر Sapphire Sleet شکست خوردند:
- npm audit: این ابزار بازنگرانه است؛ یعنی تنها پس از آنکه یک CVE مستند شود، به کاربران هشدار میدهد. بستههای مخرب تا لحظه انتشار کاملاً پاک بودند و هیچ امضای شناختهشدهای نداشتند.
- SLSA provenance: مهاجمان با سرقت یک توکن معتبر GitHub OIDC از یک خط لوله CI/CD که قبلاً مورد نفوذ قرار گرفته بود، توانستند بستهها را با امضاهای منشأ (Provenance) معتبر و قابل تأیید منتشر کنند. در نتیجه، بستهها دارای زنجیره تأمین قانونی به نظر میرسیدند.
- Dependabot و Renovate: این ابزارها نسخههای آسیبپذیر شناختهشده را علامت میزنند اما قادر نیستند رفتار واقعی یک اسکریپت نصب که تازه اضافه شده است را تحلیل کنند.
- بازبینی کد (Code Review): چون کد مخرب در یک اسکریپت postinstall مربوط به یک وابستگی غیرمستقیم (transitive dependency) قرار داشت، هرگز در سورسکد اصلی پروژه ظاهر نشد تا بازبینها بتوانند آن را ببینند.
تحلیل چشمانداز کلیدهای دسترسی
منطق استراتژیک هدف قرار دادن سازندگان ابزارهای AI کاملاً روشن است. یک جلسه کاری برای این توسعهدهندگان شامل کلیدهایی است که اغلب هیچ سقف هزینهای (Spend Cap) ندارند و میتوانند منجر به هزاران دلار هزینه غیرمجاز برای تیمها شوند. فراتر از ریسک مالی، توکنهای OAuth مربوط به MCP دسترسی مستقیم به ابزارهای ارتباطی و مدیریت پروژه شرکت مانند Jira، Confluence، Linear و Slack را فراهم میکنند. برای یک بازیگر دولتی، این یعنی داشتن نقشهای جامع از عملیات داخلی و نقشههای سری و طرحهای بنیادین یک سازمان.
Sapphire Sleet پیش از این بر خدمات مالی، صرافیهای ارز دیجیتال و پیمانکاران دفاعی تمرکز داشت. چرخش به سمت ابزارهای توسعه AI سیگنال میدهد که بازیگران دولتی، توسعهدهندگان AI را به عنوان دستهبندی «پربازده» شناسایی کردهاند. این حادثه ثابت میکند سطح حمله در توسعه AI ایستا نیست. هر بار که توسعهدهنده ابزار جدیدی را ادغام میکند یا وابستگی جدیدی به جریان کاری AI میافزاید، ریسک افزایش مییابد.
تحلیل رفتاری؛ تنها راه دفاع
تنها دفاع موثر در برابر حملات روز-صفر زنجیره تامین، تحلیل رفتاری و اعتبارسنجی است که پیش از اجرای اسکریپت نصب انجام شود. این روش نیازمند بررسی ویژگیهای بسته بهجای تکیه بر وضعیت توصیههای امنیتی (Advisory Status) است. سیگنالهایی که میتوانستند این حمله را شناسایی کنند عبارتاند از:
- تفاوتهای مانیفست (Manifest Diffs): مشاهده اضافه شدن ناگهانی اسکریپت
postinstallبه بستهای که پیش از این پاک بود. - ناهماهنگیهای زمانی: انتشار نسخههای متعدد از بستههای مرتبط در بازه زمانی چند ساعته، که نشاندهنده نفوذ به خط لوله انتشار است.
- محتوای اسکریپت: شناسایی محتوای رمزگذاری شده با Base64 و درخواستهای شبکه مشکوک در داخل یک قلاب نصب.
- امتیاز اعتبار: وقتی یک بسته ثانویه در محدوده
@mastraبا تعداد دانلود کم، ناگهان دارای یک قلاب postinstall میشود.
توسعهدهندگان میتوانند با استفاده از یک اسکریپت پایتون محلی، فایل package-lock.json را برای شناسایی بستههای ریسکی از طریق اسکن قلابهای postinstall، install و preinstall بررسی کنند. هر بسته ناشناسی که این قلابها را دارد باید پیش از اجرای دستور npm install بعدی مورد بازبینی قرار گیرد.
گام بعدی شما و توصیههای اصلاحی
اگر بین ۱۴ تا ۱۷ ژوئن ۲۰۲۶ از هر بستهای در محدوده @mastra استفاده کردهاید، باید فرض کنید اعتبارنامههای شما لو رفته است. اقدامات فوری زیر را انجام دهید:
- کلیدهای API خود در Anthropic را در سایت console.anthropic.com تغییر دهید.
- تمام توکنهای دسترسی شخصی و توکنهای دقیقدانه گیتهاب را ابطال کرده و مجدداً صادر کنید.
- اعتبارنامههای AWS، GCP یا Azure که روی آن ماشین استفاده شده بودند را تغییر دهید.
- توکنهای OAuth مربوط به MCP در سرویسهای متصل (Jira, GitHub, Confluence, Slack) را ابطال کرده و آنها را با محدودترین دسترسی ممکن (Minimum Scopes) مجدداً صادر کنید.
- مسیرهای
~/.claude.jsonو~/.claude/را برای یافتن اعتبارنامههای ذخیره شده بررسی و آنها را تغییر دهید.
برای حفاظت مستمر، بازرسی اسکریپتهای postinstall را به گردشکار pre-commit یا pre-install خود اضافه کنید. ابزار LucidShark اسکن اسکریپتهای چرخه حیات وابستگیها را به عنوان بخشی از خط لوله SCA محلی خود ارائه میدهد. اجرای دستور lucidshark analyze بستههای دارای قلابهای postinstall از ناشران تاییدنشده یا اخیراً تغییریافته را پیش از اجرا علامتگذاری میکند و آنها را در کنار معیارهای پیچیدگی، پوشش و تکرار تحلیل میکند. این ابزار کاملاً روی ماشین شما اجرا شده و از طریق MCP با Claude Code ادغام میشود تا عاملها پیش از نصب بستههای علامتگذاری شده، بازخوردهای ساختاریافته دریافت کنند. برای شروع به lucidshark.com مراجعه کنید یا با دستور npm install -g lucidshark آن را نصب کنید.
اما پیچیدگیهای نفوذ به خطوط لوله CI/CD که این حمله را ممکن کرد، بحث دیگری است — به تحلیل ما درباره امنیت زیرساختهای GitHub Actions مراجعه کنید.




گفتگو