So-leòntachd èiginneach ann am PolKit a’ ceadachadh ruigsinneachd freumhach air a’ mhòr-chuid de sgaoilidhean Linux

Tha Qualys air so-leòntachd a chomharrachadh (CVE-2021-4034) anns a’ phàirt siostam Polkit (PoileasaidhKit roimhe seo) a thathar a’ cleachdadh ann an sgaoilidhean gus leigeil le luchd-cleachdaidh gun bhuannachd gnìomhan a dhèanamh a dh’ fheumas còraichean-slighe àrdaichte. Tha an so-leòntachd a’ leigeil le neach-cleachdaidh ionadail gun bhuannachd na sochairean aca àrdachadh gus freumhachadh agus làn smachd fhaighinn air an t-siostam. Chaidh an duilgheadas ainmeachadh mar PwnKit agus tha e sònraichte airson a bhith a’ toirt a-mach brath obrach a ruitheas anns an rèiteachadh bunaiteach air a’ mhòr-chuid de sgaoilidhean Linux.

Tha an duilgheadas an làthair ann an goireas pkexec PolKit, a tha a’ tighinn le bratach freumh SUID agus a tha air a dhealbhadh gus òrdughan a ruith le sochairean neach-cleachdaidh eile a rèir riaghailtean PolKit ainmichte. Air sgàth làimhseachadh ceàrr air argamaidean loidhne-àithne a chaidh a chuir gu pkexec, dh’ fhaodadh neach-cleachdaidh neo-leasaichte faighinn seachad air dearbhadh agus an còd aca a ruith mar fhreumh, ge bith dè na riaghailtean ruigsinneachd a chaidh a shuidheachadh. Airson ionnsaigh, chan eil e gu diofar dè na roghainnean agus na cuingeadan a tha air an sònrachadh ann am PolKit, tha e gu leòr gu bheil am feart freumh SUID air a shuidheachadh airson am faidhle so-ghnìomhaichte leis a’ ghoireas pkexec.

