Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² 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-прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Spring Boot. Аналогичная ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2020-1745) присутствуСт Π² web-сСрвСрС 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»), Ссли Π² Π½Ρ‘ΠΌ Π½Π΅Ρ‚ нСобходимости, ΠΈΠ»ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ доступ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² «secret» ΠΈ «address», Ссли сСрвис ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для взаимодСйствия с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ сСрвСрами ΠΈ прокси Π½Π° Π±Π°Π·Π΅ mod_jk ΠΈ mod_proxy_ajp (mod_cluster Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru