Na poštovním serveru Exim
Ve výchozí konfiguraci může útok provést bez zbytečných komplikací lokální uživatel, protože je aplikován ACL "verify = recipient", který provádí dodatečné kontroly externích adres. Vzdálený útok může nastat, když se změní nastavení, například funguje jako sekundární MX pro jinou doménu, odebere se ACL "verify=recipient" nebo se změní přípona local_part_suffix). Vzdálený útok je také možný, pokud je útočník schopen udržet připojení k serveru otevřené po dobu 7 dnů (například odesláním jednoho bajtu za minutu, aby se obešel časový limit). Zároveň je možné, že existují jednodušší útočné vektory pro vzdálené zneužití problému.
Chyba zabezpečení je způsobena nesprávným ověřením adresy příjemce ve funkci delivery_message() definované v souboru /src/deliver.c. Manipulací s formátováním adresy může útočník dosáhnout nahrazení svých dat argumenty příkazu volaného pomocí funkce execv() s právy root. Provoz nevyžaduje použití složitých technik používaných pro přetečení vyrovnávací paměti nebo poškození paměti, stačí jednoduchá substituce znaků.
Problém souvisí s použitím konstruktu pro převod adresy:
delivery_localpart = expand_string(
string_sprintf("${místní_část:%s}", nová->adresa));
delivery_domain = expand_string(
string_sprintf("${doména:%s}", nová->adresa));
Funkce expand_string() je příliš komplikovaný slučovač, včetně rozpoznání příkazu „${run{příkazové argumenty}“, což vede ke spuštění externího handleru. K útoku v rámci relace SMTP tedy místní uživatel potřebuje pouze odeslat příkaz jako 'RCPT TO “username+${run{...}}@localhost”', kde localhost je jeden z hostitelů ze seznamu local_domains, a uživatelské jméno je jméno existujícího místního uživatele.
Pokud server funguje jako přenos pošty, stačí vzdáleně odeslat příkaz 'RCPT TO "${run{...}}@relaydomain.com"', kde relaydomain.com je jeden z hostitelů uvedených v relay_to_domains sekce nastavení. Vzhledem k tomu, že Exim standardně nepouští režim oprávnění (deliver_drop_privilege = false), příkazy předané přes "${run{...}}" budou provedeny jako root.
Je pozoruhodné, že zranitelnost byla
Oprava pro předchozí verze, které se nadále používají v distribucích, je aktuálně dostupná pouze jako
Zdroj: opennet.ru