Співбесіда чи спроба зламу? Як під «Node.js вакансією» ховався шкідливий код
Усе починалося як дефолтна співбесіда для Node.js dev.
Рекрутерка постукала до мого колеги, Микити Курочки, з пропозицією на Node.js позицію в компанію Cryptan Labs. Чесно кажучи, спочатку все виглядало абсолютно нормально.
Класичний кол: показали дизайни у Фігмі, техзавдання цілком адекватне і метчилося з вакансією. Типова розмова, як у всіх.
Але потім почалися дивні «дзвіночки»...
Спочатку рекрутерка вимкнула камеру через кілька хвилин після початку. Проєкту нібито було всього
Поодинці жоден з цих пунктів не кричить «фрауд». Але в сукупності це вже був привід придивитися детальніше.
Перед тим як щось запускати, Микита поліз у package.json. Застарілі ліби — ну, буває, нічого кримінального. Але він вирішив не стартувати проєкт, поки не розбереться, що він взагалі робить під капотом. І будемо відверті: багато хто б цей крок просто пропустив.
Сама репа виглядала максимально дивно: реальної логіки мінімум, зате структура файлів просто величезна. Це вже викликало питання.
Потім npm install завершився... і апка стартанула сама по собі.
Причина ховалася в npm-хуку prepare, який мовчки запускав server/server.js (як виявилося, це був C2C — Command and Control сервер).
Коли Микита запитав, якого біса воно само запускається, йому відповіли щось типу: «Та це просто частина процесу». І почали пушити його запустити скрипт ще раз.
На цьому моменті співбесіда для нього закінчилася.
Замість того щоб продовжувати, Микола:
→ Позакривав активні порти
→ Перегенерував SSH-ключі
→ Прогнав код через сек’юріті чеки
→ Сів аналізувати, які дані могли витекти
Знахідки були, м’яко кажучи, неприємні. Там лежав код для віддаленого виконання команд (RCE), а змінні середовища (env) тихенько відправлялися назовні.
Стало очевидно, що це не якийсь «індуський код» чи помилка розробників. Це була цілеспрямована атака, замаскована під тестове завдання на співбесіді.
Те, що Микита не поспішав і вчасно включив параною, врятувало від реального інциденту.
Головний висновок із цієї історії: співбесіди — це не привід вимикати критичне мислення і сліпо довіряти всьому, що вам кидають.
Кілька базових правил, які варто зайвий раз нагадати:
→ Завжди чекайте, які скрипти прописані на сетап (особливо preinstall, postinstall, prepare).
→ Ніколи не запускайте незнайомий код «наосліп» на робочій чи основній тачці.
→ Будьте обережні з інвайтами в незнайомі GitHub-організації.
→ Якщо вас кваплять або щось здається дивним — завжди робіть паузу.
Вирішив поділитися цією історією, бо такі атаки на розробників зараз стають усе частішими.
Хтось стикався з подібними атаками?
Діліться в коментарях, буде цікаво почитати ваш досвід. 👇
Підписувайтесь на мій канал у Телеграм:
12 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівТакож дивним останнім часом є, що виманюють номер телефона (не має сенсу його давати до оферу- це частина персональних даних), а потім зникають. І через місяць.два починаються дзвінки з різних рандомних номерів.
Так, саме так, номера телефонів то приватна інформація. В наш час їх можна не давати, завжди є альтернативні методи комунікації, як то email або або мессенджер.
Запускати в докері? На віртуалці? Мати спеціальну sandbox машину?
Саме так. Якщо є сумніви, або саме тестове виглядає підозріло.
Або не дивитися, не розбиратися, та створити додаткового бота зі своєї машини.
Я мабуть втретє за останній рік читаю про такий випадок: саме троян в тестовому завданні.
І відповідно рекомендація — все таке виконувати тільки в чомусь що буде зупинено і видалено одразу після цього, ідеально — окрема віртуалка, на крайній випадок можна контейнер. Окремого юзера вже недостатньо. Хто може/вміє — аналізувати мережевий трафік, встановити http проксі для всього (частково допоможе).
Чудові рекомендації! Cаме так, окрема віртуалка або контейнер, як така собі «пісочниця», спрацює найкраще. І так, якщо хочете перестрахуватися, проаналізувати мережевий трафік і подивитися чи не відбувається там щось підозрілого.
При перевірці тестових, вже як наймаюча сторона, то аналогічна ситуація може бути.
Саме із таким не стикався, але один раз чєл скинув тестове, яке зліпив з копіпасти проекту свого поточного роботодавця, включно із деякими сенсітів енвішками (памʼятаю точно, що були стейдж і прод ДСНи від сентрі та декілька апі ключів до сторонніх сервісів) та докер файли деплоїв, по яким в цілому можна було прикинути архітектуру та к-ть подів та ресурсів
Дякую, що поділились. Це прям порушення всього чого тільки можна. Взяти проект поточного роботодавця (що вже порушення нда), не видалити сенсітів данні (днси, апі ключі), ще і шукати таким чином роботу. Скільки ж тут ред флагів у одному тестовому?
всі)
причому чувак йшов на стронг міддла здається, і коли ми потім питали про ці приколи — просто віджартувався типу «ну ачьо такова, воно ж закоментоване все одно»
Цікавий персонаж)
Ще один мій топік на тему «Чи не приведе вас пошук у гугл до шкідливого ПЗ?»
dou.ua/forums/topic/53302
Кому цікаво більше про безпеку, мій блог у Телеграм:
t.me/securediary