Очікувався тихий день, а вийшло, що чищу ноутбук”: фальшива співбесіда ледь не призвела до неприємностей для українського фахівця з даних.

Розробник ReactJs / Native Анатолій Шумов під час пошуку роботи зіткнувся з кібератакою, яка маскувалася під типове тестове завдання від закордонної компанії. Замість очікуваного коду для перевірки, в наданому репозиторії був виявлений прихований шкідливий скрипт, що був створений для викрадення особистої інформації та отримання віддаленого доступу до комп’ютера.

Залишити коментар

«Мав бути спокійний день, а в результаті чищу ноут»: фейкова співбесіда ледве не коштувала українському розробнику даних

Розробник ReactJs / Native Анатолій Шумов під час пошуку роботи зіткнувся з кібератакою, яка маскувалася під типове тестове завдання від закордонної компанії. Замість очікуваного коду для перевірки, в наданому репозиторії був виявлений прихований шкідливий скрипт, що був створений для викрадення особистої інформації та отримання віддаленого доступу до комп’ютера.

Підозрілий swagger.js та загроза об’ємом 15 КБ

Після кількох днів спілкування, потенційні роботодавці надіслали Анатолію посилання на закритий репозиторій, що містив базову структуру full-stack застосунку (Node.js API + React frontend). Зовні все виглядало цілком стандартно, однак перед запуском розробник вирішив дослідити вміст файлів.

«Сьогодні мав бути спокійний день, а в результаті зараз чищу ноут, — поділився Анатолій у LinkedIn. — Перед тим, як щось запускати, я за звичкою переглянув код. І у файлі middlewares/swagger.js — там, де мала бути звичайна конфігурація Swagger-документації — знайшов близько 15 KB важко обфускованого JavaScript».

Детальний аналіз показав, що виявлений шкідливий код діяв за схемою повноцінного дроппера:

  • активується одразу при підключенні файлу (require), ще до старту сервера і навіть без виконання npm install;
  • створює приховану директорію в домашньому каталозі та записує до неї додатковий payload;
  • без відома користувача завантажує axios, better-sqlite3, node-machine-id та socket.io-client;
  • модуль better-sqlite3 використовується для читання баз даних Chrome, Brave та Firefox, де зберігаються паролі, cookies та дані автозаповнення. Водночас socket.io-client підтримує постійний зв’язок з C2-сервером зловмисників для дистанційного виконання команд;
  • на завершення файл експортує порожню middleware-функцію, щоб застосунок працював без помилок та не викликав підозр.

Описана послідовність дій відповідає хакерським кампаніям, про які повідомляли дослідники, такі як ESET, під назвою «DeceptiveDevelopment» (раніше — кластер «Contagious Interview»). Мета таких атак — викрадення паролів, SSH/хмарних ключів та криптогаманців у розробників. Після викриття, рекрутер негайно видалив листування та свій профіль у LinkedIn.

Нагадаємо, що раніше dev.ua розповідав про російських хакерів Sandworm, які полюють на українських ІТ-фахівців через фальшиві співбесіди.

«У моєму випадку все закінчилося повною перевстановкою системи, зміною паролів та відкликанням старих ключів. Нічого критичного, здається, вкрасти не встигло, але неприємний осад залишився», — зазначив фахівець.

Рекомендації для айтівців: як уникнути пастки

Щоб захистити свій робочий пристрій від подібних загроз, Анатолій Шумов радить дотримуватися кількох правил кібергігієни.

  • Перевіряйте код ДО запуску: завжди переглядайте вміст файлів репозиторію перед виконанням npm install або запуском самого застосунку.
  • Аналізуйте невідповідності: звертайте увагу на файли, назва яких суперечить їх вмісту (наприклад, swagger.js без функціоналу Swagger — це прямий червоний прапорець).
  • Використовуйте ізольоване середовище: тестові завдання від незнайомих компаній безпечніше відкривати у віртуальній машині (VM) або Docker-контейнері, а не на основному робочому ПК.
  • Не ігноруйте обфускацію: наявність заплутаного або зашифрованого JS-коду у звичайному проєкті — це привід зупинити роботу та розібратися, а не списувати це на стиль автора.

Source: dev.ua

No votes yet.
Please wait...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *