Apache Tomcat-ում խոցելիություն, որը թույլ է տալիս փոխարինել JSP կոդը և ստանալ վեբ հավելվածի ֆայլեր

Չինական Chaitin Tech ընկերության հետազոտողները հայտնաբերել են խոցելիություն (CVE-2020-1938- ը) մեջ Apache Tomcat- ըJava Servlet, JavaServer Pages, Java Expression Language և Java WebSocket տեխնոլոգիաների բաց իրականացում։ Խոցելիությանը վերագրվել է Ghostcat ծածկագիրը և ծանրության կրիտիկական մակարդակ (9.8 CVSS): Խնդիրը թույլ է տալիս, լռելյայն կազմաձևում, հարցում ուղարկելով ցանցային պորտին 8009, կարդալ ցանկացած ֆայլի բովանդակությունը վեբ հավելվածի գրացուցակից, ներառյալ պարամետրերով ֆայլերը և հավելվածի սկզբնական կոդերը:

Խոցելիությունը նաև հնարավորություն է տալիս այլ ֆայլեր ներմուծել հավելվածի կոդ, ինչը թույլ է տալիս սերվերի վրա կոդի կատարումը, եթե հավելվածը թույլ է տալիս ֆայլերը վերբեռնել սերվեր (օրինակ, հարձակվողը կարող է վերբեռնել JSP սկրիպտը, որը ծածկված է որպես պատկեր, միջոցով պատկերի վերբեռնման ձևը): Հարձակումը կարող է իրականացվել, երբ հնարավոր է հարցում ուղարկել ցանցային նավահանգիստ AJP կարգավորիչով: Նախնական տվյալներով՝ առցանց հայտնաբերվել է ավելի քան 1.2 միլիոն հոսթորդներ ընդունում են հարցումներ AJP արձանագրության միջոցով:

Խոցելիությունը կա AJP արձանագրության մեջ, և չի կանչվել կատարման սխալ. Բացի HTTP-ի (պորտ 8080) միջոցով կապեր ընդունելուց, Apache Tomcat-ը լռելյայն թույլ է տալիս մուտք գործել վեբ հավելված AJP արձանագրության միջոցով (Apache Jserv արձանագրություն, նավահանգիստ 8009), որը HTTP-ի երկուական անալոգ է, որն օպտիմիզացված է ավելի բարձր կատարողականության համար, որը սովորաբար օգտագործվում է Tomcat սերվերների կլաստեր ստեղծելու կամ Tomcat-ի հետ փոխազդեցությունը հակադարձ պրոքսիի կամ բեռի հավասարակշռողի վրա արագացնելու համար:

AJP-ն ապահովում է ստանդարտ գործառույթ սերվերի վրա ֆայլեր մուտք գործելու համար, որը կարող է օգտագործվել, ներառյալ ֆայլեր ստանալը, որոնք ենթակա չեն բացահայտման: Ենթադրվում է, որ AJP-ը հասանելի է միայն վստահելի սերվերներին, բայց իրականում Tomcat-ի լռելյայն կոնֆիգուրացիան գործարկել է կարգավորիչը բոլոր ցանցային ինտերֆեյսների վրա և ընդունել հարցումները՝ առանց նույնականացման: Մուտք գործեք ցանկացած վեբ հավելվածի ֆայլ, ներառյալ WEB-INF, META-INF և ցանկացած այլ դիրեկտորիաների բովանդակությունը, որը տրամադրվում է ServletContext.getResourceAsStream() հասցեին զանգի միջոցով: AJP-ն նաև թույլ է տալիս օգտագործել ցանկացած ֆայլ վեբ հավելվածին հասանելի գրացուցակներում՝ որպես JSP սկրիպտ:

Խնդիրն ի հայտ է եկել 13 տարի առաջ թողարկված Tomcat 6.x մասնաճյուղից հետո: Բացի բուն Tomcat-ի խնդրից ազդում է և արտադրանքները, որոնք օգտագործում են այն, ինչպիսիք են Red Hat JBoss Web Server (JWS), JBoss Enterprise Application Platform (EAP), ինչպես նաև ինքնուրույն վեբ հավելվածներ, որոնք օգտագործում են Գարնանային կոշիկ. Նմանատիպ խոցելիություն (CVE-2020-1745) ներկա վեբ սերվերում Undertow, օգտագործվում է Wildfly հավելվածի սերվերում։ JBoss-ում և Wildfly-ում AJP-ը լռելյայն միացված է միայն standalone-full-ha.xml, standalone-ha.xml և ha/full-ha պրոֆիլներում domain.xml-ում: Spring Boot-ում AJP-ի աջակցությունը լռելյայն անջատված է: Ներկայումս տարբեր խմբեր պատրաստել են շահագործման ավելի քան մեկ տասնյակ աշխատանքային օրինակներ (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11).

Tomcat-ի թողարկումներում շտկվել է խոցելիությունը 9.0.31, 8.5.51 и 7.0.100 (6.x մասնաճյուղի սպասարկում դադարեցվել է). Դուք կարող եք հետևել բաշխման փաթեթների թարմացումների առկայությանը այս էջերում. Debian, Ubuntu, RHEL- ը, Fedora, Suse, FreeBSD- ը. Որպես լուծում, դուք կարող եք անջատել Tomcat AJP Connector ծառայությունը (կապել լսողական վարդակը localhost-ին կամ մեկնաբանել գիծը Connector port = «8009»), եթե դա անհրաժեշտ չէ, կամ մեղեդի վավերացված մուտք՝ օգտագործելով «գաղտնի» և «հասցե» ատրիբուտները, եթե ծառայությունն օգտագործվում է այլ սերվերների և վստահված անձանց հետ փոխազդելու համար՝ հիմնված mod_jk և mod_proxy_ajp (mod_cluster-ը չի աջակցում նույնականացմանը):

Source: opennet.ru

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