کلاهبرداری استخدامی چیست؟ ۱۰ نشانه که یک آزمون برنامهنویسی را به تله بدافزاری تبدیل میکند
کلاهبرداری استخدامی چگونه انجام میشود؟ ۱۰ نشانه مهم آزمون برنامهنویسی آلوده و پیشنهاد شغلی جعلی را بشناسید و قبل از اجرای پروژه از سیستم خود محافظت کنید.
یک پیام در LinkedIn دریافت میکنید:
«پروفایل شما برای موقعیت شغلی برنامهنویسی بسیار مناسب است.»
فرستنده خودش را Recruiter یک شرکت معتبر معرفی میکند. پروفایلش حرفهای به نظر میرسد، نام شرکت واقعی است و حتی وبسایت رسمی شرکت هم وجود دارد.
چند پیام بعد، پیشنهاد شرکت در یک آزمون فنی دریافت میکنید.
فایل پروژه را دانلود میکنید، وارد پوشه میشوید و با یک پروژه کاملاً عادی JavaScript یا Node.js روبهرو میشوید.
اما یک مشکل وجود دارد:
ممکن است این آزمون استخدامی، اصلاً آزمون استخدامی نباشد.
مهاجمان در سالهای اخیر از فرآیند استخدام و مصاحبه فنی برای هدف قرار دادن برنامهنویسان استفاده کردهاند؛ روشی که در آن اعتماد به یک فرصت شغلی به نقطه ورود حمله سایبری تبدیل میشود. مایکروسافت در بررسی کمپین Contagious Interview گزارش کرده است که مهاجمان با جعل هویت Recruiter، قربانیان را به دریافت و اجرای Packageهای NPM و پروژههای کدنویسی از پلتفرمهایی مانند GitHub، GitLab و Bitbucket هدایت کردهاند.
این یعنی حتی چیزی که از نظر شما یک «آزمون فنی معمولی» به نظر میرسد، میتواند بخشی از یک زنجیره حمله باشد.
در این راهنما، از تعریف کلاهبرداری استخدامی تا تشخیص آزمون برنامهنویسی آلوده و اقداماتی که پس از اجرای یک فایل یا پروژه مشکوک باید انجام دهید را بررسی میکنیم.
کلاهبرداری استخدامی چیست؟
کلاهبرداری استخدامی (Job Scam) نوعی کلاهبرداری است که در آن مهاجم با جعل هویت یک شرکت، Recruiter یا کارفرما، قربانی را به انجام کاری ترغیب میکند که میتواند به سرقت اطلاعات، سرقت حساب، دریافت پول یا نصب بدافزار منجر شود.
در شکل سنتی، هدف کلاهبردار معمولاً دریافت پول یا اطلاعات شخصی است.
اما در نوع سایبری، هدف میتواند بسیار خطرناکتر باشد:
دسترسی به سیستم قربانی.
در حملات علیه برنامهنویسان، مهاجم ممکن است بهجای ارسال یک فایل اجرایی مشکوک، یک پروژه واقعینما طراحی کند و از قربانی بخواهد آن را برای انجام یک آزمون فنی اجرا کند.
اینجاست که مرز میان «استخدام» و «حمله سایبری» از بین میرود.
چرا برنامهنویسان هدف جذابی برای مهاجمان هستند؟
سیستم مورد استفاده یک برنامهنویس معمولاً فقط یک کامپیوتر شخصی نیست.
ممکن است روی آن مواردی مانند اینها وجود داشته باشد:
- حساب GitHub یا GitLab
- SSH Key
- API Key
- Tokenهای سرویسهای ابری
- Credentialهای توسعه
- Repositoryهای خصوصی
- فایلهای پروژه
- اطلاعات مشتریان
- دسترسی VPN
- ابزارهای CI/CD
- Credentialهای Docker و Cloud
- Sessionهای مرورگر
در نتیجه، آلوده کردن سیستم یک Developer میتواند برای مهاجم ارزش بسیار بیشتری نسبت به آلوده کردن یک سیستم عادی داشته باشد.
از طرف دیگر، برنامهنویسان بهطور طبیعی با پروژه، Package، Script و Dependency کار میکنند.
بنابراین اجرای یک دستور معمول توسعه مانند:
npm install
ممکن است برای آنها کاملاً طبیعی باشد.
مهاجم دقیقاً میتواند از همین اعتماد حرفهای سوءاستفاده کند.
مایکروسافت نیز در چندین کمپین سال ۲۰۲۶، سوءاستفاده از اکوسیستم npm و محیطهای توسعه را گزارش کرده است؛ از Packageهای مخرب گرفته تا حملاتی که برای شناسایی اطلاعات محیط توسعه طراحی شدهاند.
سناریوی معمول کلاهبرداری استخدامی چگونه است؟
یک حمله میتواند چنین زنجیرهای داشته باشد:
پیام استخدامی → اعتمادسازی → آزمون فنی → فایل یا Repository → اجرای پروژه → فعال شدن کد مخرب → سرقت اطلاعات یا ایجاد دسترسی
مرحله اول؛ پیام Recruiter
مهاجم در LinkedIn، ایمیل یا یک پلتفرم کاریابی با شما تماس میگیرد.
مرحله دوم؛ پیشنهاد جذاب
موقعیت شغلی، شرکت، حقوق و پروژه بهاندازه کافی واقعی به نظر میرسند.
مرحله سوم؛ آزمون فنی
از شما خواسته میشود یک پروژه را بررسی، Clone یا اجرا کنید.
مرحله چهارم؛ ایجاد فشار زمانی
ممکن است گفته شود:
«آزمون فقط تا امشب فعال است.»
یا:
«فقط چند ساعت برای انجام آن فرصت دارید.»
مرحله پنجم؛ اجرای پروژه
قربانی پروژه را روی سیستم اصلی خود اجرا میکند.
مرحله ششم؛ آلودگی
کد مخرب ممکن است از طریق فایل، Package، Dependency یا Script اجرا شود.
از این مرحله به بعد، مهاجم میتواند تلاش کند اطلاعات حساس را سرقت کند یا دسترسی بیشتری به محیط قربانی به دست آورد.
۱۰ نشانه که یک آزمون استخدامی میتواند تله بدافزاری باشد
هیچکدام از نشانههای زیر بهتنهایی ثابت نمیکنند که یک پیشنهاد استخدامی جعلی است.
اما هرچه تعداد آنها بیشتر شود، باید با احتیاط بیشتری برخورد کنید.
۱. استخدامکننده بدون سابقه قبلی سراغ شما میآید
دریافت پیام ناگهانی از یک Recruiter بهخودیخود نشانه کلاهبرداری نیست.
اما باید هویت فرد و شرکت را بررسی کنید.
پروفایل LinkedIn، سابقه کاری، ارتباط واقعی با شرکت و اطلاعات موقعیت شغلی را بررسی کنید.
مهمتر از همه:
به اطلاعاتی که خود Recruiter برای اثبات هویتش میفرستد اکتفا نکنید.
نام شرکت را خودتان جستوجو کنید و از مسیر رسمی شرکت، موقعیت شغلی را بررسی کنید.
۲. برای اجرای آزمون فشار زمانی غیرعادی ایجاد میشود
یکی از ابزارهای کلاسیک مهندسی اجتماعی، ایجاد حس فوریت است.
مهاجم نمیخواهد قربانی فرصت زیادی برای فکر کردن داشته باشد.
برای همین ممکن است بگوید:
- فقط یک ساعت فرصت دارید؛
- لینک تا چند ساعت دیگر منقضی میشود؛
- اگر امروز انجام ندهید، موقعیت شغلی پر میشود؛
- باید همین حالا پروژه را اجرا کنید.
فشار زمانی باعث میشود کاربر برخی بررسیهای امنیتی را کنار بگذارد.
فشار زمانی نباید باعث حذف بررسی امنیتی شود.
۳. از شما خواسته میشود یک فایل یا پروژه ناشناس را اجرا کنید
فایل ZIP، Repository، Script، Package یا پروژه کدنویسی میتواند حامل کد مخرب باشد.
ظاهر پروژه هیچ تضمینی برای امنیت آن نیست.
حتی اگر داخل پروژه صدها خط کد کاملاً عادی وجود داشته باشد، ممکن است یک فایل یا Script وظیفه اجرای کد مخرب را بر عهده داشته باشد.
۴. پروژه شامل Dependencyهای ناشناخته است
این مورد برای برنامهنویسان بسیار مهم است.
یک پروژه Node.js میتواند Dependencyهای زیادی داشته باشد.
npm مدیر Package استاندارد Node.js است و Packageها و Dependencyهای پروژه را دریافت و مدیریت میکند.
اما هر Dependency یک سطح اعتماد جدید ایجاد میکند.
اگر پروژهای Package ناشناخته، دستکاریشده یا مشکوک داشته باشد، اجرای آن میتواند خطرناک باشد.
مایکروسافت در سال ۲۰۲۶ چندین نمونه از سوءاستفاده از Packageهای npm، از جمله Dependency Confusion و Packageهای دارای Scriptهای مخرب را گزارش کرده است.
بنابراین:
هر پروژهای که npm install دارد، لزوماً امن نیست.
۵. از شما خواسته میشود پروژه را روی سیستم اصلی اجرا کنید
این یکی از مهمترین هشدارهاست.
اگر آزمون استخدامی ناشناس است، اجرای آن روی لپتاپی که:
- حساب GitHub شما روی آن فعال است؛
- SSH Key دارد؛
- VPN سازمانی دارد؛
- Password Manager روی آن فعال است؛
- اطلاعات کاری روی آن قرار دارد؛
ریسک بالایی دارد.
در صورت نیاز به بررسی پروژه ناشناس، استفاده از یک محیط ایزوله میتواند ریسک را کاهش دهد.
۶. از شما خواسته میشود ابزار امنیتی را خاموش کنید
اگر فردی که شما را برای استخدام ارزیابی میکند میگوید:
«آنتیویروس را خاموش کن.»
یا:
«Defender جلوی پروژه را گرفته، موقتاً غیرفعالش کن.»
باید بسیار جدی شک کنید.
یک آزمون فنی مشروع نباید برای اجرای یک پروژه ناشناس از شما بخواهد کنترلهای امنیتی سیستم را دور بزنید.
۷. پروژه از شما دسترسی غیرضروری میخواهد
فرض کنید یک آزمون ساده Frontend دریافت کردهاید اما پروژه از شما میخواهد:
- دسترسی Administrator بدهید؛
- Credential وارد کنید؛
- SSH Key معرفی کنید؛
- API Key وارد کنید؛
- Token GitHub بدهید؛
- یا Extension ناشناس نصب کنید.
این رفتار باید یک Red Flag جدی محسوب شود.
قانون ساده:
آزمون برنامهنویسی باید کمترین دسترسی ممکن را نیاز داشته باشد.
۸. فایلهای پروژه با توضیحات آزمون همخوانی ندارند
فرض کنید Recruiter گفته است:
«یک پروژه ساده React را بررسی کنید.»
اما بعد از دانلود با مواردی مانند:
- Scriptهای ناشناس؛
- فایلهای غیرضروری؛
- Dependencyهای عجیب؛
- درخواست اتصال به سرورهای ناشناس؛
- فایلهای اجرایی؛
- Extensionهای ناشناخته؛
مواجه میشوید.
اینجا باید توقف کنید.
محتوای پروژه باید با کاری که برای آن استخدام میشوید تناسب داشته باشد.
۹. از شما خواسته میشود OTP یا کد تأیید را داخل پروژه وارد کنید
OTP همیشه نشانه حمله نیست.
اما اگر یک آزمون کدنویسی از شما میخواهد یک کد یکبارمصرف را که Recruiter برایتان فرستاده داخل یک پروژه یا صفحه ناشناس وارد کنید، باید دقیقاً بدانید این کد برای چیست.
قاعده ساده:
هر OTP را فقط به این دلیل که Recruiter گفته وارد نکنید.
ابتدا مشخص کنید کد متعلق به کدام سرویس است و چه چیزی را تأیید میکند.
۱۰. همهچیز بیش از حد خوب، سریع و عجیب است
گاهی نشانه اصلی خود تکنولوژی نیست؛ ترکیب رفتارهاست.
مثلاً:
شرکت بزرگ + حقوق بسیار بالا + تماس ناگهانی + استخدام فوری + آزمون عجیب + لینک ناشناس + فشار زمانی
وقتی چند علامت هشدار کنار هم قرار میگیرند، باید سطح احتیاط را بالا ببرید.
چطور یک آزمون برنامهنویسی را قبل از اجرا بررسی کنیم؟
قدم اول: شرکت را مستقل از پیام Recruiter بررسی کنید
شرکت را خودتان جستوجو کنید.
به وبسایت رسمی شرکت بروید.
صفحه Careers را بررسی کنید.
موقعیت شغلی را پیدا کنید.
اگر Recruiter ادعا میکند برای شرکت X کار میکند، ارتباط او با شرکت را از مسیرهای مستقل بررسی کنید.
به لینکهایی که Recruiter برای اثبات هویت خودش میفرستد محدود نشوید.
قدم دوم: فایل را بلافاصله اجرا نکنید
فقط چون فایل از یک شرکت معتبر یا یک سرویس ابری شناختهشده دانلود شده، امن نیست.
معتبر بودن سرویس میزبانی ≠ معتبر بودن فایل
سرویس معتبر میتواند محل میزبانی یک فایل مخرب هم باشد.
قدم سوم: ساختار پروژه را بررسی کنید
اگر پروژه Node.js است، قبل از اجرا فایلهایی مانند:
package.json
را بررسی کنید.
ببینید چه Scriptهایی تعریف شدهاند.
بهخصوص Scriptهایی که هنگام نصب یا آمادهسازی Package اجرا میشوند باید با دقت بررسی شوند.
قدم چهارم: Dependencyها را کورکورانه نصب نکنید
یکی از اشتباهات رایج این است:
پروژه را دانلود میکنیم.
ترمینال را باز میکنیم.
و بدون بررسی مینویسیم:
npm install
اما این دستور میتواند Dependencyهای پروژه را دریافت و وارد محیط توسعه کند.
در پروژه ناشناس، ابتدا باید بدانید:
- چه Packageهایی استفاده شدهاند؟
- از کجا دریافت میشوند؟
- نسخه آنها چیست؟
- آیا Dependency غیرضروری وجود دارد؟
- آیا Scriptهای نصب فعال هستند؟
- آیا Package نامی مشابه یک Package معتبر دارد؟
این موضوع فقط تئوری نیست؛ در سال ۲۰۲۶ چندین حمله علیه اکوسیستم npm و محیطهای توسعه گزارش شده است.
قدم پنجم: آزمون را روی سیستم اصلی اجرا نکنید
اگر مجبور به اجرای پروژه ناشناس هستید، از محیط ایزوله استفاده کنید.
گزینههایی مانند:
Virtual Machine
یا
Sandbox
میتوانند سطح ریسک را کاهش دهند.
اما:
VM بهمعنای امنیت مطلق نیست.
محیط ایزوله باید تا حد امکان از سیستم اصلی و Credentialهای مهم جدا باشد.
قدم ششم: Credentialهای واقعی را وارد نکنید
اگر پروژهای از شما خواست:
- GitHub Token
- API Key
- SSH Key
- Cloud Credential
- Password
- Browser Session
- Wallet Credential
را وارد کنید، بدون اینکه دلیل کاملاً مشخص و قابلاعتماد داشته باشید این کار را انجام ندهید.
برای یک آزمون کدنویسی، دسترسی به Credentialهای واقعی شما معمولاً نباید ضروری باشد.
چرا npm و Packageها باید جدی گرفته شوند؟
اکوسیستم npm یکی از بخشهای اصلی توسعه JavaScript است.
همین گستردگی باعث شده زنجیره تأمین نرمافزار به یکی از اهداف مهم مهاجمان تبدیل شود.
در حملات Supply Chain، مهاجم ممکن است بهجای حمله مستقیم به قربانی، یک Dependency یا جزء مورد اعتماد را هدف بگیرد.
در نتیجه:
اعتماد شما به پروژه میتواند به اعتماد ناخواسته شما به دهها Dependency تبدیل شود.
مایکروسافت در سال ۲۰۲۶ نمونههایی از Packageهای مخرب را گزارش کرده که حتی هنگام نصب میتوانستند برای شناسایی محیط توسعه و اطلاعات حساس مورد استفاده قرار گیرند.
اگر قبلاً آزمون مشکوک را اجرا کرده باشم چه کار کنم؟
اگر یک پروژه مشکوک را اجرا کردهاید و بعد متوجه شدهاید که ممکن است آلوده بوده باشد، وحشت نکنید؛ اما موضوع را هم ساده نگیرید.
۱. ارتباط شبکه را قطع کنید
اگر احتمال آلودگی جدی است، سیستم را از شبکه جدا کنید.
۲. از همان سیستم Password عوض نکنید
برای تغییر Credentialهای مهم از یک دستگاه مطمئن دیگر استفاده کنید.
۳. Sessionهای مهم را بررسی کنید
حسابهای GitHub، GitLab، Google، Microsoft، Cloud و سرویسهای سازمانی را بررسی کنید و در صورت نیاز Sessionها و Tokenها را باطل کنید.
۴. API Key و Tokenها را Rotate کنید
اگر پروژه به Credentialهای توسعهای دسترسی داشته، صرفاً تغییر Password کافی نیست.
۵. SSH Keyها را بررسی کنید
اگر کلید SSH روی سیستم وجود داشته و احتمال آلودگی مطرح است، موضوع را جدی بررسی کنید.
۶. تیم امنیت یا SOC را در جریان بگذارید
اگر سیستم کاری یا سازمانی درگیر شده است، موضوع را به تیم امنیت اطلاع دهید.
اگر شرکت واقعاً معتبر باشد چه؟
این نکته مهم است:
هدف این مقاله ترساندن کاربران از آزمونهای استخدامی نیست.
آزمون فنی بخش طبیعی فرآیند استخدام در بسیاری از شرکتهاست.
مسئله این است که:
آزمون فنی نباید باعث شود اصول امنیتی را کنار بگذارید.
یک فرآیند استخدام حرفهای میتواند:
- دستورالعمل مشخص داشته باشد؛
- از دامنه رسمی شرکت استفاده کند؛
- فایلها و Repositoryهای قابل بررسی ارائه کند؛
- نیازهای دسترسی را شفاف اعلام کند؛
- و از داوطلب نخواهد کنترلهای امنیتی دستگاه را غیرفعال کند.
یک نمونه واقعی؛ وقتی آزمون استخدامی به نقطه ورود حمله تبدیل شد
این سناریو صرفاً یک فرض تئوریک نیست.
گزارشهای امنیتی نشان دادهاند که مهاجمان واقعاً از فرآیندهای استخدامی و آزمونهای فنی برای رساندن کد مخرب به سیستم برنامهنویسان استفاده کردهاند.
برای نمونه، مایکروسافت در گزارش Contagious Interview توضیح داده است که مهاجمان با جعل هویت Recruiter، فرآیند مصاحبه و ارزیابی فنی را شبیهسازی کرده و در نهایت قربانی را به Clone و اجرای Packageهای NPM هدایت میکردند.
این دقیقاً همان دلیلی است که باید آزمونهای کدنویسی ناشناس را پیش از اجرا بررسی کرد.
بیشتر بخوانید:
[هکرها چگونه با جعل آگهی استخدامی، برنامهنویسان را هدف گرفتند؟ جزئیات حمله Mirage Kitten و بدافزارهای NodeRabbit و PollCat]
← لینک داخلی به خبر Mirage Kitten در 24News
چکلیست ۶۰ ثانیهای قبل از اجرای آزمون استخدامی
□ هویت Recruiter را بررسی کردم.
□ موقعیت شغلی را از سایت رسمی شرکت پیدا کردم.
□ فایل را بدون بررسی اجرا نمیکنم.
□ پروژه را روی سیستم اصلی اجرا نمیکنم.
□ Dependencyهای پروژه را بررسی کردم.
□ فایل package.json را بررسی کردم.
□ Scriptهای نصب و اجرای پروژه را بررسی کردم.
□ Credential واقعی وارد نمیکنم.
□ درخواست غیرفعال کردن آنتیویروس را نمیپذیرم.
□ در صورت فشار زمانی غیرعادی، فرآیند را متوقف میکنم.
مهمترین قانون برای برنامهنویسان
اگر بخواهیم کل این مقاله را در یک جمله خلاصه کنیم:
به کدی که نمیشناسید، حتی اگر در قالب یک فرصت شغلی برایتان ارسال شده باشد، اعتماد نکنید.
هویت Recruiter را بررسی کنید.
شرکت را از مسیر رسمی پیدا کنید.
پروژه را قبل از اجرا بررسی کنید.
Dependencyها را بشناسید.
Credentialهای واقعی را در اختیار پروژه ناشناس قرار ندهید.
و اگر مجبور به اجرای کد ناشناس هستید، آن را در یک محیط ایزوله انجام دهید.
چون در حملات مدرن، مهاجم همیشه نمیخواهد شما روی یک لینک مشکوک کلیک کنید.
گاهی کافی است خودتان کد مخرب را با تصور اینکه دارید برای استخدام شدن آزمون میدهید، اجرا کنید.
جمعبندی
کلاهبرداری استخدامی دیگر فقط به آگهی شغلی جعلی یا درخواست پول محدود نمیشود.
در حملات هدفمند علیه متخصصان فناوری، فرآیند استخدام میتواند به یک مهندسی اجتماعی چندمرحلهای تبدیل شود؛ از پیام Recruiter و مصاحبه گرفته تا آزمون فنی و در نهایت اجرای کدی که برای آلوده کردن سیستم طراحی شده است.
برنامهنویسان به دلیل دسترسی به Repositoryها، Credentialها، سرویسهای ابری و ابزارهای توسعه، اهداف ارزشمندی برای مهاجمان هستند.
به همین دلیل، هر آزمون برنامهنویسی باید با یک سؤال مهم شروع شود:
«آیا این کد واقعاً همان چیزی است که ادعا میکند؟»
قبل از اینکه پروژه را اجرا کنید، آن را بررسی کنید.
یک فرصت شغلی واقعی ارزش به خطر انداختن کل سیستم شما را ندارد.
منابع:
Kaspersky — Mirage Kitten، NodeRabbit و PollCat
The Hacker News — حمله با آزمونهای برنامهنویسی جعلی
Kaspersky — گزارش Mirage Kitten و کمپینهای قبلی
Microsoft Security — Contagious Interview و کلاهبرداری با مصاحبههای جعلی