Yn Exim mail tsjinner
Yn 'e standertkonfiguraasje kin de oanfal sûnder ûnnedige komplikaasjes útfierd wurde troch in lokale brûker, om't de "ferifiearje = ûntfanger" ACL wurdt tapast, dy't ekstra kontrôles foar eksterne adressen útfiert. In oanfal op ôfstân kin foarkomme as ynstellings wizige wurde, lykas fungearje as in sekundêre MX foar in oar domein, it fuortsmiten fan de "ferifiearje=ûntfanger" ACL, of bepaalde wizigingen oan local_part_suffix). In oanfal op ôfstân is ek mooglik as de oanfaller by steat is om de ferbining mei de tsjinner iepen te hâlden foar 7 dagen (bygelyks ien byte per minút ferstjoere om in time-out te omgean). Tagelyk is it mooglik dat d'r ienfâldiger oanfalvektoren binne foar eksploitaasje op ôfstân fan it probleem.
De kwetsberens wurdt feroarsake troch ferkearde ferifikaasje fan it adres fan de ûntfanger yn de funksje deliver_message() definiearre yn it /src/deliver.c-bestân. Troch it manipulearjen fan de adres opmaak, in oanfaller kin berikke de ferfanging fan syn gegevens yn de arguminten fan in kommando neamd troch de execv () funksje mei root rjochten. Operaasje fereasket net it gebrûk fan komplekse techniken dy't brûkt wurde foar bufferoverflows of ûnthâldkorrupsje; ienfâldige karakterferfanging is genôch.
It probleem is relatearre oan it gebrûk fan it konstruksje foar adreskonverzje:
deliver_localpart = expand_string(
string_sprintf("${local_part:%s}", new->adres));
leverje_domein = útwreidzje_string(
string_sprintf("${domein:%s}", nij->adres));
De funksje expand_string() is in te komplisearre kombinator, ynklusyf it werkennen fan it kommando "${run{command arguminten}", wat liedt ta de lansearring fan in eksterne handler. Sa, om binnen in SMTP-sesje oan te fallen, hoecht in lokale brûker allinich in kommando te stjoeren lykas 'RCPT TO "brûkersnamme+${run{...}}@localhost"', wêr't localhost ien fan 'e hosts is fan 'e list local_domains, en brûkersnamme is de namme fan in besteande lokale brûker.
As de tsjinner wurket as e-postrelay, is it genôch om op ôfstân it kommando 'RCPT TO "${run{...}}@relaydomain.com"' te stjoeren, wêrby't relaydomain.com ien fan 'e hosts is neamd yn 'e relay_to_domains ynstellings seksje. Om't Exim net standert is om de privileezjemodus te fallen (deliver_drop_privilege = false), wurde kommando's trochjûn fia "${run{...}}" útfierd as root.
It is opmerklik dat de kwetsberens wie
In fix foar eardere ferzjes dy't bliuwend wurde brûkt yn distribúsjes is op it stuit allinich beskikber as
Boarne: opennet.ru