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

Výzkumníci z čínské společnosti Chaitin Tech odhalili zranitelnost (CVE-2020-1938) v Apache Tomcat, otevřenou implementaci technologií Java Servlet, JavaServer Pages, Java Expression Language a Java WebSocket. Zranitelnost byla označena kódovým názvem Ghostcat a je klasifikována jako kritická (9.8 CVSS). Problém umožňuje ve výchozí konfiguraci přečíst obsah jakýchkoli souborů z adresáře webové aplikace prostřednictvím odeslání požadavku na síťový port 8009, včetně souborů s nastaveními a zdrojových kódů aplikace.

Zranitelnost také umožňuje import dalších souborů do kódu aplikace, což umožňuje provádění kódu na serveru, pokud aplikace povoluje nahrávání souborů na server (například útočník může nahrát JSP skript pod záminkou obrázku prostřednictvím formuláře pro nahrávání obrázků). Útok může být proveden, pokud je možné odeslat požadavek na síťový port s AJP zpracovatelem. Podle předběžných údajů bylo v síti nalezeno více než 1,2 milionu hostitelů, které přijímají požadavky prostřednictvím protokolu AJP.

Zranitelnost je přítomná v protokolu AJP, a nebyla způsobena chybou v implementaci. Kromě přijímání připojení prostřednictvím HTTP (port 8080) umožňuje Apache Tomcat ve výchozí konfiguraci přístup k webové aplikaci přes protokol AJP (Apache Jserv Protocol, port 8009), který představuje optimalizovaný binární ekvivalent HTTP pro dosažení vyšší výkonnosti, obvykle používaný při vytváření clusteru Tomcat serverů nebo pro zrychlení komunikace s Tomcat na reverzním proxy serveru nebo vyrovnávači zatížení.

AJP poskytuje vestavěnou funkci pro přístup k souborům na serveru, kterou lze použít i k získání souborů, které nemají být zveřejněny. Předpokládá se, že přístup k AJP je otevřen pouze pro důvěryhodné servery, ale ve skutečnosti byl ve výchozí konfiguraci Tomcat nastaven zpracovatel pro všechny síťové rozhraní a požadavky byly přijímány bez autentizace. 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ářů, které jsou vraceny prostřednictvím volání ServletContext.getResourceAsStream(). AJP také umožňuje používat jakýkoli soubor v adresářích dostupných pro webovou aplikaci jako JSP skript.

Problém se projevuje od vydání verze Tomcat 6.x před 13 lety. Kromě samotného Tomcatu se problém ovlivňuje a produkty, které jej používají, jako je Red Hat JBoss Web Server (JWS), JBoss Enterprise Application Platform (EAP) a také samostatné webové aplikace, které využívají Spring Boot. Podobná zranitelnost (CVE-2020-1745) je přítomno ve webovém serveru Undertow, který se používá v aplikačním serveru Wildfly. V JBoss a Wildfly je protokol AJP ve výchozím nastavení povolen pouze v profilech standalone-full-ha.xml, standalone-ha.xml a ha/full-ha v domain.xml. V Spring Boot je podpora AJP ve výchozím nastavení zakázána. V současnosti bylo různými skupinami připraveno více než tucet pracovních příkladů exploitů (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11).

Zranitelnost byla odstraněna v verzích Tomcat 9.0.31, 8.5.51 a 7.0.100 (podpora větve 6.x zastaveno). Sledovat vydání aktualizací v distribucích lze na těchto stránkách: Debian, Ubuntu, RHEL, Fedora, SUSE, FreeBSD. Jako ochranné opatření lze deaktivovat službu Tomcat AJP Connector (přiřadit poslouchající socket k localhostu nebo zakomentovat řádek s Connector port = "8009"), pokud není potřebná, nebo nastavit autentizaci přístupu pomocí atributů "secret" a "address", pokud je služba používána pro interakci s jinými servery a proxy na základě mod_jk a mod_proxy_ajp (mod_cluster autentizaci nepodporuje).

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster