اگر امروز پیامی در لینکدین برای یک موقعیت شغلی ارشد در یک استارتاپ کریپتویی دریافت کنید، احتمالاً اولین واکنش شما خوشحالی است. اما باید بدانید که این سناریوی جذاب، مسیر ورود بدافزارهای پیشرفته به سیستم شماست. به نقل از گزارش roman.pt در ۱۵ ژون ۲۰۲۶، این سناریوی خاص برای استقرار درهای پشتی (Backdoors) پیچیده روی ماشینهای محلی توسعهدهندگان مورد استفاده قرار گرفته است.
این حمله مستقیماً اعتماد توسعهدهندگان به شبکههای حرفهای و مخازن متنباز را هدف قرار میدهد. در عصری که ارزیابیهای فنی اغلب شامل بررسی کدهای موجود است، مهاجمان اکنون فرآیند npm install را به سلاحی برای دور زدن شهود امنیتی سنتی تبدیل کردهاند.
سناریوی تله
قربانی توسط یک استخدامکننده contacted شد که ادعا میکرد یک استارتاپ کوچک کریپتویی برای رفع مشکل یک نمونه اولیه (PoC) شکسته به مهندس ارشد نیاز دارد. طبق گزارش منتشر شده، این شخص توسعهدهنده را به یک مخزن عمومی در GitHub هدایت کرد و بهطور خاص او را تشویق کرد تا «مشکل ماژولهای منسوخشده Node» را بررسی کند؛ این دقیقاً همان طعمهای بود که کاربر را به نصب وابستگیها وا میداشت.
توسعهدهنده برای پیشگیری از عفونت، از یک سرور مجازی Hetzner یکبارمصرف و یک عامل هوش مصنوعی با دسترسی فقط-خواندنی (Pi) برای اسکن کد استفاده کرد. این عامل بهگونهای پیکربندی شده بود که تنها ابزارهای pi --tools read,grep,find,ls را داشت. این عامل بلافاصله فایل مشکوک app/test/index.js را شناسایی و پرچمگذاری کرد.

جزئیات فنی
درون این فایل، مهاجم از چندین تاکتیک فریبکارانه برای پنهان کردن فعالیتهای خود استفاده کرده بود:
- آدرسهای مبهم: آدرس سرور راه دور (
https://rest-icon-handler.store/icons/77) از تکههای مختلفی ساخته شده بود تا از جستجوهای سادهٔ متنی در کد فرار کند. این تکهها شاملprotocol = "https"،domain = "store"،token = "77"وsubdomain = "rest-icon-handler"بودند. - محمولههای پنهان: در خط ۲۲۵، یک محموله (Payload) قرار داشت که قادر بود هر کدی را که از سرور بازگردانده میشد اجرا کند. این کد در میان دیوارهای از تستهای کامنتشده پنهان شده بود تا نادیده گرفته شود.
- اجرای خودکار: فایل
package.jsonشامل یک اسکریپتprepareبود که دستورapp:preرا اجرا میکرد و این دستور به نوبه خودnode app/index.jsرا فراخوانی مینمود. این سازوکار تضمین میکرد که درِ پشتی بلافاصله بعد از دستور npm install فعال شود، بدون اینکه کاربر هرگز مجموعه تستهای واقعی را اجرا کند.

سرقت هویت
مهندسی اجتماعی در این حمله بهصورت لایهبندی شده اجرا شد. کامیتهای گیتهاب — که در مجموع ۳۹ کامیت بودند — به نام یک مهندس Full-stack واقعی با پروفایل معتبر لینکدین و وبسایت شخصی ثبت شده بود. وقتی با این مهندس تماس گرفته شد، او فاش کرد که هرگز برای آن استارتاپ کار نکرده و پیش از این نیز هویتش در گیتهاب جعل شده بود.
به همین ترتیب، پروفایل استخدامکننده متعلق به یک روزنامهنگار هنری شناختهشده با پیشینه فرهنگی طولانی بود که هیچ تجربه فنی نداشت. نکته عجیب اینجا بود که وقتی توسعهدهنده ادعا کرد پروژه نصب نمیشود، این «روزنامهنگار» ناگهان تغییر موضع داد و به یک متخصص Node.js تبدیل شد تا کاربر را به نصب سریع کد ترغیب کند.

این حادثه نشاندهنده یک چرخش بحرانی در بردارهای حمله است: حرکت به سمت «قرض گرفتن هویت». مهاجمان با استفاده از نامها و تاریخچه افراد واقعی، لایهای از اعتبار میسازند که میتواند حتی مهندسان باسابقه را در شلوغیهای یک روز کاری فریب دهد.
علاوه بر این، استفاده از یک عامل هوش مصنوعی فقط-خواندنی ثابت کرد که مؤثرتر از بازبینی دستی انسان است. در حالی که درِ پشتی در ظاهر شبیه به «کدهای شلخته یک تازهکار» بود، عامل هوش مصنوعی الگوی مخرب را در چند ثانیه شناسایی کرد. این موضوع نشان میدهد که حسابرسی امنیتی مبتنی بر هوش مصنوعی برای بررسی کدهای منبع در حال تبدیل شدن به یک ضرورت است.
اگر از شما خواسته شد مخزنی را از طریق یک پلتفرم اجتماعی بررسی کنید، از کلون کردن مستقیم آن روی ماشین اصلی خود اجتناب کنید. پیش از اجرای هرگونه اسکریپت نصب، از یک محیط ایزوله (Sandbox) یا ابزار تحلیل فقط-خواندنی استفاده کنید.
گام بعدی شما
- هرگز مخازن ناشناس را مستقیماً روی سیستم اصلی خود Clone نکنید.
- برای بررسی کدهای مشکوک از محیطهای ایزوله (Sandbox) یا ماشینهای مجازی استفاده کنید.
- پیش از اجرای دستورات نصب (مانند npm install)، فایل
package.jsonو اسکریپتهایprepareیاpostinstallرا بررسی کنید.
اما تهدیدات زنجیره تأمین تنها به بستههای npm محدود نمیشود؛ در تحلیل ما دربارهی حملات به مخازن PyPI، ابعاد گستردهتر این بحران را بررسی کردهایم.




گفتگو