Zraniteľnosť v Apache Tomcat, ktorá vám umožňuje nahradiť kód JSP a získať súbory webovej aplikácie

Zistili to vedci z čínskej spoločnosti Chaitin Tech zraniteľnosť (CVE-2020 1938,) V Apache Tomcat, otvorená implementácia technológií Java Servlet, JavaServer Pages, Java Expression Language a Java WebSocket. Zraniteľnosti bolo priradené kódové meno Ghostcat a kritická úroveň závažnosti (9.8 CVSS). Problém umožňuje v predvolenej konfigurácii odoslaním požiadavky na sieťový port 8009 čítať obsah ľubovoľných súborov z adresára webovej aplikácie, vrátane súborov s nastaveniami a zdrojovými kódmi aplikácie.

Zraniteľnosť tiež umožňuje importovať ďalšie súbory do kódu aplikácie, čo umožňuje spustenie kódu na serveri, ak aplikácia umožňuje nahrávanie súborov na server (útočník môže napríklad nahrať skript JSP maskovaný ako obrázok cez formulár na nahranie obrázka). Útok môže byť vykonaný, keď je možné poslať požiadavku na sieťový port s AJP handlerom. Podľa predbežných údajov online nájdené viac ako 1.2 milióna hostiteľov prijímajúcich požiadavky prostredníctvom protokolu AJP.

Zraniteľnosť existuje v protokole AJP a nevolal chyba pri implementácii. Okrem akceptovania pripojení cez HTTP (port 8080), Apache Tomcat štandardne umožňuje prístup k webovej aplikácii cez protokol AJP (Protokol Apache Jserv, port 8009), čo je binárny analóg HTTP optimalizovaný pre vyšší výkon, ktorý sa zvyčajne používa pri vytváraní klastra serverov Tomcat alebo na urýchlenie interakcie s Tomcat na reverznom proxy alebo nástroji na vyrovnávanie zaťaženia.

AJP poskytuje štandardnú funkciu pre prístup k súborom na serveri, ktorú je možné použiť, vrátane získavania súborov, ktoré nie sú predmetom zverejnenia. Predpokladá sa, že AJP bude prístupný iba pre dôveryhodné servery, ale v skutočnosti predvolená konfigurácia Tomcatu spustila obslužný program na všetkých sieťových rozhraniach a akceptovala požiadavky bez overenia. Prístup je možný k akýmkoľvek súborom webovej aplikácie vrátane obsahu WEB-INF, META-INF a akýchkoľvek iných adresárov poskytovaných prostredníctvom volania ServletContext.getResourceAsStream(). AJP tiež umožňuje použiť ľubovoľný súbor v adresároch prístupných webovej aplikácii ako JSP skript.

Problém sa objavuje od vydania pobočky Tomcat 13.x pred 6 rokmi. Okrem samotného problému Tomcat ovplyvňuje a produkty, ktoré ho používajú, ako napríklad Red Hat JBoss Web Server (JWS), JBoss Enterprise Application Platform (EAP), ako aj samostatné webové aplikácie, ktoré Jarná topánka. Podobná chyba zabezpečenia (CVE-2020-1745) je prítomný na webovom serveri Spodný protiprúd, ktorý sa používa na aplikačnom serveri Wildfly. V JBoss a Wildfly je AJP predvolene povolené iba v profiloch standalone-full-ha.xml, standalone-ha.xml a ha/full-ha v doméne.xml. V Spring Boot je podpora AJP predvolene vypnutá. V súčasnosti rôzne skupiny pripravili viac ako tucet pracovných príkladov exploitov (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11).

Chyba zabezpečenia opravená vo vydaniach Tomcat 9.0.31, 8.5.51 и 7.0.100 (údržba vetvy 6.x prerušené). Dostupnosť aktualizácií v distribučných súpravách môžete sledovať na týchto stránkach: debian, ubuntu, RHEL, Fedora, SUSE, FreeBSD. Ako riešenie môžete zakázať službu Tomcat AJP Connector (naviazať počúvajúci zásuvku na localhost alebo komentovať linku s konektorom port = "8009"), ak nie je potrebná, alebo nastaviť overený prístup pomocou atribútov „secret“ a „address“, ak sa služba používa na interakciu s inými servermi a proxy na základe mod_jk a mod_proxy_ajp (mod_cluster nepodporuje autentifikáciu).

Zdroj: opennet.ru

Pridať komentár