αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ 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) αžŠαŸ‚αž›αž‡αžΆ analogue binary αž“αŸƒ HTTP αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„αž“αŸαŸ‡ αžŠαŸ‚αž›αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαž cluster αž“αŸƒ Tomcat servers αž¬αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™ Tomcat αž“αŸ…αž›αžΎαž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈαž”αž‰αŸ’αž…αŸ’αžšαžΆαžŸ ឬ load balancer αŸ”

AJP αž•αŸ’αžαž›αŸ‹αž˜αž»αžαž„αžΆαžšαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž―αž€αžŸαžΆαžšαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“ αžšαž½αž˜αž‘αžΆαŸ†αž„αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αž˜αŸ’αž˜αžœαžαŸ’αžαž»αž“αŸƒαž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰αŸ” AJP αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαž’αžΆαž…αž…αžΌαž›αž”αŸ’αžšαžΎαž”αžΆαž“αžαŸ‚αž…αŸ†αž–αŸ„αŸ‡αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαŸ‚αž›αž‡αžΏαž‘αž»αž€αž…αž·αžαŸ’αžαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαžΆαž˜αž–αž·αžαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžšαž”αžŸαŸ‹ Tomcat αž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž›αžΎαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž”αžŽαŸ’αžαžΆαž‰αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž“αž·αž„αž”αžΆαž“αž‘αž‘αž½αž›αž™αž€αžŸαŸ†αžŽαžΎαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αŸ” αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž‚αžΊαž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αž…αŸ†αž–αŸ„αŸ‡αž―αž€αžŸαžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸαž αž‘αŸ†αž–αŸαžšαžŽαžΆαž˜αž½αž™ αžšαž½αž˜αž‘αžΆαŸ†αž„αž˜αžΆαžαž·αž€αžΆαž“αŸƒ WEB-INF, META-INF αž“αž·αž„αžαžαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαž αŸ…αž‘αŸ…αž€αžΆαž“αŸ‹ ServletContext.getResourceAsStream()αŸ” AJP αž€αŸαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž―αž€αžŸαžΆαžšαžŽαžΆαž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαžŠαŸ‚αž›αž’αžΆαž…αž…αžΌαž›αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸαž αž‘αŸ†αž–αŸαžšαž‡αžΆαžŸαŸ’αž‚αŸ’αžšαžΈαž” JSP αŸ”

αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž”αžΆαž“αž›αŸαž…αž‘αžΎαž„αžαžΆαŸ†αž„αž–αžΈαžŸαžΆαžαžΆ Tomcat 13.x αžŠαŸ‚αž›αž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž€αžΆαž›αž–αžΈ 6 αž†αŸ’αž“αžΆαŸ†αž˜αž»αž“αŸ” αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαž”αž‰αŸ’αž αžΆ 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 αž”αžΆαž“αž”αž‰αŸ’αžˆαž”αŸ‹) αž’αŸ’αž“αž€αž’αžΆαž…αžαžΆαž˜αžŠαžΆαž“αž—αžΆαž–αž’αžΆαž…αžšαž€αž”αžΆαž“αž“αŸƒαž€αžΆαžšαž’αžΆαž”αŸ‹αžŠαŸαžαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž‰αŸ’αž…αž”αŸ‹αž…αŸ‚αž€αž…αžΆαž™αž“αŸ…αž›αžΎαž‘αŸ†αž–αŸαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αŸ– αžŠαŸαž”αŸ€αž“, αž‚αžΌαž”αŸŠαž»αž“αž‘αžΌ, ធរ, Fedora, ស៊ូស៊ី, FreeBSD. αž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž˜αž½αž™ αž’αŸ’αž“αž€αž’αžΆαž…αž”αž·αž‘αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ Tomcat AJP Connector (αž—αŸ’αž‡αžΆαž”αŸ‹αžšαž“αŸ’αž’αžŸαŸ’αžαžΆαž”αŸ‹αž‘αŸ… localhost αž¬αž”αž‰αŸ’αž…αŸαž‰αž˜αžαž·αž›αžΎαž”αž“αŸ’αž‘αžΆαžαŸ‹αž‡αžΆαž˜αž½αž™ Connector port = "8009") αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž€αžΆαžš ឬ αžšαŸ€αž”αž…αŸ† αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αžŠαŸ„αž™αž”αŸ’αžšαžΎαž›αž€αŸ’αžαžŽαŸˆ "αžŸαž˜αŸ’αž„αžΆαžαŸ‹" αž“αž·αž„ "αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“" αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αž“αž·αž„αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎ mod_jk αž“αž·αž„ mod_proxy_ajp (mod_cluster αž˜αž·αž“αž‚αžΆαŸ†αž‘αŸ’αžšαž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹) αŸ”

αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