Apache Tomcat'i haavatavus, mis võimaldab JSP-koodi sisestada ja veebirakenduste faile saada

Hiina ettevõtte Chaitin Tech uurijad avastasid haavatavus (CVE-2020-1938) Apache Tomcat, Java Servlet, JavaServer Pages, Java Expression Language ja Java WebSocket tehnoloogiate avatud rakenduse. Haavatavusele on antud koodnimi Ghostcat ja see on kriitilise tasemega oht (9.8 CVSS). Probleem võimaldab vaike konfiguratsioonis saata päringu kaudu võrgupordile 8009 lugeda mis tahes faili sisu veebi rakenduse kataloogist, sealhulgas konfiguratsioonifailide ja rakenduse lähtekoodide faile.

Haavatavus annab ka võimaluse importida teiste faile rakenduse koodi, mis võimaldab korraldada koodi täitmist servers, kui rakendus lubab faile serverisse laadida (näiteks võib ründaja laadida JSP-skripti pildi näol läbi pildifaili laadimisvormi). Rünnak saab toimuma, kui on võimalik saata päring võrgupordile, kus töötab AJP töötleja. Esialgsete andmete kohaselt on võrgus leiti üle 1,2 miljoni hosti, mis aktsepteerivad päringute protokolli AJP.

Haavatavus esineb AJP protokollis ning ei ole põhjustatud protsesside rakendamise vea tõttu. Lisaks HTTP ühenduste vastuvõtmisele (port 8080) lubab Apache Tomcat vaikimisi kuulata web-rakendusele AJP protokolli kaudu (Apache Jserv Protocol, port 8009), mis on HTTP binaarne analoog, optimeeritud kõrgema jõudluse saavutamiseks ja mida kasutatakse tavaliselt Tomcat-serverite klastrite loomisel või Tomcati kiiremaks suhtlemiseks tagasipöördumise vaheproksi või koormuse tasakaalustajaga.

AJP pakub vaikimisi funktsiooni juurdepääsuks serveri failidele, mida saab kasutada sealhulgas failide saamiseks, mis ei ole avalikustatud. Eeldatakse, et AJP ligipääs on avatud ainult usaldusväärsetele serveritele, kuid tegelikult oli Tomcat vaikimisi konfigureeritud töötama kõigil võrguliideseid, ning päringud võeti vastu ilma autentimiseta. Juhtmed on võimalikud mis tahes web-rakenduse failidele, sealhulgas sisu jaoks WEB-INF, META-INF ja mistahes muude kaustade jaoks, mida saadetakse läbi ServletContext.getResourceAsStream() kutsumise. AJP võimaldab samuti kasutada mis tahes faili web-rakenduse juurdepääsetavates kaustades JSP skriptina.

Probleem ilmneb alates Tomcat 6.x versiooni väljastamisest, mis toimus 13 aastat tagasi. Probleem puudutab samuti Tomcatit ja sellel põhinevaid tooteid, puudutab nagu Red Hat JBoss Web Server (JWS), JBoss Enterprise Application Platform (EAP) ning ka iseseisvad veebirakendused, mis kasutavad Spring Boot. Sarnane haavatavus (CVE-2020-1745) on olemas veebiserveris Undertow, mida rakendatakse Wildfly rakenduste serveris. JBossi ja Wildfly AJP protokoll on vaikimisi lubatud ainult standalone-full-ha.xml, standalone-ha.xml ja ha/full-ha profiilides domain.xml failis. Spring Bootis on AJP toetus vaikimisi välja lülitatud. Praegu on erinevad rühmad valmistanud rohkem kui tosin töökorda viidud eksploiti (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11).

Haavatavus on kõrvaldatud Tomcat'i 9.0.31, 8.5.51 ja 7.0.100 (6.x versiooni hooldus katkestatud). Uuenduste väljalaskmise jälgimiseks distributsioonides saab külastada järgmisi lehti: Debian, Ubuntu, RHEL, Fedora, SUSE, FreeBSD. Kaitsemeetmena saab Tomcat AJP Connector teenuse välja lülitada (seonduda kuulamissoketiga localhost või kommenteerida välja rida Connector port = «8009»), kui see pole vajalik, või konfigureerida autentneeritud juurdepääs atribuutide «secret» ja «address» kaudu, kui teenust kasutatakse teiste serverite ja proxide vahelise suhtlemise jaoks mod_jk ja mod_proxy_ajp põhjal (mod_cluster autentimist ei toeta).

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster