Уразлівасць у Apache Tomcat, якая дазваляе падставіць JSP-код і атрымаць файлы web-прыкладанняў.

Даследнікі з кітайскай кампаніі Chaitin Tech выявілі уразлівасць (CVE-2020-1938) у Apache Tomcat, адкрытай рэалізацыі тэхналогій Java Servlet, JavaServer Pages, Java Expression Language і Java WebSocket. Уразлівасці прысвоена кодавае імя Ghostcat і крытычны ўзровень небяспекі (9.8 CVSS). Праблема дазваляе ў канфігурацыі па змаўчанні праз адпраўку запыту па сеткавым порце 8009 прачытаць змесціва любых файлаў з каталога web-прыкладанні, у тым ліку файлаў з наладамі і зыходных тэкстаў прыкладання.

Уразлівасць таксама дае магчымасць імпартаваць іншыя файлы ў код прыкладання, што дазваляе арганізаваць выкананне кода на серверы, калі прыкладанне дапускае загрузку файлаў на сервер (напрыклад, атакавалы можа загрузіць JSP-скрыпт пад выглядам карцінкі праз форму загрузкі выявы). Атака можа быць здзейснена пры магчымасці адпраўкі запыту на сеткавы порт з апрацоўшчыкам AJP. Па папярэдніх дадзеных, у сетцы знойдзена больш за 1.2 млн хастоў, якія прымаюць запыты па пратаколе AJP.

Уразлівасць прысутнічае ў пратаколе AJP, а не выклікана памылкай у рэалізацыі. Апроч прыёму злучэнняў па HTTP (порт 8080) у Apache Tomcat па змаўчанні дапушчаецца зварот да web-прыкладанню праз пратакол AJP (Apache Jserv Protocol, порт 8009), які ўяўляе сабой аптымізаваны для дасягнення больш высокай прадукцыйнасці бінарны аналаг HTTP, які ўжываецца звычайна пры стварэнні кластара з Tomcat-сервераў або для паскарэння ўзаемадзеяння з Tomcat на зваротным проксі або балансавальнік нагрузкі.

AJP дае штатную функцыю для доступу да файлаў на серверы, якую можна выкарыстоўваць у тым ліку атрымання файлаў, якія не падлягаюць разгалашэнню. Мяркуецца, што доступ да AJP адкрыты толькі для давераных сервераў, але на справе ў канфігурацыі па змаўчанні Tomcat ажыццяўляўся запуск апрацоўшчыка на ўсіх сеткавых інтэрфейсах, а запыты прымаліся без аўтэнтыфікацыі. Доступ магчымы да любых файлаў web-прыкладанні, уключаючы змесціва WEB-INF, META-INF і любых іншых каталогаў, якія аддаюцца праз выклік ServletContext.getResourceAsStream(). AJP таксама дазваляе выкарыстоўваць любы файл у даступных для web-прыкладанні каталогах як скрыпт JSP.

Праблема выяўляецца пачынальна з выпушчанай 13 гадоў назад галінкі Tomcat 6.x. Акрамя непасрэдна Tomcat праблема закранае і якія выкарыстоўваюць яго прадукты, такія як Red Hat JBoss Web Server (JWS), JBoss Enterprise Application Platform (EAP), а таксама самадастатковыя web-прыкладанні, якія выкарыстоўваюць Вясновы бот. Аналагічная ўразлівасць (CVE-2020-1745) прысутнічае у web-серверы Адкат, які прымяняецца ў серверы прыкладанняў 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, Мяккая фетравы капялюш, SUSE, FreeBSD. У якасці абыходнай меры абароны можна адключыць сэрвіс Tomcat AJP Connector (прывязаць які слухае сокет з localhost або закаментаваць радок з Connector port = «8009»), калі ў ім няма неабходнасці, ці наладзіць аўтэнтыфікаваны доступ пры дапамозе атрыбутаў "secret" і "address", калі сэрвіс выкарыстоўваецца для ўзаемадзеяння з іншымі серверамі і проксі на базе mod_jk і mod_proxy_ajp (mod_cluster аўтэнтыфікацыю не падтрымлівае).

Крыніца: opennet.ru

Дадаць каментар