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

Istraživači kineske tvrtke Chaitin Tech otkrili su ranjivost (CVE-2020-1938) u Apache Tomcat, otvorena implementacija tehnologija Java Servlet, JavaServer Pages, Java Expression Language i Java WebSocket. Ranjivosti je dodijeljen kodni naziv Ghostcat i kritična razina ozbiljnosti (9.8 CVSS). Problem omogućuje, u zadanoj konfiguraciji, slanjem zahtjeva na mrežni priključak 8009, čitanje sadržaja bilo koje datoteke iz direktorija web aplikacije, uključujući datoteke s postavkama i izvornim kodom aplikacije.

Ranjivost također omogućuje uvoz drugih datoteka u kod aplikacije, što omogućuje izvršavanje koda na poslužitelju ako aplikacija dopušta učitavanje datoteka na poslužitelj (na primjer, napadač može učitati JSP skriptu prerušenu u sliku putem obrazac za učitavanje slike). Napad se može izvesti kada je moguće poslati zahtjev na mrežni priključak s AJP rukovateljem. Prema preliminarnim podacima, online pronađeno više od 1.2 milijuna hostova koji prihvaćaju zahtjeve putem AJP protokola.

Ranjivost postoji u AJP protokolu i nije pozvan greška u implementaciji. Osim prihvaćanja veza putem HTTP-a (port 8080), Apache Tomcat prema zadanim postavkama dopušta pristup web aplikaciji putem AJP protokola (Apache Jserv protokol, port 8009), koji je binarni analog HTTP-a optimiziran za veću izvedbu, obično se koristi prilikom stvaranja klastera Tomcat poslužitelja ili za ubrzavanje interakcije s Tomcatom na obrnutom proxyju ili balanseru opterećenja.

AJP pruža standardnu ​​funkciju za pristup datotekama na poslužitelju, koja se može koristiti, uključujući dobivanje datoteka koje ne podliježu otkrivanju. AJP bi trebao biti dostupan samo pouzdanim poslužiteljima, ali zapravo je Tomcatova zadana konfiguracija pokretala rukovatelja na svim mrežnim sučeljima i prihvaćala zahtjeve bez provjere autentičnosti. Pristup je moguć svim datotekama web aplikacije, uključujući sadržaj WEB-INF, META-INF i bilo koje druge direktorije koji se pružaju putem poziva ServletContext.getResourceAsStream(). AJP vam također omogućuje korištenje bilo koje datoteke u direktorijima dostupnim web aplikaciji kao JSP skripte.

Problem se javlja otkako je ogranak Tomcat 13.x objavljen prije 6 godina. Osim samog Tomcat problema utječ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) predstaviti u web poslužitelju struja ispod morske površine, koji se koristi u poslužitelju aplikacija Wildfly. U JBoss i Wildfly, AJP je prema zadanim postavkama omogućen samo u profilima standalone-full-ha.xml, standalone-ha.xml i ha/full-ha u domain.xml. U Spring Boot-u, AJP podrška je onemogućena prema zadanim postavkama. Trenutno su različite skupine pripremile više od desetak radnih primjera eksploatacija (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11).

Ranjivost ispravljena u Tomcat izdanjima 9.0.31, 8.5.51 и 7.0.100 (održavanje grane 6.x prekinuta). Možete pratiti dostupnost ažuriranja u kompletima za distribuciju na ovim stranicama: Debian, Ubuntu, RHEL, Fedora, SUSE, FreeBSD. Kao zaobilazno rješenje, možete onemogućiti uslugu Tomcat AJP Connector (povežite slušajuću utičnicu za localhost ili komentirajte red s Connector port = "8009") ako nije potrebna, ili настроить autentificirani pristup korištenjem atributa "secret" i "address", ako se usluga koristi za interakciju s drugim poslužiteljima i proxyjima na temelju mod_jk i mod_proxy_ajp (mod_cluster ne podržava autentifikaciju).

Izvor: opennet.ru

Dodajte komentar