Ang isang kahinaan ay nakilala sa Composer na nakompromiso ang Packagist PHP repository

Ilang araw na ang nakakalipas sumabog ang balita na isang kritikal na kahinaan ay nakilala en ang dependency manager ng kompositor (CVE-2021-29472) na nagbibigay-daan sa iyo upang magpatakbo ng di-makatwirang mga utos sa system kapag pinoproseso ang isang pakete na may isang espesyal na nabuong halaga ng URL na tumutukoy sa direksyon upang i-download ang source code.

Ang problema ay nagpapakita ng sarili sa mga sangkap ng GitDriver, SvnDriver at HgDriver ginamit sa mga system ng pagkontrol sa pinagkukunan ng Git, Subversion, at Mercurial. Ang kahinaan ay naayos sa mga bersyon ng Composer 1.10.22 at 2.0.13.

Sa partikular, ang default na Repository ng package ng Packagist ng Composer, na naglalaman ng 306.000 PHP package ng developer at nag-aalok ng higit sa 1.400 bilyong mga pag-download bawat buwan, ay partikular na naapektuhan.

Sa ecosystem ng PHP, ang Composer ang pangunahing tool para sa pamamahala at pag-install ng mga dependency ng software. Ginagamit ito ng mga koponan sa pag-unlad sa buong mundo upang madali ang proseso ng pag-upgrade at matiyak na ang mga application ay tumatakbo nang walang kahirap-hirap sa lahat ng mga kapaligiran at bersyon.

Ipinakita ng eksperimento na kung may impormasyon tungkol sa problema, maaaring kontrolin ng mga umaatake ang imprastraktura ng Packagist at maharang ang mga kredensyal ng mga nagpapanatili o i-redirect ang pag-download ng mga pakete sa isang third-party server, inaayos ang paghahatid ng mga variant ng package na may mga pagbabago. nakakahamak na mga gumagamit upang palitan ang isang backdoor sa panahon ng pag-install ng dependency.

Limitado ang panganib sa mga end user dahil sa ang katunayan na ang nilalaman ng kompositor.json ay karaniwang tinukoy ng gumagamit at ang mga link sa mapagkukunan ay naipasa kapag ina-access ang mga repository ng third-party, na karaniwang maaasahan. Ang pangunahing suntok ay nahulog sa Repository ng Packagist.org at ang serbisyo ng Pribadong Packagist, tumawag sa Composer na may paglilipat ng data na natanggap mula sa mga gumagamit. Maaaring patakbuhin ng mga Attacker ang kanilang code sa mga server ng Packagist sa pamamagitan ng paghulog ng isang espesyal na ginawa na pakete.

Nalutas ng koponan ng Packagist ang kahinaan sa loob ng 12 oras ng pag-abiso ng kahinaan. Pribadong ipaalam ng mga mananaliksik sa mga developer ng Packagist noong Abril 22, at naayos ang isyu sa parehong araw. Ang isang pampublikong pag-update ng Composer na may pag-aayos para sa kahinaan ay inilabas noong Abril 27, at ang mga detalye ay isiniwalat noong Abril 28. Ang isang pag-audit ng mga log sa mga server ng Packagist ay hindi nagsiwalat ng anumang kahina-hinalang aktibidad na nauugnay sa kahinaan.

Ang mga error sa pag-iniksyon ng argumento ay talagang isang kagiliw-giliw na klase ng mga error na madalas na hindi napapansin sa panahon ng mga pagsusuri sa code at ganap na hindi napapansin sa mga pakikipag-ugnayan ng itim na kahon.

Ang problema ay sanhi ng isang error sa code ng pagpapatunay ng URL sa root composer.json file at sa mga link ng mapagkukunan ng pag-download. Ang bug ay naroroon sa code mula noong Nobyembre 2011. Gumagamit ang Packagist ng mga espesyal na layer upang pamahalaan ang mga pag-download ng code nang hindi nakasalalay sa isang tukoy na mapagkukunan ng control system, na naisagawa sa pamamagitan ng pagtawag sa "fromShellCommandline" na may mga argumento sa linya ng utos.

Ang puso ng problema ay pinapayagan ka ng pamamaraang ProcessExecutor na tukuyin ang anumang karagdagang mga parameter ng pagtawag sa URL. Ang nasabing pagtakas ay nawawala sa mga driver ng GitDriver.php, SvnDriver.php at HgDriver.php. Ang pag-atake ng GitDriver.php ay napigilan ng katotohanang ang "git ls-remote" na utos ay hindi suportado ng pagtukoy ng mga karagdagang argumento pagkatapos ng landas.

Ang isang pag-atake sa HgDriver.php ay posible sa pamamagitan ng pagpasa ng parameter na "–config" sa utility na "hq", na nagpapahintulot sa pag-oorganisa ng pagpapatupad ng anumang utos sa pamamagitan ng pagmamanipula ng "alias.identify" na pagsasaayos.

Sa pamamagitan ng pagsusumite ng isang pagsubok na pakete na may katulad na URL sa Packagist, tiniyak ng mga mananaliksik na matapos itong mai-publish, nakatanggap ang kanilang server ng isang kahilingan sa HTTP mula sa isa sa mga server ng Packagist sa AWS na naglalaman ng isang listahan ng mga file sa kasalukuyang direktoryo.

Dapat pansinin na ang mga nagpapanatili ay hindi nakilala ang anumang mga palatandaan ng paunang pagsasamantala ng kahinaan na ito sa publiko na halimbawa ng packagist.

Panghuli, kung interesado kang malaman ang tungkol dito, maaari kang kumunsulta sa mga detalye Sa sumusunod na link.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: AB Internet Networks 2008 SL
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.