پخش داده‌های حساس کاربری در فضای آنلاین توسط بسته‌های آلوده‌ی NPM

21 مهر 1399 پخش داده‌های حساس کاربری در فضای آنلاین توسط بسته‌های آلوده‌ی NPM

روابط عمومی شرکت ایدکو (توزیع کننده محصولات کسپرسکی در ایران)؛ محققین امنیتی دو بسته‌ی آلوده‌ی  NPM[1] پیدا کردند که اگر توسعه‌دهندگان ناخواسته دانلودشان می‌کردند آدرس‌های آی‌پی کاربران، نام‌های کاربری‌شان و داده‌های مربوط به چاپ اثر انگشت دستگاه در محیط آنلاین پخش می‌شد. به نقل از متخصص اتوماسیون شرکت DevOps، این اجزای شرور منبع باز –که در ذخیره‌ی دانلودهای NPM کشف شده بودند- اسم‌هایی داشتند که تا حدی به اسم‌های بسته‌های قانونی شبیه بود. توسعه‌دهندگانی که به طور تصادفی نام‌های بسته‌های شرورِ مذکور را اشتباه تایپ کرده بودند –بر فرض مثال electorn به جای اسم قانونی electron- ممکن بود ناخواسته راه را برای اقدامی مخرب باز کنند. electorn و loadyaml به محض نصب، شروع کردند به جمع‌آوری اطلاعات و سپس نشر داده‌های حساس کاربری در صفحه عمومی GitHub.

گفته می‌شود NPM هر دوی این بسته‌ها را از ذخیره خود حذف کرده است و GitHub نیز در پی نشر یافته‌هایی در خصوص آن، صفحه‌ی  GitHub page مربوطه را برداشته است. یک جفت اجزای آلوده‌ی دیگر نیز (lodashs و loadyml) توسط نویسنده‌ی simplelive12 حذف شده است. تاریخ 30 سپتامبر وقتی این تحقیق و کشفیات نشر شد، هر چهار بسته روی هم بیش از 400 باز دانلود شده بودند (electorn 255 دانلود و loadyaml 48 دانلود).

مکانیزم‌های آلوده

هر دوی electorn و loadyaml شامل فایل index.js  -که حکم یک نگهدارنده‌ی کد اسکلت[2] بی‌ضرر را داشت- و همچنین فایل package.json -که وانمود می‌کرد یک جلد الکترون[3] بوده که کارش ارائه‌‌ی نوعی قابلیت آپدیت خودکار است- می‌شدند. این حقیقت که بسته‌ی قانونی الکترون  درخواستِ pull[4] شده بود (البته در واقعیت چنین چیزی اتفاق نیافتاده و این فقط یک کلک زیرکانه بود) به کار جلوه‌ی قابل‌باورتری داده بود. این بدافزار خود را اندپوینت‌های API و یوآرال‌هایی در قالب رشته‌های رمزگذاری‌شده‌ در بیس 64[5] جا زده بود. از آنجایی که اسکریپت‌های preinstall پیش از آنکه عملیات نصب شروع شود اجرا می‌شوند، محققین تصور داشتند simplelive12 به اشتباه تایپیِ کاربر حساس بوده و بدان وابسته است (NPM install electorn به جایNPM install electron).

فایل  update.js، نام کاربری، مسیر هوم دایرکتوری و اطلاعات مدل سی‌پی‌یو دستگاه کاربر را جمع‌آوری کرد؛ این درحالیست که قابلیت fetchIPInfo آدرس آی‌پی کاربر را استخراج نموده و شهر و کشور فرد را نیز جست‌وجو کرد. سپس این داده‌ها در صفحه‌ی عمومی گیت‌هاپ به عنوان «کامنت‌ها» آپلود شدند؛ البته آپدیت بعدی بعد از 24 ساعت آن‌ها را پاک کرد. هنوز کاملاً مشخص نیست این داده‌ها چطور پردازش شدند و چرا هر 24 ساعت از این صفحه عمومی برداشته می‌شود.

جدول زمانی افشای اطلاعات

این بسته‌های آلوده بین روزهای 17 تا 24 آگست روی NPM منتشر شدند و بعد سر و کله‌ی داده‌هایی که به طور غیرقانونی‌ای جمع‌آوری شده بودند در تاریخ 25 آگست پیدا شد. در تاریخ 18 آگست، بات‌های شناسایی کد آلوده که با استفاده از هوش مصنوعی و فناوری یادگیری ماشین کد مظنون را پیدا می‌کنند این اجزا را مشکوک خواندند. این تحقیق نشر شد و گیت‌هاب و NPM در تاریخ 30 سپتامبر متوجه این مشکل شدند.

گزارشات اخیر خبر از افزایش 430 درصدیِ هر ساله‌ی حملات زنجیره تأمین می‌دهند. این یعنی تعقیب و رهگیری چنین اجزایی به طور دستی عملاً محال است. این حملات شرورانه‌تر از آنچه تصور می‌شوند هستند زیرا عاملین‌شان بسیار زیرکند و دیگر برای افشاهای عمومی آسیب‌پذیری صبر نمی‌کنند؛ آن‌ها در عوض خود پیش‌قدم شده و فعالانه کد مخرب را به پروژه‌های منبع باز –که کارشان تغذیه دادن به زنجیره تأمین جهانی است- تزریق می‌کنند.

 

[1]مدیر بسته پیش‌فرض برای جاوااسکریپت است که برای محیط خط فرمان نود.جی‌اس می‌باشد.

[2] skeleton code

[3]یک چارچوب منبع باز است که توسط گیت‌هاب توسعه و نگه‌داری می‌شود.

[4] درخواست pull اختصاری برای عبارت «درخواست یک Git Pull» است. ممکن است ندانید کدی که نوشته‌اید به قدر کافی خوب است یا نه و بخواهید فردی کد شما را پیش از ادغام کردن در شاخه master مرور کند. این کار از طریق درخواست pull میسر است.

[5] عنوان یک کدبندی دودویی به متن است. در این کدبندی، آرایه‌ای از بایت‌ها به صورت نویسه‌های اَسکی کدگذاری می‌شوند.

 

منبع: کسپرسکی آنلاین (ایدکو)

کسپرسکی اسم یکی از بزرگترین شرکتهای امنیتی و سازنده آنتی ویروس است که برخی از کاربران اشتباهاً این شرکت و محصولات آنتی ویروس آن را با عناوینی نظیر کسپرسکای،کاسپرسکی، کسپراسکای، کسپراسکای، و یا کاسپراسکای نیز می‌شناسد. همچنین لازم به ذکر است مدیرعامل این شرکت نیز یوجین کسپرسکی نام دارد.