Зловредният софтуер Miasma се завърна чрез софтуерни пакети, на които много разработчици обикновено биха се доверили. Четири AsyncAPI пакета в npm регистъра бяха модифицирани, за да доставят зловреден товар от Miasma v3, създавайки път за дългосрочен отдалечен достъп.

Кампанията не разчита на стартиране на зловредния софтуер по време на инсталирането на пакета. Вместо това скритият код се активира, когато приложение, генератор или процес на компилиране (build) зареди засегнатия модул, което може да остави заплахата незабелязана до по-късен етап.

Изследователи от JFrog идентифицираха активността, след като проследиха модифицираните версии и декодираха изтегления зловреден код. Валидните записи за произхода на пакета не могат да защитят проектите, ако нападателите променят клона на изходния код, който задейства релиза (release-triggering branch).

Компрометиран акаунт или машина за компилиране (build runner) може да разкрие изходен код, токени за регистъра на пакети, облачни акаунти, ключове за подписване и тайни за внедряване (deployment secrets), докато нападателят запазва шифрован канал за допълнителни команди.

Засегнатите версии са публикувани чрез легитимния работен процес за автоматизация GitHub Actions на AsyncAPI, използвайки интеграцията за доверен издател OIDC на npm. Пакетите са носили валидни удостоверения за произход, но процесът на издаване е последвал неоторизиран директен коммит в клона на хранилището, който задейства издаването.

Тази последователност е важна, тъй като работният процес е направил точно това, за което е предназначен – да публикува код от проекта. Доказателството за произход (provenance) може точно да сочи към реалното хранилище и работен процес, но не може да определи дали самата промяна на кода е била прегледана или одобрена.

Компрометираните пакети не съдържат зловреден скрипт за предварителна или последваща инсталация. Нападателите са поставили скрит блок вътре в обикновени изходни файлове, където не се очаква мрежов достъп или създаване на процеси, използвайки празни пространства (whitespace), за да го скрият по време на преглед на кода. Когато Node.js зареди модифицирания модул, кодът стартира отделен дочерен процес и позволява на нормалното приложение или CI задача да продължи.

Той извлича файл от втори етап от IPFS портал, записва го в директорията на потребителския профил под логично име и го стартира във фонов режим. Възстановеният втори етап се идентифицира като Miasma v3. Наблюдаваната конфигурация позволява персистентност (постоянно присъствие), отдалечена комуникация, изпълнение на команди в конзолата (shell) и замяна на полезния товар.

Организациите трябва да идентифицират хранилища, lock-файлове, кешове и CI изпълнения, съдържащи засегнатите версии. Всички идентификационни данни, достъпни от засегнатите системи (включително npm, GitHub, облачни платформи, SSH и CI тайни), трябва да бъдат сменени от чиста машина.