corrigerende uitgave met critieke oplossing (), wat in de standaardconfiguratie kan leiden tot het op afstand uitvoeren van code door een aanvaller met root-rechten. Het probleem doet zich alleen voor wanneer TLS-ondersteuning is ingeschakeld en wordt geƫxploiteerd door het verzenden van een speciaal opgemaakt clientcertificaat of een gemodificeerde waarde in SNI. Kwetsbaarheid door Qualys.
Probleem in de handler voor het escapen van speciale tekens in de string ( uit string.c) en is veroorzaakt doordat het symbool ā\ā aan het einde van de string wordt geĆÆnterpreteerd vóór het null-teken (ā\0ā) en dit escapen. Bij het escapen wordt de reeks ā\ā en de daaropvolgende nulcode van het einde van de string verwerkt als ƩƩn teken, en de pointer verschuift naar gegevens buiten de string, die worden behandeld als een voortzetting ervan.
De code die string_interpret_escape() aanroept, reserveert een buffer voor de invoer, gebaseerd op de feitelijke grootte, en de instellingen pointer komt in een gebied buiten de grenzen van de buffer. Dienovereenkomstig, bij het proberen te verwerken van de invoerstring ontstaat er een situatie waarbij gegevens uit een gebied buiten de toegewezen buffer worden gelezen, en de poging om de ongedecodeerde string te schrijven kan leiden tot schrijven buiten de buffer.
In de standaardconfiguratie kan de kwetsbaarheid worden geƫxploiteerd door speciaal opgemaakte gegevens in SNI te verzenden bij het opzetten van een beveiligde verbinding met de server. Het probleem kan ook worden geƫxploiteerd door waarden peerdn aan te passen in configuraties die zijn ingesteld voor clientcertificaatverificatie of bij het importeren van certificaten. Aanvallen via SNI en peerdn zijn mogelijk vanaf de release , waarin de functie string_unprinting() werd toegepast voor het ongedigitaliseren van de inhoud van peerdn en SNI.
Voor de aanval via SNI is een prototype-exploit voorbereid dat werkt op i386- en amd64-architecturen in Linux-systemen met Glibc. In de exploit wordt gegevensoverlap gebruikt op het heapgebied, wat leidt tot overschrijving van geheugen waarin de logbestandsnaam is opgeslagen. De logbestandsnaam wordt vervangen door ā/..../..../..../..../..../..../..../..../etc/passwdā. Vervolgens wordt de variabele met het adres van de verzender, die als eerste in de log wordt opgeslagen, overschreven, wat het mogelijk maakt om een nieuwe gebruiker aan het systeem toe te voegen.
Pakketupdates met een oplossing voor de kwetsbaarheid zijn uitgebracht door distributies , , , en . RHEL en CentOS zijn niet betrokken bij het probleem , omdat Exim niet in hun standaard pakketrepository is opgenomen (in een update , maar voorlopig in het openbare repository). In de Exim-code wordt het probleem opgelost met een enkele , die de escaperende werking van de terugslag deactiveert als deze aan het einde van de regel staat.
Als een tijdelijke oplossing om de kwetsbaarheid te blokkeren, kunt u de ondersteuning voor TLS uitschakelen of toevoegen aan
de ACL-sectie «acl_smtp_mail»:
deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}
Bron: opennet.ru
