Tika atklāta detalizēta informācija par Exim kritisko ievainojamību

publicēts koriģējošā atbrīvošana Eksim 4.92.2 ar kritisko likvidēšanu ievainojamības (CVE-2019-15846), kas noklusējuma konfigurācijā var izraisīt attālu koda izpildi, ko veic uzbrucējs ar root tiesībām. Problēma parādās tikai tad, ja ir iespējots TLS atbalsts un tiek izmantots, nododot SNI speciāli izstrādātu klienta sertifikātu vai modificētu vērtību. Neaizsargātība identificēts autors Qualys.

problēma klāt apdarinātājā, lai izvairītos no īpašām rakstzīmēm virknē (string_interpret_escape() no virknes.c), un to izraisa rakstzīme "\" virknes beigās, kas tiek interpretēta pirms nulles rakstzīmes ('\0') un izplūst no tās. Izejot, secība “\” un tai sekojošais nulles rindas beigu kods tiek uzskatīts par vienu rakstzīmi, un rādītājs tiek pārvietots uz datiem ārpus rindas, kas tiek uzskatīts par rindas turpinājumu.

Kods, kas izsauc string_interpret_escape(), piešķir aizplūšanai buferi, pamatojoties uz faktisko izmēru, un atklātais rādītājs nonāk apgabalā ārpus bufera robežām. Attiecīgi, mēģinot apstrādāt ievades virkni, rodas situācija, kad tiek nolasīti dati no apgabala, kas atrodas ārpus piešķirtā bufera robežām, un mēģinājums rakstīt virkni bez atkāpšanās var novest pie rakstīšanas ārpus bufera robežām.

Noklusējuma konfigurācijā ievainojamību var izmantot, nosūtot speciāli izstrādātus datus uz SNI, kad tiek izveidots drošs savienojums ar serveri. Problēmu var izmantot arī, mainot peerdn vērtības konfigurācijās, kas konfigurētas klienta sertifikātu autentifikācijai, vai importējot sertifikātus. Uzbrukums, izmantojot SNI un peerdn, ir iespējams, sākot no atbrīvošanas Eksim 4.80, kurā funkcija string_unprinting() tika izmantota, lai atdrukātu peerdn un SNI saturu.

Uzbrukumam, izmantojot SNI, ir sagatavots ekspluatācijas prototips, kas darbojas uz i386 un amd64 arhitektūrām Linux sistēmās ar Glibc. Ekspluatācija izmanto datu pārklājumu kaudzes apgabalā, kā rezultātā tiek pārrakstīta atmiņa, kurā tiek saglabāts žurnālfaila nosaukums. Faila nosaukums tiek aizstāts ar "/../../../../../../../../etc/passwd". Tālāk tiek pārrakstīts mainīgais ar sūtītāja adresi, kas vispirms tiek saglabāts žurnālā, kas ļauj sistēmai pievienot jaunu lietotāju.

Pakešu atjauninājumi ar ievainojamības labojumiem, ko izlaiduši izplatījumi Debian, Ubuntu, Fedora, SUSE/openSUSE и FreeBSD. RHEL un CentOS problēma nav uzņēmīgi, jo Exim nav iekļauts viņu parastajā pakotņu repozitorijā (in SILTS обновление jau veidojas, bet pagaidām nav novietots publiskajā repozitorijā). Exim kodā problēma ir novērsta ar viena starpliku plāksteris, kas atspējo atpakaļvērstās slīpsvītras atkāpšanās efektu, ja tā atrodas rindas beigās.

Kā risinājumu, lai bloķētu ievainojamību, varat atspējot TLS atbalstu vai pievienot
ACL sadaļa “acl_smtp_mail”:

noliegt nosacījumu = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
noliegt nosacījumu = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

Avots: opennet.ru

Pievieno komentāru