[ << ALL_FEED ]

Библиотека-логгер и инфостилер в придачу? Спасибо, не надо

Ещё в группе «Общее»

Библиотека-логгер и инфостилер в придачу? Спасибо, не надо 👋

За последнее время произошло немало событий. Например, кто-то решил поиграть в меценатство и опубликовал 30 релизов с именами NPM-библиотек для логирования:

• @logcore/pino-pretty-logger
• console-loggers • jellyfi-pino-pretty-logger
• jonas-prettier-logger
• logger-beauty
• pino-logger-utils
• pino-pretty-log
• pino-pretty-logger
• pretty-pino-logger
• pretty-ts-logger
• ts-moduler
• wrapped-logger-utils

Это не просто спам-кампания: эти библиотеки несут в себе инфостилер и бэкдор.

Нам даже удалось в этот раз кому-то уступить в борьбе за звание «самая быстрая рука на диком опенсорсе» — первыми зарепортили лишь 5 из 12 пакетов 🥺

Кампания использует обфускацию. Изначально злоумышленник защищал только имена переменных, но затем стал XOR-ить строки (скриншоты 1, 2).

Вредоносная логика активируется во время импорта библиотеки:

1️⃣Определение ОС жертвы и сбор базовой информации о системе (IP-адрес сетевого устройства, имя пользователя).

2️⃣Параллельное выполнение двух задач:

🔗Быстрая кража: отправление на сервер злоумышленника файла .env, если он есть в текущей рабочей директории.

🔗Обход домашней директории в поисках файлов с расширениями .env / .json. В коде есть небольшая оптимизация — при обходе будут пропущены следующие папки:

'node_modules', 'Library', 'System', 'Windows', 'Program Files', 'ProgramData',
'build', 'dist', 'out', 'output', 'release', 'bin', 'obj', 'Debug', 'Release',
'target', 'target2', 'public', 'private', 'tmp', 'temp', 'var', 'cache', 'log',
'logs', 'sample', 'samples',
'assets', 'media', 'fonts', 'icons', 'images', 'img', 'static', 'resources', 'audio', 'videos', 'video', 'music',
'svn', 'cvs', 'hg', 'mercurial', 'registry',
'__MACOSX', 'vscode', 'eslint', 'prettier', 'yarn', 'pnpm', 'next',
'pkg', 'move', 'rustup', 'toolchains',
'migrations', 'snapshots', 'ssh', 'socket.io', 'svelte-kit', 'vite',
'coverage', 'history', 'terraform'Code language: plaintext (plaintext)


Пользователям Linux особенно не повезет: им в ~/.ssh/authorized_keys закинут новый публичный SSH-ключ. При работающем сервисе sshd и разрешении использовать ssh-ключ для текущего пользователя позволит злоумышленнику подключаться к устройству 😍

Под Windows помимо обхода домашней директории стилер пройдется по всем подключенным дискам.

3️⃣Отправка всех собранных данных на сервер злоумышленника.

———

В версиях пакета, где применяется более продвинутая обфускация, злоумышленник уточняет, какие конкретно файлы ему нужны:

const ENV_LIKE_FILES = new Set([
    '.env', '.env.local', '.env.production', '.env.development',
    '.config', '.npmrc', '.pypirc', '.git-credentials', 'wallet.dat', 'id.json', 'key.json', 'keystore/*.json',
]);
const JSON_LIKE_FILES = new Set(['config.json', 'settings.json', 'secrets.json']);Code language: JavaScript (javascript)


Вероятно, это связано с большим количеством мусора при сборе всех json-файлов.

Также добавилась кража директории tdata, содержащей данные сессии Telegram 🤢

———

Дежурное напоминание: не ослабляйте бдительность при работе с опенсорс-проектами 😑

#npm #ti #scs #pyanalysis
@ptescalator (X, Max)

Ещё от ti_author

Ещё от ti_author

Ещё в группе «Общее»