Apache Tomcat ievainojamība, kas ļauj aizstāt JSP kodu un iegūt tīmekļa lietojumprogrammu failus

Ķīnas uzņēmuma Chaitin Tech pētnieki atklājuši ievainojamība (CVE-2020-1938) iekšā Apache Tomcat, atklāta Java Servlet, JavaServer Pages, Java Expression Language un Java WebSocket tehnoloģiju ieviešana. Ievainojamībai ir piešķirts koda nosaukums Ghostcat un kritiskais smaguma līmenis (9.8 CVSS). Problēma ļauj noklusējuma konfigurācijā, nosūtot pieprasījumu uz tīkla portu 8009, nolasīt jebkuru failu saturu no tīmekļa lietojumprogrammu direktorija, tostarp failus ar iestatījumiem un lietojumprogrammu pirmkodiem.

Ievainojamība arī ļauj importēt citus failus lietojumprogrammas kodā, kas ļauj izpildīt kodu serverī, ja lietojumprogramma ļauj augšupielādēt failus serverī (piemēram, uzbrucējs var augšupielādēt JSP skriptu, kas ir maskēts kā attēls, izmantojot attēla augšupielādes veidlapu). Uzbrukumu var veikt, ja ir iespējams nosūtīt pieprasījumu uz tīkla portu ar AJP apstrādātāju. Pēc provizoriskiem datiem, tiešsaistē atrasts vairāk nekā 1.2 miljoni saimniekdatoru, kas pieņem pieprasījumus, izmantojot AJP protokolu.

Ievainojamība pastāv AJP protokolā un nav zvanīts kļūda ieviešanā. Papildus savienojumu pieņemšanai, izmantojot HTTP (ports 8080), Apache Tomcat pēc noklusējuma ļauj piekļūt tīmekļa lietojumprogrammai, izmantojot AJP protokolu (Apache Jserv protokols, ports 8009), kas ir HTTP binārais analogs, kas optimizēts augstākai veiktspējai un ko parasti izmanto, veidojot Tomcat serveru kopu vai lai paātrinātu mijiedarbību ar Tomcat apgrieztā starpniekserverī vai slodzes balansētājā.

AJP nodrošina standarta funkciju, lai piekļūtu failiem serverī, ko var izmantot, tostarp iegūt failus, kas nav pakļauti izpaušanai. Ir paredzēts, ka AJP ir pieejams tikai uzticamiem serveriem, taču patiesībā Tomcat noklusējuma konfigurācija palaida apstrādātāju visās tīkla saskarnēs un pieņēma pieprasījumus bez autentifikācijas. Ir iespējama piekļuve visiem tīmekļa lietojumprogrammu failiem, tostarp WEB-INF, META-INF un jebkuru citu direktoriju saturam, kas tiek nodrošināts, izsaucot ServletContext.getResourceAsStream(). AJP arī ļauj izmantot jebkuru failu direktorijos, kas pieejama tīmekļa lietojumprogrammai, kā JSP skriptu.

Problēma parādās kopš Tomcat 13.x filiāles izlaišanas pirms 6 gadiem. Papildus pašai Tomcat problēmai ietekmē un produkti, kas to izmanto, piemēram, Red Hat JBoss Web Server (JWS), JBoss Enterprise Application Platform (EAP), kā arī autonomas tīmekļa lietojumprogrammas, kas izmanto Pavasara zābaks. Līdzīga ievainojamība (CVE-2020-1745) klāt tīmekļa serverī Undertow, ko izmanto Wildfly lietojumprogrammu serverī. Programmā JBoss un Wildfly AJP pēc noklusējuma ir iespējots tikai standalone-full-ha.xml, standalone-ha.xml un ha/full-ha profilos domēnā.xml. Programmā Spring Boot AJP atbalsts pēc noklusējuma ir atspējots. Pašlaik dažādas grupas ir sagatavojušas vairāk nekā duci ekspluatācijas piemēru (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11).

Tomcat laidienos ir novērsta ievainojamība 9.0.31, 8.5.51 и 7.0.100 (6.x filiāles apkope pārtraukta). Varat izsekot izplatīšanas komplektu atjauninājumu pieejamībai šajās lapās: Debian, Ubuntu, RHEL, Fedora, SUSE, FreeBSD. Kā risinājumu varat atspējot pakalpojumu Tomcat AJP Connector (saistīt klausīšanās ligzdu ar localhost vai komentēt rindiņu ar Connector port = "8009"), ja tas nav nepieciešams, vai izveidota autentificēta piekļuve, izmantojot atribūtus “secret” un “address”, ja pakalpojums tiek izmantots, lai mijiedarbotos ar citiem serveriem un starpniekserveriem, pamatojoties uz mod_jk un mod_proxy_ajp (mod_cluster neatbalsta autentifikāciju).

Avots: opennet.ru

Pievieno komentāru