Chyba zabezpečení v Apache Tomcat, která umožňuje nahrazení kódu JSP a získání souborů webových aplikací

Zjistili to vědci z čínské společnosti Chaitin Tech zranitelnost (CVE-2020-1938) V Apache Tomcat, open source implementace technologií Java Servlet, JavaServer Pages, Java Expression Language a Java WebSocket. Chybě bylo přiděleno kódové označení Ghostcat a kritická úroveň závažnosti (9.8 CVSS). Problém umožňuje ve výchozí konfiguraci odesláním požadavku na síťový port 8009 číst obsah libovolných souborů z adresáře webové aplikace, včetně souborů s nastavením a zdrojovými kódy aplikace.

Tato chyba zabezpečení také umožňuje importovat další soubory do kódu aplikace, což umožňuje organizovat spuštění kódu na serveru, pokud aplikace umožňuje nahrání souborů na server (útočník může například nahrát skript JSP pod rouškou obrázek prostřednictvím formuláře pro nahrání obrázku). Útok lze provést odesláním požadavku na síťový port s obslužnou rutinou AJP. Podle předběžných údajů online nalezeno více než 1.2 milionu hostitelů přijímá požadavky prostřednictvím protokolu AJP.

Chyba zabezpečení existuje v protokolu AJP a nevolal chyba implementace. Kromě přijímání připojení přes HTTP (port 8080) umožňuje Apache Tomcat ve výchozím nastavení přístup k webové aplikaci přes protokol AJP (Protokol Apache JServ, port 8009), což je výkonově optimalizovaný binární ekvivalent HTTP, běžně používaný při vytváření clusteru serverů Tomcat nebo k urychlení komunikace s Tomcat na reverzním proxy nebo load balanceru.

AJP poskytuje standardní funkci pro přístup k souborům na serveru, kterou lze použít, včetně získávání souborů, které nepodléhají zveřejnění. AJP má být přístupný pouze důvěryhodným serverům, ale ve skutečnosti výchozí konfigurace Tomcatu byla spouštět obslužnou rutinu na všech síťových rozhraních a přijímat požadavky bez ověřování. Přístup je možný k jakýmkoli souborům webové aplikace, včetně obsahu WEB-INF, META-INF a jakýchkoli dalších adresářů poskytnutých prostřednictvím volání ServletContext.getResourceAsStream(). AJP také umožňuje použít libovolný soubor v přístupných adresářích webové aplikace jako skript JSP.

Problém se projevuje od větve Tomcat 13.x vydané před 6 lety. Kromě přímo problému s Tomcatem ovlivňuje a produkty, které jej používají, jako je Red Hat JBoss Web Server (JWS), JBoss Enterprise Application Platform (EAP), stejně jako samostatné webové aplikace, které používají Jarní bota. Podobná chyba zabezpečení (CVE-2020-1745) je přítomen na webovém serveru Spodní protiproudpoužívané na aplikačním serveru Wildfly. V JBoss a Wildfly je protokol AJP standardně povolen pouze v profilech standalone-full-ha.xml, standalone-ha.xml a ha/full-ha v profilech domain.xml. V aplikaci Spring Boot je podpora AJP ve výchozím nastavení zakázána. Různé skupiny připravily více než tucet pracovních příkladů exploitů (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11).

Chyba zabezpečení opravena ve vydáních Tomcat 9.0.31, 8.5.51 и 7.0.100 (větev údržby 6.x ukončeno). Vzhled aktualizací v distribucích můžete sledovat na těchto stránkách: Debian, ubuntu, RHEL, Fedora, SUSE, FreeBSD. Jako řešení můžete zakázat službu Tomcat AJP Connector (svázat naslouchací soket s localhostem nebo zakomentovat řádek s konektorem port = "8009"), pokud není potřeba, nebo настроить ověřený přístup pomocí atributů "secret" a "address", pokud se služba používá k interakci s jinými servery a proxy na základě mod_jk a mod_proxy_ajp (mod_cluster nepodporuje ověřování).

Zdroj: opennet.ru

Přidat komentář