Уязвимост Π² NPM, Π²ΠΎΠ΄Π΅Ρ‰Π° Π΄ΠΎ прСзаписванС Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² систСмата

Компания 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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster