Patched Exim - patch igen. Frisk fjernkommandoudførelse i Exim 4.92 på én anmodning

Patched Exim - patch igen. Frisk fjernkommandoudførelse i Exim 4.92 på én anmodning

For nylig, i forsommeren, var der udbredte opfordringer til, at Exim skulle opdateres til version 4.92 på grund af CVE-2019-10149 sårbarheden (Opdater hurtigt Exim til 4.92 - der er en aktiv infektion / Sudo Null IT News). Og for nylig viste det sig, at Sustes malware besluttede at drage fordel af denne sårbarhed.

Nu kan alle dem, der akut opdaterede, "fryde sig" igen: den 21. juli 2019 opdagede forsker Zerons en kritisk sårbarhed i Exim Mail Transfer Agent (MTA) ved brug af TLS for versioner fra 4.80 4.92.1 til inklusive, tillader fjernbetjening eksekver kode med privilegerede rettigheder (CVE-2019-15846).

Sårbarhed

Sårbarheden er til stede, når du bruger både GnuTLS- og OpenSSL-bibliotekerne, når du etablerer en sikker TLS-forbindelse.

Ifølge udvikler Heiko Schlittermann bruger konfigurationsfilen i Exim ikke TLS som standard, men mange distributioner skaber de nødvendige certifikater under installationen og muliggør en sikker forbindelse. Også nyere versioner af Exim installerer muligheden tls_advertise_hosts=* og generere de nødvendige certifikater.

afhænger af konfigurationen. De fleste distros aktiverer det som standard, men Exim har brug for et certifikat+nøgle for at fungere som en TLS-server. Sandsynligvis opretter Distros et certifikat under opsætningen. Nyere Exims har indstillingen tls_advertise_hosts, der som standard er "*" og opretter et selvsigneret certifikat, hvis intet er angivet.

Selve sårbarheden ligger i forkert behandling af SNI (Server Name Indication, en teknologi introduceret i 2003 i RFC 3546 for en klient at anmode om det korrekte certifikat for et domænenavn, Distribution af TLS SNI-standarden / WEBO Group Blog / Sudo Null IT News) under et TLS-håndtryk. En angriber skal blot sende en SNI, der slutter med en omvendt skråstreg ("") og et nul-tegn (" ").

Forskere fra Qualys har opdaget en fejl i string_printing(tls_in.sni)-funktionen, som involverer forkert escape af "". Som et resultat heraf skrives omvendt skråstreg uden escape til printspoolhovedfilen. Denne fil læses derefter med privilegerede rettigheder af spool_read_header()-funktionen, hvilket fører til heap-overløb.

Det er værd at bemærke, at Exim-udviklere i øjeblikket har skabt en PoC af sårbarheder med udførelse af kommandoer på en ekstern sårbar server, men den er endnu ikke offentligt tilgængelig. På grund af den lette udnyttelse af fejlen, er det kun et spørgsmål om tid og ret kort.

En mere detaljeret undersøgelse fra Qualys kan findes her.

Patched Exim - patch igen. Frisk fjernkommandoudførelse i Exim 4.92 på én anmodning

Brug af SNI i TLS

Antal potentielt sårbare offentlige servere

Ifølge statistik fra en stor hostingudbyder E-Soft Inc fra 1. september, på lejede servere, er version 4.92 brugt i mere end 70 % af værterne.

Udgave
Antal servere
procent

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 %

Andre versioner
25568
5.04 %

E-Soft Inc virksomhedsstatistik

Hvis du bruger en søgemaskine Shodan, derefter ud af 5,250,000 i serverdatabasen:

  • omkring 3,500,000 bruger Exim 4.92 (ca. 1,380,000 bruger SSL/TLS);
  • over 74,000 bruger 4.92.1 (ca. 25,000 bruger SSL/TLS).

Således tæller offentligt kendte og tilgængelige Exim potentielt sårbare servere ca 1.5 millioner.

Patched Exim - patch igen. Frisk fjernkommandoudførelse i Exim 4.92 på én anmodning

Søg efter Exim-servere i Shodan

beskyttelse

  • Den enkleste, men ikke anbefalede, mulighed er ikke at bruge TLS, hvilket vil resultere i, at e-mail-beskeder videresendes i det klare.
  • For at undgå udnyttelse af sårbarheden ville det være mere at foretrække at opdatere til versionen Exim Internet Mailer 4.92.2.
  • Hvis det ikke er muligt at opdatere eller installere en patchet version, kan du indstille en ACL i Exim-konfigurationen for muligheden acl_smtp_mail med følgende regler:
    # 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}}}}

Kilde: www.habr.com