I Exim e-postserver
I standardkonfigurasjonen kan angrepet utføres uten unødvendige komplikasjoner av en lokal bruker, siden "verify = recipient" ACL brukes, som utfører ytterligere kontroller for eksterne adresser. Et eksternt angrep kan oppstå når innstillinger endres, for eksempel å fungere som en sekundær MX for et annet domene, fjerne "verify=recipient" ACL eller visse endringer i local_part_suffix). Et eksternt angrep er også mulig hvis angriperen er i stand til å holde tilkoblingen til serveren åpen i 7 dager (for eksempel ved å sende en byte per minutt for å omgå en tidsavbrudd). Samtidig er det mulig at det finnes enklere angrepsvektorer for fjernutnyttelse av problemet.
Sårbarheten er forårsaket av feil bekreftelse av mottakerens adresse i delivery_message()-funksjonen definert i filen /src/deliver.c. Ved å manipulere adresseformateringen, kan en angriper oppnå erstatning av dataene sine i argumentene til en kommando kalt gjennom execv()-funksjonen med rotrettigheter. Drift krever ikke bruk av komplekse teknikker som brukes for bufferoverløp eller minnekorrupsjon er tilstrekkelig.
Problemet er relatert til bruken av konstruksjonen for adressekonvertering:
levere_lokalpart = utvide_streng(
string_sprintf("${local_part:%s}", ny->adresse));
levere_domene = utvide_streng(
string_sprintf("${domene:%s}", ny->adresse));
Expand_string()-funksjonen er en overkomplisert kombinator, inkludert gjenkjennelse av kommandoen "${run{command arguments}", som fører til lanseringen av en ekstern behandler. For å angripe innenfor en SMTP-økt, trenger en lokal bruker bare å sende en kommando som 'RCPT TIL «brukernavn+${run{...}}@localhost»', der localhost er en av vertene fra listen local_domains, og brukernavn er navnet på en eksisterende lokal bruker.
Hvis serveren fungerer som et e-postrelé, er det nok å eksternt sende kommandoen 'RCPT TIL "${run{...}}@relaydomain.com"', der relaydomain.com er en av vertene som er oppført i relay_to_domains innstillingsdelen. Siden Exim ikke er standard for å droppe rettighetsmodus (deliver_drop_privilege = false), vil kommandoer som sendes via "${run{...}}" bli utført som root.
Det er bemerkelsesverdig at sårbarheten var
En rettelse for tidligere versjoner som fortsatt brukes i distribusjoner er foreløpig kun tilgjengelig som
Kilde: opennet.ru