ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈΠ· ΠΊΠΈΡΠ°ΠΉΡΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ 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