Cha bhith Pkexec a’ sgrùdadh dligheachd a’ chunntais argamaid loidhne-àithne (argc) a chaidh seachad nuair a thòisichear air pròiseas. Bha luchd-leasachaidh pkexec a’ gabhail ris gu bheil a’ chiad inntrigeadh san raon argv an-còmhnaidh a’ toirt a-steach ainm a’ phròiseis (pkexec), agus an dàrna cuid luach NULL no ainm na h-àithne a chaidh a chuir air bhog tro pkexec. Leis nach deach an àireamh argamaid a sgrùdadh an aghaidh fìor shusbaint an t-sreath agus bhathar a’ gabhail ris gu robh e an-còmhnaidh nas motha na 1, nan deidheadh ​​​​pròiseas a-steach le raon argv falamh, mar a tha gnìomh gnìomh Linux a’ ceadachadh, bhiodh pkexec a’ làimhseachadh NULL mar a’ chiad argamaid ( ainm a 'phròiseis) agus an ath fhear mar a tha taobh a-muigh a' chuimhne bufair, mar na tha anns an raon às dèidh sin. |———+———+——+————|———+———+——+————| | arg[0] | arg[1] | ... | arg[argc] | envp[0] | envp[1] | ... | envp[envc] | |—-|—-+—-|—-+——+——|——|—-|—-+—-|—-+——+——|——| VVVVVV "program" "-option" NULL "value" "PATH=name" NULL

Is e an duilgheadas a th’ ann, às deidh an raon argv, gu bheil raon envp mar chuimhneachan anns a bheil caochladairean àrainneachd. Mar sin, ma tha an raon argv falamh, bidh pkexec a’ toirt a-mach dàta mun ruith àithne le sochairean àrdaichte bhon chiad eileamaid den raon le caochladairean àrainneachd (argv [1] air fàs co-ionann ri envp [0]), agus faodar smachd a chumail air na tha ann. leis an neach-ionnsaigh.

Às deidh dha luach argv [1] fhaighinn, bidh pkexec a’ feuchainn, a’ toirt aire do na slighean faidhle ann am PATH, gus an t-slighe slàn a dhearbhadh chun fhaidhle so-ghnìomhaichte agus a’ sgrìobhadh puing don t-sreang leis an t-slighe slàn air ais gu argv[1], a a’ leantainn gu bhith ag ath-sgrìobhadh luach a’ chiad caochladair àrainneachd, leis gu bheil argv[1] co-ionann ri envp[0]. Le bhith a’ làimhseachadh ainm a’ chiad caochladair àrainneachd, faodaidh neach-ionnsaigh caochladair àrainneachd eile a chuir an àite pkexec, mar eisimpleir, caochladair àrainneachd “LD_PRELOAD” a chuir an àite, nach eil ceadaichte ann am prògraman suid, agus cuir air dòigh an leabharlann co-roinnte aca a luchdachadh a-steach don phròiseas.

Tha an obair-obrach a’ toirt a-steach a bhith a’ cur a-steach an caochladair GCONV_PATH, a thathas a’ cleachdadh gus an t-slighe gu leabharlann transcoding samhla a dhearbhadh, air a luchdachadh gu dinamach nuair a chuireas tu fios gu gnìomh g_printerr(), agus bidh an còd aige a’ cleachdadh iconv_open (). Le bhith ag ath-mhìneachadh na slighe ann an GCONV_PATH, faodaidh neach-ionnsaigh dèanamh cinnteach nach e an leabharlann iconv àbhaisteach a tha air a luchdachadh, ach an leabharlann aige fhèin, às an tèid an luchd-làimhseachaidh a chuir gu bàs nuair a thèid teachdaireachd mearachd a thaisbeanadh aig an ìre nuair a tha pkexec fhathast a’ ruith leis. còraichean bunaiteach agus mus tèid ceadan tòiseachaidh a sgrùdadh.

Thathas a’ toirt fa-near, a dh’ aindeoin gu bheil an duilgheadas air adhbhrachadh le coirbeachd cuimhne, faodar a chleachdadh gu earbsach agus a-rithist ge bith dè an ailtireachd bathar-cruaidh a thathas a ’cleachdadh. Chaidh an cleachdadh ullaichte a dhearbhadh gu soirbheachail air Ubuntu, Debian, Fedora agus CentOS, ach faodar a chleachdadh cuideachd air sgaoilidhean eile. Chan eil a’ chleachdadh tùsail ri fhaighinn gu poblach fhathast, a’ nochdadh gu bheil e beag agus gu bheil e furasta ath-chruthachadh le luchd-rannsachaidh eile, agus mar sin tha e cudromach an ùrachadh paiste a chuir a-steach cho luath ‘s a ghabhas air siostaman ioma-chleachdaiche. Tha Polkit cuideachd ri fhaighinn airson siostaman BSD agus Solaris, ach cha deach a sgrùdadh airson a chleachdadh orra. Is e an rud a tha fios nach gabh an ionnsaigh a dhèanamh air OpenBSD, leis nach eil an kernel OpenBSD a’ leigeil le luach argc null a dhol seachad nuair a thèid execve() a ghairm.

Tha an duilgheadas air a bhith ann bhon Chèitean 2009, bho chaidh an àithne pkexec a chur ris. Tha an suidheachadh airson so-leòntachd PolKit ri fhaighinn an-dràsta mar phìos (cha deach brath sam bith a leigeil ma sgaoil), ach leis gun deach fios a chuir gu luchd-leasachaidh cuairteachaidh mun duilgheadas ro-làimh, dh’ fhoillsich a’ mhòr-chuid de sgaoilidhean an ùrachadh aig an aon àm ri foillseachadh fiosrachaidh mun so-leòntachd. Tha a’ chùis stèidhichte ann an RHEL 6/7/8, Debian, Ubuntu, openSUSE, SUSE, Fedora, ALT Linux, ROSA, Gentoo, Void Linux, Arch Linux agus Manjaro. Mar cheum sealach gus an so-leòntachd a bhacadh, faodaidh tu bratach freumh SUID a thoirt air falbh bhon phrògram / usr/bin/pkexec (“chmod 0755 / usr/bin/pkexec”).



Source: fosgailtenet.ru

Cuir beachd ann