ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ GitHub ΡΠ°Π·ΠΊΡΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π·Π° ΡΠ΅Π΄Π΅ΠΌ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π² ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ tar ΠΈ @npmcli/arborist, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ tar Π°ΡΡ ΠΈΠ²ΠΈ ΠΈ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° Π΄ΡΡΠ²ΠΎΡΠΎ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅ Π² Node.js. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΏΡΠΈ ΡΠ°Π·Π°ΡΡ ΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΎΡΠΎΡΠΌΠ΅Π½ Π°ΡΡ ΠΈΠ² Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ°Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈΠ·Π²ΡΠ½ ΠΊΠΎΡΠ΅Π½ΠΎΠ²Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, Π² ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ°Π·Π°ΡΡ ΠΈΠ²ΠΈΡΠ°Π½Π΅ΡΠΎ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΠ΅ΠΊΡΡΠΈΡΠ΅ ΠΏΡΠ°Π²Π° Π·Π° Π΄ΠΎΡΡΡΠΏ. ΠΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Π΄Π°Π²Π°Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΠΊΠΎΠ΄ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ΅Π· Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π² ~/ .bashrc ΠΈΠ»ΠΈ ~/ .profile ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» ΠΈΠ»ΠΈ ΡΡΠ΅Π· Π·Π°ΠΌΡΠ½Π° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Ρ ΠΏΡΠ°Π²Π° Π½Π° root.
ΠΠΏΠ°ΡΠ½ΠΎΡΡΡΠ° ΠΎΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ΅ ΡΡΠ»ΠΎΠΆΠ½ΡΠ²Π° ΠΎΡ ΡΠ°ΠΊΡΠ°, ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΈΡΡ ΠΊΠΎΠ΄ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈΡ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ npm ΠΏΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ npm-ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π°ΡΠ°ΠΊΠ° ΡΡΠ΅ΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅, ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΎΡΠΎΡΠΌΠ΅Π½ npm-ΠΏΠ°ΠΊΠ΅Ρ, ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΊΠΎΠΉΡΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ ΠΊΠΎΠ΄ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π». ΠΡΠ°ΠΊΠ°ΡΠ° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½Π° Π΄ΠΎΡΠΈ ΠΏΡΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π² ΡΠ΅ΠΆΠΈΠΌ Β«βignore-scriptsΒ», ΠΊΠΎΠΉΡΠΎ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅. ΠΠ±ΡΠΎ npm Π·Π°ΡΡΠ³Π° ΡΠ΅ΡΠΈΡΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 ΠΈ CVE-2021-39135) ΠΎΡ ΡΠ΅Π΄Π΅ΠΌ. ΠΡΡΠ²ΠΈΡΠ΅ Π΄Π²Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠ΅ ΠΎΡΠ½Π°ΡΡΡ Π΄ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° tar, Π° Π΄ΡΡΠ³ΠΈΡΠ΅ Π΄Π²Π΅ Π΄ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° @npmcli/arborist.
ΠΠ°ΠΉ-ΠΎΠΏΠ°ΡΠ½Π°ΡΠ° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ CVE-2021-32804 ΡΠ΅ Π΄ΡΠ»ΠΆΠΈ Π½Π° ΡΠ°ΠΊΡΠ°, ΡΠ΅ ΠΏΡΠΈ ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΊΠ°Π·Π°Π½ΠΈΡΠ΅ Π² Π°ΡΡ ΠΈΠ²Π° tar Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΈ ΠΏΡΡΠΈΡΠ°, ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΠΈΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Β«/Β» ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ β ΠΈΠ·ΡΡΠΈΠ²Π° ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΏΡΡΠ²ΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ», Π° ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ ΡΠ΅ ΠΎΡΡΠ°Π²ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΡΡΡ Β«/home/user/.bashrcΒ» ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ Π² Β«home/user/.bashrcΒ», Π° ΠΏΡΡΡΡ Β«//home/user/.bashrcΒ» Π² Β«/home/user/.bashrcΒ». ΠΡΠΎΡΠ°ΡΠ° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ CVE-2021-37713 ΡΠ΅ ΠΏΡΠΎΡΠ²ΡΠ²Π° ΡΠ°ΠΌΠΎ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Windows ΠΈ Π΅ ΡΠ²ΡΡΠ·Π°Π½Π° Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΈ ΠΏΡΡΠΈΡΠ°, Π²ΠΊΠ»ΡΡΠ²Π°ΡΠΈ Π½Π΅ΡΠ°Π·Π΄Π΅Π»ΡΡ ΡΠΈΠΌΠ²ΠΎΠ» Π½Π° Π΄ΠΈΡΠΊΠ° (Β«C:some\pathΒ») ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ Π·Π° Π²ΡΡΡΠ°Π½Π΅ Π² ΠΏΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ (Β«C:../fooΒ»).
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅ CVE-2021-39134 ΠΈ CVE-2021-39135 ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° ΠΌΠΎΠ΄ΡΠ»Π° @npmcli/arborist. ΠΡΡΠ²ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ΅ ΠΏΡΠΎΡΠ²ΡΠ²Π° ΡΠ°ΠΌΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ°Π·Π³ΡΠ°Π½ΠΈΡΠ°Π²Π°Ρ ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ Π² ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° (macOS ΠΈ Windows), ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° ΡΠ°ΡΡ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΏΠΎΡΠΎΡΠ°Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅ Π΄Π²Π° ΠΌΠΎΠ΄ΡΠ»Π° ββfooβ: βfile:/some/pathββ ΠΈ βFOO: βfile:foo.tgzββ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° /some/path ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° foo.tgz. ΠΡΠΎΡΠ°ΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΡΠ΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ½ΠΈ Π²ΡΡΠ·ΠΊΠΈ.
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΡΠ° ΠΎΡΡΡΡΠ°Π½Π΅Π½ΠΈ Π² Π²Π΅ΡΡΠΈΠΈΡΠ΅ Node.js 12.22.6 ΠΈ 14.17.6, npm CLI 6.14.15 ΠΈ 7.21.0, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π² ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° tar 4.4.19, 5.0.11 ΠΈ 6.1.10. Π‘Π»Π΅Π΄ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Π°ΡΠ° 'bug bounty', GitHub ΠΈΠ·ΠΏΠ»Π°ΡΠΈ Π½Π° ΠΈΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈΡΠ΅ 14500 $ ΠΈ ΡΠΊΠ°Π½ΠΈΡΠ° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, Π² ΠΊΠΎΠΉΡΠΎ Π½Π΅ Π±ΡΡ
Π° ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½ΠΈ ΠΎΠΏΠΈΡΠΈ Π·Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅. ΠΠ° Π·Π°ΡΠΈΡΠ° ΠΎΡ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ GitHub ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π²ΡΠ²Π΅Π΄Π΅ Π·Π°Π±ΡΠ°Π½Π° Π·Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° NPM ΠΏΠ°ΠΊΠ΅ΡΠΈ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, Π²ΠΊΠ»ΡΡΠ²Π°ΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ½ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²Π΅, ΡΠ²ΡΡΠ΄ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²Π΅ ΠΈ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΈ ΠΏΡΡΠΈΡΠ°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
