Dobësi në Apache Tomcat që lejon zëvendësimin e kodit JSP dhe marrjen e skedarëve të aplikacionit në ueb

Studiuesit nga kompania kineze Chaitin Tech kanë identifikuar cenueshmëria (CVE-2020-1938) në Apache Tomcat, një implementim me burim të hapur të teknologjive Java Servlet, JavaServer Pages, Java Expression Language dhe Java WebSocket. Cënueshmërisë i është dhënë emri i koduar Ghostcat dhe niveli kritik i ashpërsisë (9.8 CVSS). Problemi lejon, në konfigurimin e paracaktuar, duke dërguar një kërkesë në portin e rrjetit 8009, të lexojë përmbajtjen e çdo skedari nga drejtoria e aplikacionit në ueb, duke përfshirë skedarët me cilësimet dhe kodet burimore të aplikacionit.

Dobësia gjithashtu bën të mundur importimin e skedarëve të tjerë në kodin e aplikacionit, i cili lejon organizimin e ekzekutimit të kodit në server nëse aplikacioni lejon që skedarët të ngarkohen në server (për shembull, një sulmues mund të ngarkojë një skript JSP nën maskën e një imazh përmes formularit të ngarkimit të imazhit). Një sulm mund të bëhet duke dërguar një kërkesë në një port të rrjetit me një mbajtës AJP. Sipas të dhënave paraprake, online gjetur më shumë se 1.2 milion host që pranojnë kërkesa nëpërmjet protokollit AJP.

Dobësia ekziston në protokollin AJP, dhe nuk thirret gabim zbatimi. Përveç pranimit të lidhjeve nëpërmjet HTTP (porti 8080), Apache Tomcat si parazgjedhje lejon aksesin në një aplikacion në ueb nëpërmjet protokollit AJP (Protokolli Apache JServ, port 8009), i cili është një ekuivalent binar i HTTP i optimizuar për performancën, që përdoret zakonisht kur krijohet një grup serverësh Tomcat ose për të shpejtuar komunikimin me Tomcat në një përfaqësues të kundërt ose balancues ngarkese.

AJP ofron një funksion standard për aksesimin e skedarëve në server, i cili mund të përdoret, duke përfshirë marrjen e skedarëve që nuk janë subjekt i zbulimit. AJP supozohet të jetë i aksesueshëm vetëm për serverët e besuar, por në fakt konfigurimi i paracaktuar i Tomcat ishte të ekzekutonte mbajtësin në të gjitha ndërfaqet e rrjetit dhe të pranonte kërkesa pa vërtetim. Qasja është e mundur në çdo skedar aplikacioni në internet, duke përfshirë përmbajtjen e WEB-INF, META-INF dhe çdo drejtori tjetër të dhënë përmes thirrjes ServletContext.getResourceAsStream(). AJP gjithashtu ju lejon të përdorni çdo skedar në drejtoritë e aksesueshme të aplikacionit në ueb si një skript JSP.

Problemi është shfaqur që nga dega e Tomcat 13.x e lëshuar 6 vjet më parë. Përveç problemit direkt të Tomcat ndikon dhe produktet që e përdorin atë, si Red Hat JBoss Web Server (JWS), JBoss Enterprise Application Platform (EAP), si dhe aplikacione të pavarura në internet që përdorin Çizme pranverore. Dobësi e ngjashme (CVE-2020-1745) prezente në serverin e internetit rrymë e nënujshmepërdoret në serverin e aplikacionit Wildfly. Në JBoss dhe Wildfly, protokolli AJP aktivizohet si parazgjedhje vetëm në profilet standalone-full-ha.xml, standalone-ha.xml dhe ha/full-ha në domain.xml. Në Spring Boot, mbështetja e AJP është çaktivizuar si parazgjedhje. Më shumë se një duzinë shembujsh pune të shfrytëzimeve janë përgatitur nga grupe të ndryshme (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11).

Dobësia e rregulluar në lëshimet e Tomcat 9.0.31, 8.5.51 и 7.0.100 (dega e mirëmbajtjes 6.x ndërprerë). Ju mund të ndiqni pamjen e përditësimeve në shpërndarjet në këto faqe: Debian, Ubuntu, RHEL, Fedora, SUSE, FreeBSD. Si zgjidhje, mund të çaktivizoni shërbimin Tomcat AJP Connector (lidhni prizën e dëgjimit me localhost ose komentoni linjën me portin Connector = "8009") nëse nuk nevojitet, ose ngritur qasja e vërtetuar duke përdorur atributet "sekret" dhe "adresa", nëse shërbimi përdoret për të ndërvepruar me serverë dhe proxy të tjerë bazuar në mod_jk dhe mod_proxy_ajp (mod_cluster nuk mbështet vërtetimin).

Burimi: opennet.ru

Shto një koment