Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° ΠΏΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ Π² Π±Π°Π·Π°ΡΠ° GitHub Actions Π² ΠΏΡΠΎΠ΅ΠΊΡΠ° TanStack, Π½Π°ΠΏΠ°Π΄Π°ΡΠ΅Π»ΡΡ ΡΡΠΏΡ Π΄Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° 84 Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ NPM, ΠΎΠ±Ρ Π²Π°ΡΠ°ΡΠΈ 42 NPM ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΎΡ ΡΡΠ΅ΠΊΠ° TanStack. ΠΡΠΊΠΎΠΈ ΠΎΡ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΈΠΌΠ°Π»ΠΈ Π½Π°Π΄ 10 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½ΠΈΡ Π½Π° ΡΠ΅Π΄ΠΌΠΈΡΠ°.
ΠΠΎΡΡΡΠΏΡΡ Π΄ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° Π²Π΅ΡΡΠΈΠΈ Π±Π΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° pull_request_target "Pwn Request" Π² GitHub Actions (Π·Π°Π΄Π°Π½Π°ΡΠ° ΠΌΠ°ΡΠΊΠ° Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° pull_request_target Π·Π° pull-Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΡΠ΅ΡΠΈ ΡΠΎΡΠΊΠΎΠ²Π΅), ΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΠΊΠ΅ΡΠ° Π½Π° GitHub Actions ΡΡΠ΅Π· ΡΠΎΡΠΊ ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° OIDC ΡΠΎΠΊΠ΅Π½ ΠΎΡ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° ΡΡΠ°ΡΡΠΈΡΠ°Π»ΠΈΡ runner ΠΏΡΠΎΡΠ΅Ρ (Runner.Worker) ΡΡΠ΅Π· ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° /proc//mem.
NPM ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ ΡΡΡ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π±ΡΡ Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈ Π½Π° 11 ΠΌΠ°ΠΉ ΠΎΡ 22:20 Π΄ΠΎ 22:26 (MSK), Π·Π°Π±Π΅Π»ΡΠ·Π°Π½ΠΈ ΡΠ»Π΅Π΄ 20 ΠΌΠΈΠ½ΡΡΠΈ ΠΈ Π±Π»ΠΎΠΊΠΈΡΠ°Π½ΠΈ ΡΠ»Π΅Π΄ ΡΠ°Ρ ΠΈ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°. ΠΠ° Π²ΡΠ΅ΠΊΠΈ ΠΎΡ Π·Π°ΡΠ΅Π³Π½Π°ΡΠΈΡΠ΅ NPM ΠΏΠ°ΠΊΠ΅ΡΠΈ Π±ΡΡ Π° ΠΈΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π΄Π²Π΅ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ, Π² ΠΊΠΎΠΈΡΠΎ Π±Π΅ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½ ΠΊΠΎΠ΄ Π·Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ mini-shai-hulud, ΠΊΠΎΠΉΡΠΎ ΡΡΡΡΠ΅ΡΠ΅ ΡΠΎΠΊΠ΅Π½ΠΈ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π² ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΡΠ΅Π΄Π°. Π ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΎΡΠΊΡΠΈΡΠΈΠ΅ Π½Π° ΡΠΎΠΊΠ΅Π½ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ NPM ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, ΡΠ΅ΡΠ²Π΅ΠΉΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°ΡΠ΅ Π½ΠΎΠ²ΠΈ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½ΠΈΡΠ΅ Π² ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΡΠ΅Π΄Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, Π·Π°ΡΡΠ³Π°ΠΉΠΊΠΈ Π΄ΡΡΠ²ΠΎΡΠΎ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ Π±ΡΡ Π° Π·Π°ΡΠ΅Π³Π½Π°ΡΠΈ Π½Π°Π΄ 400 NPM ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ TanStack Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅.
Π§Π΅ΡΠ²Π΅ΡΡ Π±Π΅ΡΠ΅ ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π²ΡΠ² ΡΠ°ΠΉΠ»Π° router_init.js ΠΈ ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈ ΡΡΡΠ½ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ΅Π³Π½Π°ΡΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈΠ»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π² ΡΡΠ΅Π΄Π° Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ "npm install", "pnpm install" ΠΈΠ»ΠΈ "yarn install". Π‘Π»Π΅Π΄ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅, ΡΠ΅ΡΠ²Π΅ΡΡ ΡΡΡΡΠ΅ΡΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° NPM (~/.npmrc), AWS, GCP, Azure, HashiCorp ΠΈ KubernetesK8s, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ°ΡΡΠ½ΠΈ SSH ΠΊΠ»ΡΡΠΎΠ²Π΅. ΠΠ°ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π±ΡΡ Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½ΠΈ Π½Π° Π·Π»ΠΎΡΠΌΠΈΡΠ»Π΅Π½ΠΈΡΠΈ ΡΡΠ΅Π· Π΄Π΅ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡ P2P ΠΌΠ΅ΡΡΠ΅Π½Π΄ΠΆΡΡ getsession.org.
Π ΡΠ΅ΡΠ²Π΅Ρ Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½ΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΡΡΡΠΈΡΠ΅Π»Π½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΎΡΠΌΡΠ½Π° Π½Π° ΠΏΡΠΈΡ
Π²Π°Π½Π°ΡΠΈΡ NPM ΡΠΎΠΊΠ΅Π½ β Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΊΡΠΈΠΏΡΠ° ~/.local/bin/gh-token-monitor.sh, ΠΊΠΎΠΉΡΠΎ Π½Π° Π²ΡΠ΅ΠΊΠΈ 60 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΡΠΎΠΊΠ΅Π½Π° ΡΡΠ΅Π· ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ ΠΊΡΠΌ api.github.com/user ΠΈ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΎΡΠΌΡΠ½Π° Π½Π° ΡΠΎΠΊΠ΅Π½Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° "rm -rf ~/".
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
