Apache Tomcatin haavoittuvuus, jonka avulla voit korvata JSP-koodin ja hankkia verkkosovellustiedostoja

Kiinalaisen Chaitin Techin tutkijat ovat havainneet haavoittuvuus (CVE-2020-1938) sisään Apache Tomcat, Java Servlet-, JavaServer Pages-, Java Expression Language- ja Java WebSocket -tekniikoiden avoin toteutus. Haavoittuvuudelle on annettu koodinimi Ghostcat ja kriittinen vakavuustaso (9.8 CVSS). Ongelma mahdollistaa oletuskokoonpanossa lähettämällä pyynnön verkkoporttiin 8009, että verkkosovellushakemiston tiedostot voidaan lukea, mukaan lukien tiedostot, joissa on asetukset ja sovelluksen lähdekoodit.

Haavoittuvuus mahdollistaa myös muiden tiedostojen tuomisen sovelluskoodiin, mikä mahdollistaa koodin suorittamisen palvelimella, jos sovellus sallii tiedostojen lataamisen palvelimelle (esim. hyökkääjä voi ladata kuvaksi naamioituneen JSP-komentosarjan kuvan latauslomake). Hyökkäys voidaan suorittaa, kun on mahdollista lähettää pyyntö verkkoporttiin AJP-käsittelijän avulla. Alustavien tietojen mukaan netissä löydetty yli 1.2 miljoonaa isäntäkonetta hyväksyy pyyntöjä AJP-protokollan kautta.

Haavoittuvuus on AJP-protokollassa ja ei kutsuttu virhe toteutuksessa. Sen lisäksi, että Apache Tomcat hyväksyy yhteydet HTTP:n kautta (portti 8080), se sallii oletuksena pääsyn verkkosovellukseen AJP-protokollan kautta (Apache Jserv -protokolla, portti 8009), joka on parempaa suorituskykyä varten optimoitu HTTP:n binäärianalogi, jota käytetään yleensä luotaessa Tomcat-palvelinklusteria tai nopeuttamaan vuorovaikutusta Tomcatin kanssa käänteisessä välityspalvelimessa tai kuormituksen tasapainottimessa.

AJP tarjoaa vakiotoiminnon palvelimella olevien tiedostojen käyttämiseen, jota voidaan käyttää, mukaan lukien sellaisten tiedostojen hankkiminen, jotka eivät ole julkistamisen alaisia. AJP:n oletetaan olevan vain luotettujen palvelimien käytettävissä, mutta itse asiassa Tomcatin oletuskokoonpano suoritti käsittelijän kaikissa verkkoliitännöissä ja hyväksyi pyynnöt ilman todennusta. Pääsy on mahdollista kaikkiin verkkosovellustiedostoihin, mukaan lukien WEB-INF-, META-INF- ja kaikki muut hakemistot, jotka on tarjottu kutsumalla ServletContext.getResourceAsStream(). AJP antaa sinun käyttää myös mitä tahansa tiedostoa hakemistoista, joihin verkkosovellus pääsee käsiksi, JSP-komentosarjana.

Ongelma on ilmennyt 13 vuotta sitten julkaistusta Tomcat 6.x:n haarasta lähtien. Itse Tomcat-ongelman lisäksi vaikuttaa ja sitä käyttävät tuotteet, kuten Red Hat JBoss Web Server (JWS), JBoss Enterprise Application Platform (EAP) sekä itsenäiset verkkosovellukset, jotka käyttävät Jousikenkä. Samanlainen haavoittuvuus (CVE-2020-1745) esittää web-palvelimessa Imu, jota käytetään Wildfly-sovelluspalvelimessa. JBossissa ja Wildflyssä AJP on oletuksena käytössä vain standalone-full-ha.xml-, standalone-ha.xml- ja ha/full-ha -profiileissa domain.xml:ssä. Spring Bootissa AJP-tuki on oletusarvoisesti poissa käytöstä. Tällä hetkellä eri ryhmät ovat valmistaneet yli tusina toimivaa esimerkkiä hyväksikäytöstä (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11).

Tomcat-julkaisuissa korjattu haavoittuvuus 9.0.31, 8.5.51 и 7.0.100 (6.x haaran huolto lopetettu). Voit seurata jakelupakettien päivitysten saatavuutta näillä sivuilla: Debian, Ubuntu, RHEL, Fedora, SUSE, FreeBSD. Kiertokeinona voit poistaa käytöstä Tomcat AJP Connector -palvelun (sidota kuunteluliitäntä localhostiin tai kommentoida riviä Connector portilla = "8009"), jos sitä ei tarvita, tai perustaa todennettu pääsy käyttämällä "secret"- ja "address"-attribuutteja, jos palvelua käytetään vuorovaikutukseen muiden palvelimien ja välityspalvelinten kanssa mod_jk- ja mod_proxy_ajp-pohjaisten (mod_cluster ei tue todennusta).

Lähde: opennet.ru

Lisää kommentti