بکدور تو یه پیشنهاد شغلی لینکدین
خلاصهٔ کاملتر
نویسنده تعریف میکنه که یه ریکروتر از یه استارتاپ کوچیک کریپتو تو لینکدین بهش پیام داده و بعد از چند روز چت، یه مخزن عمومی گیتهاب فرستاده تا بازبینیش کنه و مخصوصاً گفته «مشکل ماژولهای منسوخشدهٔ Node رو نگاه کن». نویسنده میگه یه چیزی از همون اول مشکوک بوده، برای همین بهجای کلون و نصب معمولی، رو یه VPS یهبارمصرف رو Hetzner مخزن رو کلون کرده و یه ایجنت هوش مصنوعی رو فقط با ابزارهای خوندنِ فایل روش اجرا کرده تا کدو بررسی کنه.
ایجنت تقریباً بلافاصله رو فایل app/test/index.js گیر کرده. این فایل حدود ۲۵۰ خط بوده که خودشو شبیه یه مجموعه تست جا زده بود، ولی در واقع یه بکدور توش مخفی شده بود. تو این فایل، آدرس یه سرور راه دور تیکهتیکه و از قطعههای جدا (پروتکل، دامنه، سابدامین و مسیر) سرِ هم میشه تا از دید بازبینِ سطحی پنهون بمونه، و بعد لای انبوهی از تستهای کامنتشده، بخش مخرب هرچی اون سرور برگردونه رو روی دستگاه قربانی اجرا میکنه.
نکتهٔ مهم اینه که این کد منتظر اجرای تستها نمیمونه. فایل app/index.js خودش با require('./test') اون فایل تست رو لود و اجرا میکنه، و تو package.json هم اسکریپت prepare به این فایل وصل شده. از اونجا که npm اسکریپت prepare رو بهصورت خودکار بعد از npm install اجرا میکنه، همین که وابستگیها رو نصب کنی بکدور اجرا میشه. پس اون درخواستِ «مشکل ماژولهای منسوخ رو نگاه کن» فقط طعمهای بوده تا قربانی npm install رو بزنه.
نویسنده میگه کامیتهای مخزن به اسم و ایمیل یه توسعهدهندهٔ واقعی ثبت شده بودن؛ وقتی باهاش تماس گرفته، اون گفته اصلاً برای اینها کار نکرده و قبلاً هم هویتش تو گیتهاب جعل شده بوده. پروفایل خودِ ریکروتر هم متعلق به یه روزنامهنگار هنری واقعی بوده که هیچ چیز فنیای توش نبوده، ولی وقتی نویسنده گفته پروژه نصب نمیشه، طرف یهو تبدیل به کارشناس npm و نسخههای Node شده.
به گفتهٔ نویسنده، درس اصلی اینه که این جور حملهها به هر کسی میتونه بخوره و تو یه روز خسته یا عجلهای، آدم راحت ممکنه قبل از فکر کردن npm install رو بزنه. یه نکتهٔ جالب دیگه هم اینه که بازبینی کد با یه ایجنتِ فقطخواندنی، خیلی سریعتر از خوندن دستیِ خودش جواب داده و بکدوری که شبیه کدِ شلختهٔ تازهکارها جا زده شده بود رو تو چند ثانیه شناسایی کرده.
نکات کلیدی:
- یه ریکروتر جعلی از قربانی خواسته یه مخزن گیتهاب رو بازبینی کنه؛ هدف واقعی اجرای بکدور بوده.
- بکدور تو یه فایل شبهتست مخفی شده و آدرس سرور راه دور تیکهتیکه ساخته میشده تا پنهون بمونه.
- اسکریپت prepare تو package.json باعث میشه فقط با npm install کد مخرب اجرا بشه.
- هم توسعهدهندهٔ کامیتها و هم پروفایل ریکروتر هویتهای دزدیدهشدهٔ آدمهای واقعی بودن.
- بازبینی کد ناشناس تو یه محیط ایزوله (VPS یهبارمصرف، ابزار فقطخواندنی) جلوی فاجعه رو میگیره.




