Apache Tomcat pažeidžiamumas, leidžiantis pakeisti JSP kodą ir gauti žiniatinklio programų failus

Kinijos bendrovės „Chaitin Tech“ mokslininkai atrado pažeidžiamumas (CVE-2020-1938) in Apache Tomcat, atviras „Java Servlet“, „JavaServer Pages“, „Java Expression Language“ ir „Java WebSocket“ technologijų diegimas. Pažeidžiamumui buvo priskirtas kodinis pavadinimas Ghostcat ir kritinis sunkumo lygis (9.8 CVSS). Numatytoje konfigūracijoje problema leidžia, siunčiant užklausą tinklo prievadu 8009, nuskaityti bet kokių failų turinį iš žiniatinklio programų katalogo, įskaitant failus su nustatymais ir programos šaltinio kodais.

Pažeidžiamumas taip pat leidžia importuoti kitus failus į programos kodą, o tai leidžia vykdyti kodą serveryje, jei programa leidžia įkelti failus į serverį (pavyzdžiui, užpuolikas gali įkelti JSP scenarijų, užmaskuotą kaip vaizdas per vaizdo įkėlimo formą). Ataka gali būti įvykdyta, kai yra galimybė nusiųsti užklausą į tinklo prievadą su AJP tvarkykle. Pirminiais duomenimis, internetu rasta daugiau nei 1.2 milijono kompiuterių, priimančių užklausas per AJP protokolą.

Pažeidžiamumas yra AJP protokole ir nepaskambino klaida įgyvendinant. „Apache Tomcat“ ne tik priima ryšius per HTTP (8080 prievadas), bet ir leidžia pasiekti žiniatinklio programą per AJP protokolą (Apache Jserv protokolas, prievadas 8009), kuris yra dvejetainis HTTP analogas, optimizuotas didesniam našumui, paprastai naudojamas kuriant Tomcat serverių grupę arba norint pagreitinti sąveiką su Tomcat naudojant atvirkštinį tarpinį serverį arba apkrovos balansavimo priemonę.

AJP suteikia standartinę prieigą prie failų serveryje, kurią galima naudoti, įskaitant failų, kurių negalima atskleisti, gavimą. AJP turėtų būti prieinama tik patikimiems serveriams, tačiau iš tikrųjų Tomcat numatytoji konfigūracija paleido tvarkyklę visose tinklo sąsajose ir priėmė užklausas be autentifikavimo. Prieiga prie bet kokių žiniatinklio programų failų, įskaitant WEB-INF, META-INF turinį ir bet kokius kitus katalogus, pateiktus iškvietus ServletContext.getResourceAsStream(). AJP taip pat leidžia naudoti bet kurį failą kataloguose, pasiekiamuose žiniatinklio programai, kaip JSP scenarijų.

Problema atsirado nuo tada, kai Tomcat 13.x filialas buvo išleistas prieš 6 metų. Be pačios Tomcat problemos paveikia ir jį naudojantys produktai, pvz., Red Hat JBoss Web Server (JWS), JBoss Enterprise Application Platform (EAP), taip pat savarankiškos žiniatinklio programos, kurios naudoja Pavasario batas. Panašus pažeidžiamumas (CVE-2020-1745) pateikti žiniatinklio serveryje Undertow, naudojamas „Wildfly“ programų serveryje. JBoss ir Wildfly AJP pagal numatytuosius nustatymus įjungtas tik standalone-full-ha.xml, standalone-ha.xml ir ha/full-ha profiliuose domene.xml. „Spring Boot“ pagal numatytuosius nustatymus AJP palaikymas yra išjungtas. Šiuo metu įvairios grupės yra parengusios daugiau nei tuziną veikiančių išnaudojimų pavyzdžių (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11).

Tomcat leidimuose ištaisytas pažeidžiamumas 9.0.31, 8.5.51 и 7.0.100 (6.x filialo priežiūra nutrauktas). Galite stebėti platinimo rinkinių naujinimų prieinamumą šiuose puslapiuose: debian, ubuntu, RHEL, Minkšta fetrinė skrybėlė, SUSA, FreeBSD. Kaip išeitis, galite išjungti Tomcat AJP Connector paslaugą (prijungti klausymosi lizdą prie localhost arba pakomentuoti eilutę su Connector port = "8009"), jei jos nereikia, arba įsteigti autentifikuota prieiga naudojant atributus „secret“ ir „address“, jei paslauga naudojama sąveikai su kitais serveriais ir tarpiniais serveriais, pagrįsta mod_jk ir mod_proxy_ajp (mod_cluster nepalaiko autentifikavimo).

Šaltinis: opennet.ru

Добавить комментарий