Leochaileacht chriticiúil i PolKit a cheadaíonn rochtain fhréamh ar fhormhór na ndáiltí Linux

D’aithin Qualys leochaileacht (CVE-2021-4034) i gcomhpháirt córais Polkit (PolasaíKit roimhe seo) a úsáidtear i dáiltí chun ligean d’úsáideoirí neamhphríobháideacha gníomhartha a dhéanamh a éilíonn cearta rochtana ardaithe. Ligeann an leochaileacht seo d’úsáideoir áitiúil neamhphríobháideach a gcuid pribhléidí a mhéadú chun an córas a fhréamh agus smacht iomlán a fháil. Tugadh an cód PwnKit ar an bhfadhb agus tá sé suntasach mar gheall ar shaothrú oibre a ritheann sa chumraíocht réamhshocraithe ar fhormhór na ndáiltí Linux.

Tá an fhadhb i láthair i bhfóntas pkexec PolKit, a thagann leis an bhfréamhbhrat SUID agus atá deartha chun orduithe a rith le pribhléidí úsáideora eile de réir rialacha sonraithe PolKit. Mar gheall ar láimhseáil mhícheart argóintí na n-orduithe a cuireadh ar aghaidh chuig pkexec, d'fhéadfadh úsáideoir neamhphribhléideach fíordheimhniú a sheachbhóthar agus a chur faoi deara go n-oibreodh a gcód mar fhréamh, beag beann ar na rialacha rochtana atá leagtha síos. Le haghaidh ionsaí, is cuma cad iad na socruithe agus na srianta atá sonraithe i PolKit, is leor go bhfuil an tréith fréimhe SUID socraithe don chomhad inrite leis an bhfóntas pkexec.

Ní seiceálann Pkexec bailíocht an chomhairimh argóinte líne ordaithe (argc) a ritheadh ​​agus próiseas á thosú. Ghlac forbróirí pkexec leis go raibh ainm an phróisis (pkexec) sa chéad iontráil san eagar argv i gcónaí, agus luach NULLComment sa dara ceann nó ainm an ordaithe a seoladh trí pkexec. Ós rud é nár seiceáladh comhaireamh na hargóintí i gcoinne inneachar iarbhír an eagar agus gur measadh go raibh sé i gcónaí níos mó ná 1, dá n-éireodh le próiseas eagar argv folamh, mar a cheadaíonn feidhm Linux execve, chaithfeadh pkexec NULL mar an chéad argóint ( ainm an phróisis) agus an chéad cheann eile taobh amuigh den chuimhne mhaoláin, cosúil le hábhar an eagar ina dhiaidh sin. |———+———+——+————|———+———+—+————| | argv[0] | argv[1] | ... | argv[argc] | envp[0] | envp[1] | ... | envp[envc] | |—-|—-+—-|—-+——+——|——|—-|—-+—-|—-+—-+——|——| VVVVVV "clár" "-rogha" NULL "luach" "PATH=ainm" NULLComment

Is í an fhadhb atá ann, tar éis an eagar argv, go bhfuil eagar envp sa chuimhne ina bhfuil athróga timpeallachta. Mar sin, má tá an t-eagar argv folamh, bainfidh pkexec sonraí faoin rith ordaithe le pribhléidí ardaithe ón gcéad eilimint den eagar le hathróga timpeallachta (argv[1] comhionann le envp[0]), ar féidir a bhfuil ann a rialú ag an ionsaitheoir.

Tar éis luach argv[1] a fháil, déanann pkexec iarracht, agus na conairí comhaid in PATH á gcur san áireamh, an chonair iomlán chuig an gcomhad inrite a chinneadh agus scríobhann sé pointeoir chuig an teaghrán agus an cosán iomlán ar ais go argv[1], a déantar luach na chéad athróige timpeallachta a fhorscríobh, ós rud é go bhfuil argv[ 1] comhionann le envp[0]. Trí ainm an chéad athróg timpeallachta a ionramháil, is féidir le hionsaitheoir athróg timpeallachta eile a chur in ionad pkexec, mar shampla, an t-athróg timpeallachta “LD_PRELOAD” a chur in ionad, nach bhfuil ceadaithe i gcláir súchán, agus socrú a dhéanamh chun a leabharlann roinnte a luchtú isteach sa próiseas.

Is éard atá i gceist leis an saothrú oibre ná an athróg GCONV_PATH a chur in ionad, a úsáidtear chun an cosán go dtí an leabharlann traschódaithe siombailí a chinneadh, a lódáiltear go dinimiciúil nuair a ghlaonn tú ar an bhfeidhm g_printerr(), a n-úsáideann a cód iconv_open(). Tríd an gcosán i GCONV_PATH a ath-shainmhíniú, is féidir le hionsaitheoir a chinntiú nach í an leabharlann iconv caighdeánach atá luchtaithe, ach a leabharlann féin, agus déanfar na láimhseálaithe as a rith nuair a thaispeánfar teachtaireacht earráide ag an gcéim ina bhfuil pkexec fós ag rith leis cearta fréimhe agus sula ndéantar ceadanna seolta a sheiceáil.

Tugtar faoi deara, in ainneoin go bhfuil an fhadhb de bharr éilliú cuimhne, is féidir é a shaothrú go hiontaofa agus arís agus arís eile beag beann ar an ailtireacht crua-earraí a úsáidtear. Táthar tar éis an saothrú ullmhaithe a thástáil go rathúil ar Ubuntu, Debian, Fedora agus CentOS, ach is féidir é a úsáid ar dháileacháin eile freisin. Níl an leas bunaidh ar fáil go poiblí fós, rud a thugann le fios go bhfuil sé fánach agus gur féidir le taighdeoirí eile é a athchruthú go héasca, agus mar sin tá sé tábhachtach an nuashonrú paiste a shuiteáil a luaithe is féidir ar chórais il-úsáideoirí. Tá Polkit ar fáil freisin do chórais BSD agus Solaris, ach níl staidéar déanta air le húsáid orthu. Is eol nach féidir an t-ionsaí a dhéanamh ar OpenBSD, toisc nach gceadaíonn an eithne OpenBSD luach argc nialasach a rith nuair a ghlaoitear execve().

Tá an fhadhb ann ó mhí na Bealtaine 2009, ó cuireadh an t-ordú pkexec leis. Tá an socrú maidir le leochaileacht PolKit ar fáil faoi láthair mar phaiste (níor scaoileadh paiste ar bith), ach ó cuireadh forbróirí dáileacháin ar an eolas faoin bhfadhb roimh ré, d'fhoilsigh an chuid is mó dáileacháin an nuashonrú ag an am céanna le nochtadh faisnéise faoin leochaileacht. Tá an cheist socraithe i RHEL 6/7/8, Debian, Ubuntu, openSUSE, SUSE, Fedora, ALT Linux, ROSA, Gentoo, Void Linux, Arch Linux agus Manjaro. Mar bheart sealadach chun an leochaileacht a chosc, is féidir leat an fhréamh-bhratach SUID a bhaint den chlár /usr/bin/pkexec (“chmod 0755 /usr/bin/pkexec”).



Foinse: oscailtenet.ru

Add a comment