Patched Exim - ielāps vēlreiz. Svaiga attālās komandas izpilde Exim 4.92 vienā pieprasījumā

Patched Exim - ielāps vēlreiz. Svaiga attālās komandas izpilde Exim 4.92 vienā pieprasījumā

Pavisam nesen, vasaras sākumā, tika plaši izplatīti aicinājumi atjaunināt Exim uz versiju 4.92 CVE-2019-10149 ievainojamības dēļ (Steidzami atjauniniet Exim uz 4.92 — ir aktīva infekcija / Sudo Null IT News). Un nesen izrādījās, ka Sustes ļaunprogrammatūra nolēma izmantot šo ievainojamību.

Tagad visi, kas steidzami atjaunināja, var atkal “priecāties”: 21. gada 2019. jūlijā pētnieks Zerons atklāja kritisku ievainojamību Exim Mail Transfer agent (MTA), izmantojot TLS versijām no 4.80 uz 4.92.1 ieskaitot, ļaujot attālināti izpildīt kodu ar priviliģētām tiesībām (CVE-2019-15846).

Neaizsargātība

Ievainojamība pastāv, ja tiek izmantota gan GnuTLS, gan OpenSSL bibliotēka, veidojot drošu TLS savienojumu.

Saskaņā ar izstrādātāja Heiko Schlittermann teikto, Exim konfigurācijas fails pēc noklusējuma neizmanto TLS, taču daudzi izplatījumi instalēšanas laikā izveido nepieciešamos sertifikātus un nodrošina drošu savienojumu. Opciju instalē arī jaunākās Exim versijās tls_advertise_hosts=* un ģenerēt nepieciešamos sertifikātus.

atkarīgs no konfigurācijas. Lielākā daļa izplatījumu to iespējo pēc noklusējuma, taču Exim ir nepieciešams sertifikāts un atslēga, lai tas darbotos kā TLS serveris. Iespējams, Distros iestatīšanas laikā izveido sertifikātu. Jaunākajos Exims ir tls_advertise_hosts opcija, kuras noklusējuma vērtība ir “*”, un tiek izveidots pašparakstīts sertifikāts, ja tāds nav.

Pati ievainojamība slēpjas nepareizā SNI apstrādē (Server Name Indication — tehnoloģija, kas tika ieviesta 2003. gadā RFC 3546, lai klients pieprasītu pareizu domēna vārda sertifikātu, TLS SNI standarta izplatīšana / WEBO grupas emuārs / Sudo Null IT ziņas) TLS rokasspiediena laikā. Uzbrucējam vienkārši jānosūta SNI, kas beidzas ar slīpsvītru ("") un nulles rakstzīmi (" ").

Pētnieki no Qualys ir atklājuši kļūdu funkcijā string_printing(tls_in.sni), kas ietver nepareizu "aizbēgšanu". Rezultātā atpakaļvērstā slīpsvītra drukas spoles galvenes failā tiek ierakstīta bez atsoļa. Pēc tam šo failu ar priviliģētām tiesībām nolasa funkcija spool_read_header(), kas noved pie kaudzes pārpildes.

Ir vērts atzīmēt, ka šobrīd Exim izstrādātāji ir izveidojuši ievainojamību PoC ar komandu izpildi attālā ievainojamā serverī, taču tas vēl nav publiski pieejams. Kļūdas izmantošanas viegluma dēļ tas ir tikai laika jautājums un diezgan īss.

Plašāku Qualys pētījumu var atrast šeit.

Patched Exim - ielāps vēlreiz. Svaiga attālās komandas izpilde Exim 4.92 vienā pieprasījumā

SNI izmantošana TLS

Potenciāli neaizsargāto publisko serveru skaits

Saskaņā ar statistikas datiem no liela hostinga pakalpojumu sniedzēja E-Soft Inc uz 1. septembri īrētos serveros versija 4.92 tiek izmantota vairāk nekā 70% resursdatoru.

versija
Serveru skaits
Procents

4.92.1
6471
1.28%

4.92
376436
74.22%

4.91
58179
11.47%

4.9
5732
1.13%

4.89
10700
2.11%

4.87
14177
2.80%

4.84
9937
1.96%

Citas versijas
25568
5.04%

E-Soft Inc uzņēmuma statistika

Ja izmantojat meklētājprogrammu Shodan, pēc tam no 5,250,000 XNUMX XNUMX servera datubāzē:

  • aptuveni 3,500,000 4.92 1,380,000 izmanto Exim XNUMX (apmēram XNUMX XNUMX XNUMX, izmantojot SSL/TLS);
  • vairāk nekā 74,000 4.92.1 izmanto 25,000 (apmēram XNUMX XNUMX izmanto SSL/TLS).

Tādējādi publiski zināmo un pieejamo Exim potenciāli neaizsargāto serveru skaits ir aptuveni 1.5M.

Patched Exim - ielāps vēlreiz. Svaiga attālās komandas izpilde Exim 4.92 vienā pieprasījumā

Meklēt Exim serverus Shodan

Aizsardzība

  • Vienkāršākā, bet ne ieteicamā iespēja ir neizmantot TLS, kā rezultātā e-pasta ziņojumi tiks pārsūtīti skaidri.
  • Lai izvairītos no ievainojamības izmantošanas, labāk būtu atjaunināt uz versiju Exim Internet Mailer 4.92.2.
  • Ja nav iespējams atjaunināt vai instalēt ielāpu versiju, opcijai Exim konfigurācijā varat iestatīt ACL. acl_smtp_mail ar šādiem noteikumiem:
    # to be prepended to your mail acl (the ACL referenced
    # by the acl_smtp_mail main config option)
    deny    condition = ${if eq{}{${substr{-1}{1}{$tls_in_sni}}}}
    deny    condition = ${if eq{}{${substr{-1}{1}{$tls_in_peerdn}}}}

Avots: www.habr.com

Pievieno komentāru