Kwetsbaarheid in Apache Tomcat waardoor JSP-code kan worden vervangen en webtoepassingsbestanden kunnen worden opgehaald

Dat hebben onderzoekers van het Chinese bedrijf Chaitin Tech vastgesteld kwetsbaarheid (CVE-2020-1938) in Apache Tomcat, een open source-implementatie van Java Servlet, JavaServer Pages, Java Expression Language en Java WebSocket-technologieën. De kwetsbaarheid heeft de codenaam Ghostcat gekregen en een kritiek ernstniveau (9.8 CVSS). Door het probleem kan, in de standaardconfiguratie, door een verzoek naar netwerkpoort 8009 te sturen, de inhoud van alle bestanden uit de webapplicatiedirectory worden gelezen, inclusief bestanden met instellingen en applicatiebroncodes.

De kwetsbaarheid maakt het ook mogelijk om andere bestanden in de applicatiecode te importeren, waardoor de uitvoering van code op de server kan worden georganiseerd als de applicatie het uploaden van bestanden naar de server toestaat (een aanvaller kan bijvoorbeeld een JSP-script uploaden onder het mom van een afbeelding via het afbeeldingsuploadformulier). Een aanval kan worden gedaan door een verzoek naar een netwerkpoort te sturen met een AJP-handler. Volgens voorlopige gegevens online gevonden meer dan 1.2 miljoen hosts accepteren verzoeken via het AJP-protocol.

De kwetsbaarheid bestaat in het AJP-protocol en niet gebeld implementatie fout. Naast het accepteren van verbindingen via HTTP (poort 8080), biedt Apache Tomcat standaard toegang tot een webapplicatie via het AJP-protocol (Apache JServ-protocol, poort 8009), een prestatiegeoptimaliseerd binair equivalent van HTTP, dat vaak wordt gebruikt bij het maken van een cluster van Tomcat-servers of om de communicatie met Tomcat op een reverse proxy of load balancer te versnellen.

AJP biedt een standaardfunctie voor toegang tot bestanden op de server, die kan worden gebruikt, inclusief het verkrijgen van bestanden die niet onderhevig zijn aan openbaarmaking. AJP zou alleen toegankelijk moeten zijn voor vertrouwde servers, maar in feite was de standaardconfiguratie van Tomcat om de handler op alle netwerkinterfaces uit te voeren en verzoeken zonder authenticatie te accepteren. Toegang is mogelijk tot alle webtoepassingsbestanden, inclusief de inhoud van WEB-INF, META-INF en alle andere mappen die worden gegeven via de ServletContext.getResourceAsStream()-aanroep. Met AJP kunt u ook elk bestand in de toegankelijke mappen van de webtoepassing gebruiken als een JSP-script.

Het probleem manifesteert zich sinds de release van de tak van Tomcat 13.x 6 jaar geleden. Behalve direct Tomcat-probleem beïnvloedt en producten die het gebruiken, zoals Red Hat JBoss Web Server (JWS), JBoss Enterprise Application Platform (EAP), evenals op zichzelf staande webapplicaties die gebruikmaken van Lente laars. Vergelijkbare kwetsbaarheid (CVE-2020-1745) Cadeau op de webserver Undertowgebruikt in de Wildfly-toepassingsserver. In JBoss en Wildfly is het AJP-protocol alleen standaard ingeschakeld in standalone-full-ha.xml, standalone-ha.xml en ha/full-ha profielen in domain.xml. In Spring Boot is AJP-ondersteuning standaard uitgeschakeld. Er zijn meer dan een dozijn werkende voorbeelden van exploits opgesteld door verschillende groepen (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11).

Kwetsbaarheid opgelost in Tomcat-releases 9.0.31, 8.5.51 и 7.0.100 (onderhoud tak 6.x beëindigd). U kunt het verschijnen van updates in distributies op deze pagina's volgen: Debian, Ubuntu, RHEL, Fedora, SUSE, FreeBSD. Als tijdelijke oplossing kunt u de Tomcat AJP Connector-service uitschakelen (bind de luisterende socket aan localhost of becommentarieer de regel met Connector-poort = "8009") als deze niet nodig is, of настроить geverifieerde toegang met behulp van de kenmerken "geheim" en "adres", als de service wordt gebruikt om te communiceren met andere servers en proxy's op basis van mod_jk en mod_proxy_ajp (mod_cluster ondersteunt geen authenticatie).

Bron: opennet.ru

Voeg een reactie