Izlabojiet Exim — izlabojiet vēlreiz. Jauna Remote Command Execution ievainojamība Exim 4.92 vienā pieprasījumā.

Izlabojiet Exim — izlabojiet vēlreiz. Jauna Remote Command Execution ievainojamība Exim 4.92 vienā pieprasījumā.

Pavisam nesen, vasaras sākumā, parādījās masveida aicinājumi atjaunot Exim uz versiju 4.92, ņemot vērā CVE-2019-10149 ievainojamību (Steidzami atjauniniet exim līdz 4.92 — notiek aktīva inficēšana / Habr.). Un nesen noskaidrojās, ka ļaunprogrammatūra Sustes nolēma izmantot šo ievainojamību.

Tagad visi steidzamajā atjaunināšanā var atkal "priecāties": 2019. gada 21. jūlijā pētnieks Zerons atklāja kritisku ievainojamību Exim Mail Transfer agent (MTA) lietojot TLS versijām no 4.80 līdz 4.92.1 ieskaitot, ļaujot attālināti izpildīt kodu ar privileģētām tiesībām. (CVE-2019-15846).

Ievainojamība

Ievainojamība pastāv, ja izmanto GnuTLS vai OpenSSL bibliotēkas, veidojot drošu TLS savienojumu.

Saskaņā ar izstrādātāja Heiko Schlittermann teikto, Exim konfigurācijas fails pēc noklusējuma neizmanto TLS, tomēr daudzi izplatījumi instalācijas laikā izveido nepieciešamās sertifikātus un iekļauj drošu savienojumu. Arī jaunākās Exim versijas iestata opciju tls_advertise_hosts=* un ģenerē nepieciešamos sertifikātus.

atkarīgs no konfigurācijas. Vairums izplatījumu pēc noklusējuma to iespējo, taču Exim nepieciešams sertifikāts+atslēga, lai darbotos kā TLS serveris. Iespējams, izplatījumi izveido sertifikātu instalācijas laikā. Jaunākie Exim satur tls_advertise_hosts opciju, kas noklusēti ir uz "*", un izveido pašparakstītu sertifikātu, ja tāds nav norādīts.

Ievainojamība slēpjas nepareizā SNI (Server Name Indication, tehnoloģija, kas ieviesta 2003. gadā RFC 3546, lai klients varētu pieprasīt atbilstošu sertifikātu domēna nosaukumam, TLS SNI standarta izplatība / WEBO Group blogs / Habr) laikā TLS roku spiedienā. Uzbrucējam pietiek nosūtīt SNI, kas beidzas ar atpakaļslīdošu simbolu ("\") un nulles simbolu (" ").

Pētnieki no Qualys konstatēja kļūdu funkcijā string_printing(tls_in.sni), kas saistīta ar nepareizu "" ekrāna sagatavošanu. Rezultātā atpakaļslīdošs simbols tiek ierakstīts neekrānotā veidā failā ar galvas drukāšanu. Pēc tam šo failu ar privileģētām tiesībām lasa funkcija spool_read_header(), kas noved pie kaudzes pārplūdes (heap overflow).

Jāatzīmē, ka šobrīd Exim izstrādātāji ir izveidojuši PoC ievainojamību ar komandu izpildi attālinātā ievainojamajā serverī, taču publiskajā pieejamībā tas vēl nav pieejams. Ņemot vērā kļūdas exploitation vienkāršību, tā ir vienīgi laika jautājums, turklāt diezgan īss.

Ar detalizētu uzņēmuma Qualys pētījumu var iepazīties šeit.

Izlabojiet Exim — izlabojiet vēlreiz. Jauna Remote Command Execution ievainojamība Exim 4.92 vienā pieprasījumā.

SNI izmantošana TLS

Potenciāli neaizsargātu publisko serveru skaits

Saskaņā ar lielā hostinga pakalpojumu sniedzēja statistiku E-Soft Inc uz 1. septembri, īrētajos serveros versija 4.92 tiek izmantota vairāk nekā 70% hostu.

Versija
Serveru skaits
Procenti

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 statistika

Ja vēršamies pie meklētājprogrammas Shodan, tad no 5,250,000 serveru datu bāzē:

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

Tādējādi publiski zināmu un pieejamu Exim potenciāli neaizsargātu serveru skaits ir aptuveni 1.5 miljons.

Izlabojiet Exim — izlabojiet vēlreiz. Jauna Remote Command Execution ievainojamība Exim 4.92 vienā pieprasījumā.

Exim serveru meklēšana Shodan

Aizsardzība

  • Visvienkāršākais, bet neieteicamais variants — neizmantot TLS, kas novedīs pie e-pasta ziņojumu pārsūtīšanas atklātā veidā.
  • Vēlams, lai izvairītos no ievainojamības izmantošanas, atjaunināt uz versiju Exim Internet Mailer 4.92.2.
  • Ja atjaunināšana vai labota versija nav iespējama, kodā Exim varat iestatīt ACL opcijai 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: habr.com

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster