Byl nalezen nový vektor útoku na http server Apache, který zůstal neopravem v aktualizaci 2.4.50 a umožňuje přístup k souborům z oblastí mimo kořenový adresář stránek. Kromě toho vědci našli způsob, jak při určitých nestandardních nastaveních nejen číst systémové soubory, ale také vzdáleně spustit svůj kód na serveru. Problém se projevuje pouze ve verzích 2.4.49 a 2.4.50, starší verze nejsou zranitelné. Aby byl nový variant zranitelnosti odstraněn, byl rychle vyvinut release Apache httpd 2.4.51.
Nový problém (CVE-2021-42013) je v podstatě zcela obdobný původní zranitelnosti (CVE-2021-41773) ve verzi 2.4.49, rozdíl spočívá pouze v jiné kódování znaků „..“. Ve verzi 2.4.50 byla zablokována možnost použití sekvence „“ pro kódování tečky, ale byla přehlédnuta možnost dvojitého kódování – při použití sekvence „%“. server dekódoval ji na „“, a poté na „.“, to znamená, že znaky „..\/“ pro přechod do předchozího adresáře mohly být kódovány jako „.%\/“.
Pokud jde o zneužití zranitelnosti prostřednictvím vykonání kódu, to je možné při zapnutí mod_cgi a použití základní cesty, kde je povoleno vykonání CGI skriptů (například pokud je zapnuta direktiva ScriptAlias nebo je uvedena možnost ExecCGI v direktivě Options). Povinným požadavkem pro úspěšné provedení útoku je také explicitní poskytnutí přístupu v nastavení Apache k adresářům s vykonatelnými soubory, jako je \/bin, nebo přístupu k root FS „\/“. Protože obvykle takový přístup není povolován, útok na vykonání kódu je v reálných systémech málo proveditelný.
Tímto zůstává aktuální útok na získání obsahu libovolných systémových souborů a zdrojových textů webových skriptů, přístupných pro čtení uživatelem, pod kterým je spuštěn http server. Pro takový útok stačí mít na stránce adresář nastavený pomocí direktiv „Alias“ nebo „ScriptAlias“ (DocumentRoot nestačí), jako je „cgi-bin“.
Příklad exploitu, který umožňuje spustit utilitu „id“ na serveru: curl ‘http:\/\/192.168.0.1\/cgi-bin\/ .%\/ .%\/ .%\/ .%\/ .%\/bin\/sh’ —data ‘echo Content-Type: text\/plain; echo; id’ uid=1(daemon) gid=1(daemon) groups=1(daemon)
Příklad exploitů, které umožňují zobrazit obsah \/etc\/passwd a jednoho z webových skriptů (pro vracení kódu skriptů jako základního musí být určen katalog prostřednictvím direktivy „Alias“, pro který není povoleno vykonávání skriptů): curl ‘http:\/\/192.168.0.1\/cgi-bin\/ .%\/ .%\/ .%\/ .%\/ .%\/etc\/passwd’ curl ‘http:\/\/192.168.0.1\/aliaseddir\/ .%\/ .%\/ .%\/ .%\/ .%\/usr\/local\/apache2\/cgi-bin\/test.cgi’
Problém se týká především neustále aktualizovaných distribucí, jako jsou Fedora, Arch Linux a Gentoo, stejně jako porty FreeBSD. Balíčky ve stabilních větvích konzervativních serverových distribucí Debian, RHEL, Ubuntu a SUSE nejsou zranitelné. Problém se neprojevuje, pokud je přístup k adresářům explicitně zakázán pomocí nastavení „require all denied“.
Zdroj: opennet.ru
