ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ 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