Die Version 4.94.2 des Mailservers Exim wurde veröffentlicht und behebt 21 Sicherheitsanfälligkeiten (CVE-2020-28007-CVE-2020-28026, CVE-2021-27216), die von Qualys entdeckt und unter dem Codenamen 21Nails präsentiert wurden. 10 dieser Probleme können aus der Ferne ausgenutzt werden, einschließlich der Möglichkeit, Code mit Root-Rechten über Manipulationen an SMTP-Kommandos im Dialog mit dem Server auszuführen.
Betroffen sind alle Versionen von Exim, deren Entwicklung seit 2004 im Git verfolgt wird. Für 4 lokale Schwachstellen und 3 entfernte Probleme wurden funktionierende Exploit-Prototypen erstellt. Die Exploits für lokale Schwachstellen (CVE-2020-28007, CVE-2020-28008, CVE-2020-28015, CVE-2020-28012) ermöglichen das Anheben der Privilegien auf Benutzerroot. Zwei entfernte Probleme (CVE-2020-28020, CVE-2020-28018) erlauben es, ohne Authentifizierung Code mit den Rechten des Benutzers exim auszuführen (daraufhin kann man durch Ausnutzen einer der lokalen Schwachstellen Zugriff auf Root erhalten).
Die CVE-2020-28021-Sicherheitsanfälligkeit ermöglicht die sofortige Ausführung von Remote-Code mit Root-Rechten, erfordert jedoch eine authentifizierte Anmeldung (der Benutzer muss eine authentifizierte Sitzung herstellen, bevor er die Sicherheitsanfälligkeit durch Manipulation des AUTH-Parameters im MAIL FROM-Befehl ausnutzen kann). Das Problem entsteht dadurch, dass ein Angreifer die Einfügung von Strings in den Header der Spool-Datei erreichen kann, da der Wert des authenticated_sender ohne ordnungsgemäße Escape-Sequenzen für Sonderzeichen geschrieben wird (zum Beispiel durch den Befehl „MAIL FROM: AUTH=Raven+0AReyes“).
Zusätzlich wurde festgestellt, dass eine weitere Remote-Sicherheitsanfälligkeit, CVE-2020-28017, ausgenutzt werden kann, um Code mit den Rechten des Benutzers „exim“ ohne Authentifizierung auszuführen, jedoch mehr als 25 GB Speicher benötigt. Für die verbleibenden 13 Sicherheitsanfälligkeiten könnten potenziell ebenfalls Exploits vorbereitet werden, aber in diese Richtung wurde bisher noch keine Arbeit geleistet.
Die Entwickler von Exim wurden im Oktober letzten Jahres über die Probleme informiert und haben mehr als 6 Monate für die Entwicklung von Patches benötigt. Allen Administratoren wird dringend geraten, Exim auf ihren Mail-Servern sofort zu aktualisieren. Servern bis zur Version 4.94.2. Alle Versionen von Exim bis zur Veröffentlichung 4.94.2 wurden als veraltet (obsolete) erklärt. Die Veröffentlichung der neuen Version wurde mit den Distributionen koordiniert, die gleichzeitig Paketupdates herausgegeben haben: Ubuntu, Arch Linux, FreeBSD, Debian, SUSE und Fedora. RHEL und CentOS sind von diesem Problem nicht betroffen, da Exim nicht in deren regulärem Paket-Repository enthalten ist (im EPEL-Repository sind die Updates derzeit noch nicht verfügbar).
Entfernte Sicherheitsanfälligkeiten:
- CVE-2020-28017: Ganzzahlüberlauf in der Funktion receive_add_recipient();
- CVE-2020-28020: Ganzzahlüberlauf in der Funktion receive_msg();
- CVE-2020-28023: Lesen außerhalb des zugewiesenen Puffers in der Funktion smtp_setup_msg();
- CVE-2020-28021: Einfügen einer neuen Zeile im Kopf des Spool-Files;
- CVE-2020-28022: Schreiben und Lesen außerhalb des zugewiesenen Puffers in der Funktion extract_option();
- CVE-2020-28026: Trunkierung und Einfügen einer Zeichenkette in der Funktion spool_read_header();
- CVE-2020-28019: Absturz beim Zurücksetzen des Zeigers auf die Funktion nach einem BDAT-Fehler;
- CVE-2020-28024: Überlauf am unteren Rand des Puffers in der Funktion smtp_ungetc();
- CVE-2020-28018: Zugriff auf den Puffer nach seiner Freigabe (use-after-free) in tls-openssl.c.
- CVE-2020-28025: Lesen außerhalb des zugewiesenen Puffers in der Funktion pdkim_finish_bodyhash().
Lokale Sicherheitsanfälligkeiten:
- CVE-2020-28007: Angriff über symbolischen Link im Exim-Log-Verzeichnis;
- CVE-2020-28008: Angriffe auf das Spool-Verzeichnis;
- CVE-2020-28014: Erstellen einer beliebigen Datei;
- CVE-2021-27216: Löschen einer beliebigen Datei;
- CVE-2020-28011: Pufferüberlauf in der Funktion queue_run();
- CVE-2020-28010: Schreiben außerhalb des Puffers in der Funktion main();
- CVE-2020-28013: Pufferüberlauf in der Funktion parse_fix_phrase();
- CVE-2020-28016: Schreiben außerhalb des Puffers in der Funktion parse_fix_phrase();
- CVE-2020-28015: Einfügen einer neuen Zeile in den Header der Spool-Datei;
- CVE-2020-28012: Fehlender Close-on-Exec-Flag für privilegierte anonyme Pipes;
- CVE-2020-28009: Ganzzahlenüberlauf in der Funktion get_stdinput().
Quelle: opennet.ru
