Atskleista kritinio „Exim“ pažeidžiamumo detalė

paskelbta korekcinis atleidimas Exim 4.92.2 pašalinus kritinius pažeidžiamumų (CVE-2019-15846). Problema atsiranda tik tada, kai įjungtas TLS palaikymas ir išnaudojamas perduodant specialiai sukurtą kliento sertifikatą arba pakeistą vertę SNI. Pažeidžiamumas nustatyta pateikė Qualys.

problema pateikti tvarkyklėje, kad būtų išvengta specialiųjų simbolių eilutėje (string_interpret_escape() iš eilutės.c) ir atsiranda dėl to, kad eilutės pabaigoje esantis simbolis „\“ interpretuojamas prieš nulinį simbolį („\0“) ir iš jo pašalinamas. Kai išeinate, seka „\“ ir kitas nulinis eilutės pabaigos kodas yra traktuojamos kaip vienas simbolis, o žymeklis perkeliamas į duomenis, esančius už eilutės ribų, o tai traktuojama kaip eilutės tęsinys.

Kodas, iškviečiantis string_interpret_escape(), priskiria buferį nutekėjimui pagal tikrąjį dydį, o rodoma rodyklė patenka į sritį, esančią už buferio ribų. Atitinkamai, bandant apdoroti įvesties eilutę, susidaro situacija, kai nuskaitomi duomenys iš srities, esančios už paskirstyto buferio ribų, ir bandymas įrašyti neišskiriamą eilutę gali sukelti rašymą už buferio ribų.

Pagal numatytąją konfigūraciją pažeidžiamumas gali būti išnaudotas siunčiant specialiai sukurtus duomenis SNI, kai sukuriamas saugus ryšys su serveriu. Problema taip pat gali būti išnaudota keičiant peerdn reikšmes konfigūracijose, sukonfigūruotose kliento sertifikato autentifikavimui arba importuojant sertifikatus. Ataka per SNI ir peerdn galima nuo išleidimo Exim 4.80, kurioje funkcija string_unprinting() buvo naudojama norint atspausdinti peerdn ir SNI turinį.

Buvo paruoštas išnaudojimo prototipas atakai per SNI, veikiantis i386 ir amd64 architektūrose Linux sistemose su Glibc. Išnaudojimas naudoja duomenų perdangą krūvos srityje, todėl perrašoma atmintis, kurioje saugomas žurnalo failo pavadinimas. Failo pavadinimas pakeičiamas „/../../../../../../../../etc/passwd“. Toliau perrašomas kintamasis su siuntėjo adresu, kuris pirmiausia išsaugomas žurnale, kuris leidžia į sistemą įtraukti naują vartotoją.

Paketų naujinimai su pažeidžiamumo pataisymais, kuriuos išleido platinimai debian, ubuntu, Minkšta fetrinė skrybėlė, SUSE / openSUSE и FreeBSD. RHEL ir CentOS problema nėra jautrūs, nes Exim nėra įtrauktas į jų įprastą paketų saugyklą (in ŠILTA обновление jau susiformavo, bet kol kas nepadėtas į viešąją saugyklą). Exim kode problema išspręsta naudojant vieno įdėklą pleistras, kuris išjungia pasvirojo brūkšnio pašalinimo efektą, jei jis yra eilutės pabaigoje.

Norėdami užblokuoti pažeidžiamumą, galite išjungti TLS palaikymą arba pridėti
ACL skyrius „acl_smtp_mail“:

atmesti sąlygą = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
atmesti sąlygą = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

Šaltinis: opennet.ru

Добавить комментарий