Mikilvægt varnarleysi í Exim sem gerir kleift að keyra kóða á þjóninum með rótarréttindi

Í Exim póstþjóni greind gagnrýninn varnarleysi (CVE-2019-10149), sem getur leitt til keyrslu á fjarkóða á þjóninum með rótarréttindum þegar unnið er með sérútbúna beiðni. Möguleikinn á að nýta vandamálið kom fram í útgáfum frá 4.87 til 4.91 að ​​meðtöldum eða þegar byggt var með EXPERIMENTAL_EVENT valkostinum.

Í sjálfgefna stillingu er hægt að framkvæma árásina án óþarfa fylgikvilla af staðbundnum notanda, þar sem „staðfesta = viðtakandi“ ACL er notað, sem framkvæmir viðbótareftirlit fyrir ytri vistföng. Fjarárás getur átt sér stað þegar stillingum er breytt, eins og að starfa sem auka-MX fyrir annað lén, fjarlægja „verify=recipient“ ACL eða ákveðnar breytingar á local_part_suffix). Fjarárás er einnig möguleg ef árásarmaðurinn getur haldið tengingunni við netþjóninn opinni í 7 daga (td sent eitt bæti á mínútu til að komast framhjá tímamörkum). Á sama tíma er mögulegt að til séu einfaldari árásarvektorar fyrir fjarnýtingu á vandamálinu.

Varnarleysið stafar af rangri staðfestingu á heimilisfangi viðtakanda í aðgerðinni delivery_message() sem er skilgreint í /src/deliver.c skránni. Með því að hagræða heimilisfangasniðinu getur árásarmaður náð að skipta gögnum sínum út í rök skipunar sem kallað er í gegnum execv() aðgerðina með rótarréttindum. Rekstur krefst ekki notkunar flókinnar tækni sem notuð er til að flæða yfir biðminni eða minnisspillingu; einföld stafiskipti er nóg.

Vandamálið tengist notkun smíðinnar til að breyta heimilisfangi:

delivery_localpart = expand_string(
string_sprintf("${local_part:%s}", new->address));
skila_lén = útvíkka_streng(
string_sprintf("${lén:%s}", new->address));

Expand_string() fallið er of flókið samsetningartæki, þar á meðal að þekkja skipunina „${run{command arguments}“, sem leiðir til þess að utanaðkomandi meðhöndlari er ræstur. Þannig, til að ráðast á innan SMTP lotu, þarf staðbundinn notandi aðeins að senda skipun eins og 'RCPT TO "username+${run{...}}@localhost"', þar sem localhost er einn af gestgjöfunum af local_domains listanum, og notendanafn er nafn núverandi staðbundins notanda.

Ef þjónninn virkar sem póstsending er nóg að senda skipunina 'RCPT TO "${run{...}}@relaydomain.com"', þar sem relaydomain.com er einn af hýsingunum sem eru skráðir í relay_to_domains stillingarhluta. Þar sem Exim er ekki sjálfgefið að sleppa forréttindastillingu (deliver_drop_privilege = false), verða skipanir sem sendar eru með „${run{...}}“ keyrðar sem rót.

Það er athyglisvert að varnarleysið var útrýmt í 4.92 útgáfunni sem gefin var út í febrúar, án þess að leggja áherslu á að lagfæringin gæti leitt til öryggisvandamála. Það er engin ástæða til að ætla að vísvitandi hafi verið leynt veikleikanum af hálfu Exim forritara, þar sem vandamálið var lagað á meðan leiðréttingar bilun sem á sér stað þegar röng heimilisföng eru send og varnarleysið var greint af Qualys við úttekt á breytingum á Exim.

Lagfæring fyrir fyrri útgáfur sem eru áfram notaðar í dreifingu er sem stendur aðeins fáanleg sem plástur. Leiðréttingarútgáfur fyrir fyrri útibú til að laga vandamálið eru áætluð 11. júní. Pakkuppfærslur eru tilbúnar fyrir Debian, ubuntu, openSUSE. Arch Linux и Fedora Þeir veita útgáfu 4.92, þar sem vandamálið kemur ekki fram. RHEL og CentOS vandamál ekki viðkvæmt, þar sem Exim er ekki innifalið í venjulegu pakkageymslunni þeirra.

Heimild: opennet.ru

Bæta við athugasemd