Ranjivost u Apache Tomcatu koja omogućava zamjenu JSP koda i dobivanje datoteka web aplikacije

Istraživači iz kineske kompanije Chaitin Tech su identifikovali ranjivost (CVE-2020-1938) u Apache Tomcat, implementacija Java Servleta, JavaServer Pages, Java Expression Language i Java WebSocket tehnologija. Ranjivost je dobila kodno ime Ghostcat i kritični nivo ozbiljnosti (9.8 CVSS). Problem dozvoljava, u podrazumevanoj konfiguraciji, slanjem zahteva na mrežni port 8009, da pročita sadržaj bilo koje datoteke iz direktorijuma veb aplikacije, uključujući datoteke sa postavkama i izvornim kodovima aplikacije.

Ranjivost također omogućava uvoz drugih datoteka u kod aplikacije, što omogućava organiziranje izvršavanja koda na serveru ako aplikacija dozvoljava otpremanje datoteka na server (na primjer, napadač može učitati JSP skriptu pod maskom sliku putem obrasca za upload slike). Napad se može izvršiti slanjem zahtjeva na mrežni port sa AJP rukovaocem. Prema preliminarnim podacima, online pronađeno više od 1.2 miliona domaćina koji prihvataju zahtjeve putem AJP protokola.

Ranjivost postoji u AJP protokolu, i nije pozvan greška u implementaciji. Osim prihvatanja konekcija putem HTTP-a (port 8080), Apache Tomcat po defaultu dozvoljava pristup web aplikaciji putem AJP protokola (Apache JServ protokol, port 8009), koji je binarni ekvivalent HTTP-a optimiziran za performanse, koji se obično koristi prilikom kreiranja klastera Tomcat servera ili za ubrzavanje komunikacije s Tomcat-om na obrnutom proksiju ili balansiranju opterećenja.

AJP pruža standardnu ​​funkciju za pristup datotekama na serveru, koja se može koristiti, uključujući dobijanje datoteka koje ne podliježu otkrivanju. AJP bi trebao biti dostupan samo pouzdanim serverima, ali u stvari Tomcat-ova zadana konfiguracija je bila pokretanje rukovatelja na svim mrežnim sučeljima i prihvatanje zahtjeva bez autentifikacije. Pristup je moguć svim datotekama web aplikacije, uključujući sadržaj WEB-INF, META-INF i bilo koje druge direktorije date putem ServletContext.getResourceAsStream() poziva. AJP vam takođe omogućava da koristite bilo koju datoteku u dostupnim direktorijumima web aplikacije kao JSP skriptu.

Problem se manifestuje otkako je grana Tomcat 13.x objavljena prije 6 godina. Osim direktno Tomcat problema utiče i proizvodi koji ga koriste, kao što su Red Hat JBoss Web Server (JWS), JBoss Enterprise Application Platform (EAP), kao i samostalne web aplikacije koje koriste Proljetna čizma. Slična ranjivost (CVE-2020-1745) prisutan na web serveru Undertowkoristi se u aplikacijskom serveru Wildfly. U JBoss i Wildfly, AJP protokol je podrazumevano omogućen samo u profilima standalone-full-ha.xml, standalone-ha.xml i ha/full-ha u domenu.xml. U Spring Boot-u, podrška za AJP je onemogućena po defaultu. Više od desetak radnih primjera eksploata pripremile su različite grupe (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11).

Ispravljena ranjivost u izdanjima Tomcata 9.0.31, 8.5.51 и 7.0.100 (grana održavanja 6.x prekinut). Pojavu ažuriranja u distribucijama možete pratiti na ovim stranicama: Debian, Ubuntu, RHEL, fedora, SUSE, FreeBSD. Kao zaobilazno rješenje, možete onemogućiti Tomcat AJP Connector uslugu (vezati utičnicu za slušanje na localhost ili prokomentirati liniju s priključkom port = "8009") ako nije potrebna, ili postavite autentificiran pristup pomoću atributa "secret" i "address", ako se usluga koristi za interakciju s drugim serverima i proksijima na osnovu mod_jk i mod_proxy_ajp (mod_cluster ne podržava autentifikaciju).

izvor: opennet.ru

Dodajte komentar