¡¾Îó²îͨ¸æ¡¿Spring FrameworkÔ¶³Ì´úÂëÖ´ÐÐÎó²î(CVE-2022-22965)

Ðû²¼Ê±¼ä 2022-03-31

0x00 Îó²î¸ÅÊö

CVE   ID

CVE-2022-22965

ʱ    ¼ä

2022-03-31

Àà    ÐÍ

RCE

µÈ    ¼¶

ÑÏÖØ

Ô¶³ÌʹÓÃ

ÊÇ

Ó°Ïì¹æÄ£


¹¥»÷ÖØÆ¯ºó

µÍ

Óû§½»»¥

ÎÞ

PoC/EXP

ÒѹûÕæ

ÔÚҰʹÓÃ


 

0x01 Îó²îÏêÇé

Spring Framework ÊÇÒ»¸ö¿ªÔ´µÄÇáÁ¿¼¶J2EEÓ¦ÓóÌÐò¿ª·¢¿ò¼Ü ¡£¡£¡£¡£¡£¡£

3ÔÂ31ÈÕ £¬£¬£¬VMwareÐû²¼Ç徲ͨ¸æ £¬£¬£¬ÐÞ¸´ÁËSpring FrameworkÖеÄÔ¶³Ì´úÂëÖ´ÐÐÎó²î£¨CVE-2022-22965£© ¡£¡£¡£¡£¡£¡£ÔÚ JDK 9 ¼°ÒÔÉϰ汾ÇéÐÎÏ £¬£¬£¬¿ÉÒÔʹÓôËÎó²îÔÚδÊÚȨµÄÇéÐÎÏÂÔÚÄ¿µÄϵͳÉÏдÈë¶ñÒâ³ÌÐò´Ó¶øÔ¶³ÌÖ´ÐÐí§Òâ´úÂë ¡£¡£¡£¡£¡£¡£

¸ÃÎó²îÓ°ÏìÁËÔÚJDK 9+ÉÏÔËÐеÄSpring¿ò¼Ü»òÆäÑÜÉú¿ò¼Ü¹¹½¨µÄÍøÕ¾»òÓ¦Óà £¬£¬£¬ÏÖÔÚ¹Ù·½ÒÑÔÚSpring Framework 5.3.18+ºÍ5.2.20+ÖÐÐÞ¸´ÁË´ËÎó²î ¡£¡£¡£¡£¡£¡£¼øÓÚ´ËÎó²îµÄPoC/EXPÒѹûÕæ £¬£¬£¬½¨ÒéÏà¹ØÓû§¾¡¿ìÅŲéÐÞ¸´ ¡£¡£¡£¡£¡£¡£

 

Ó°Ïì¹æÄ£

ÔËÐÐÇéÐÎΪJDK9¼°ÒÔÉϰ汾µÄ£º

Spring Framework 5.3.0 -5.3.17

Spring Framework 5.2.0 - 5.2.19

ÒÔ¼°ÆäËü¾É°æµÄ¡¢²»ÊÜÖ§³ÖµÄ°æ±¾ ¡£¡£¡£¡£¡£¡£


0x02 Çå¾²½¨Òé

ͨÓÃÐÞ¸´

ÏÖÔÚ¹Ù·½ÒѾ­ÐÞ¸´ÁË´ËÎó²î £¬£¬£¬ÊÜÓ°ÏìÓû§¿ÉÒÔÉý¼¶¸üе½Spring Framework 5.3.18»ò5.2.20 ¡£¡£¡£¡£¡£¡£

ÏÂÔØÁ´½Ó£º

https://github.com/spring-projects/spring-framework/tags

 

Îó²îÅŲé

µ±Í¬Ê±Öª×ãÒÔÏÂÌõ¼þʱ £¬£¬£¬Åú×¢¿ÉÄÜÊÜ´ËÎó²îÓ°Ï죺

l  JDK°æ±¾ >= 9£»£»£»£» £»£»£»

l  ʹÓÃSpring¿ò¼Ü»òÑÜÉú¿ò¼Ü £¬£¬£¬Ä¿½ñʹÓÃÁËTomcatÖÐÐļþ£¨ÏÖÔÚ¹ûÕæµÄÎó²îʹÓôúÂëÖ»Õë¶ÔTomcatÖÐÐļþ £¬£¬£¬µ«²»É¨³ý±£´æÆäËüΣº¦£© ¡£¡£¡£¡£¡£¡£

 

ÅŲéÒªÁì

l  JDK°æ±¾ºÅÅŲé

Ö´ÐС°java -version"ÏÂÁîÉó²éJDK°æ±¾ £¬£¬£¬ÈôÊǰ汾ºÅСÓÚ¼´ÊÇ8 £¬£¬£¬Ôò²»ÊÜ´ËÎó²îÓ°Ïì ¡£¡£¡£¡£¡£¡£

l  Spring¿ò¼ÜʹÓÃÇéÐÎÅÅ–Ë

1.ÈôÊÇӪҵϵͳÏîÄ¿ÒÔwar°üÐÎʽ°²ÅÅ £¬£¬£¬Æ¾Ö¤Èçϵİ취¾ÙÐÐÅжϣº

½âѹwar°ü£º½«warÎļþµÄºó¼¶ÐÞ¸Ä³É .zipÎļþ£»£»£»£» £»£»£»

ÔÚ½âѹËõĿ¼ÏÂËÑË÷ÊÇ·ñ±£´æspring-beans-*.jarÃûÌõÄÎļþ£¨ÀýÈçspring-beans-5.3.16.jar£© £¬£¬£¬Èç±£´æÔò˵Ã÷ӪҵϵͳʹÓÃÁË Spring¿ò¼Ü¾ÙÐпª·¢£»£»£»£» £»£»£»

ÈôÊÇspring-beans-*.jarÎļþ²»±£´æ £¬£¬£¬ÔòÔÚ½âѹËõĿ¼ÏÂËÑË÷CachedlntrospectionResults.classÎļþÊÇ·ñ±£´æ £¬£¬£¬Èç±£´æÔò˵Ã÷ӪҵϵͳʹÓÃÁË Spring¿ò¼Ü¾ÙÐпª·¢ ¡£¡£¡£¡£¡£¡£

2. ÈôÊÇӪҵϵͳÏîÄ¿ÒÔjar°üÐÎʽ×ÔÁ¦ÔËÐÐ £¬£¬£¬Æ¾Ö¤Èçϵİ취¾ÙÐÐÅжϣº

½âѹjar°ü£º½«jarÎļþµÄºó׺Ð޸ijÉzip £¬£¬£¬½âѹzip Îļþ£»£»£»£» £»£»£»

ÔÚ½âѹËõĿ¼ÏÂËÑË÷ÊÇ·ñ±£´æspring-beans-*.jarÃûÌõÄjarÎļþ£¨ÀýÈçspring-beans-5.3.16.jar£© £¬£¬£¬Èç±£´æÔò˵Ã÷ӪҵϵͳʹÓÃÁË Spring¿ò¼Ü¾ÙÐпª·¢£»£»£»£» £»£»£»

ÈôÊÇspring-beans-*.jarÎļþ²»±£´æ £¬£¬£¬ÔòÔÚ½âѹËõĿ¼ÏÂËÑË÷CachedIntrospectionResults.classÎļþÊÇ·ñ±£´æ £¬£¬£¬ÈôÊDZ£´æÔò˵Ã÷ӪҵϵͳʹÓÃÁË Spring¿ò¼Ü¾ÙÐпª·¢ ¡£¡£¡£¡£¡£¡£

 

ÔÝʱ²½·¥

Ðèͬʱ°´ÒÔÏÂÁ½¸ö°ì·¨¾ÙÐÐÎó²îµÄÔÝʱÐÞ¸´:

1¡¢ÔÚÓ¦ÓÃÖÐÈ«¾ÖËÑË÷@InitBinder×¢½â £¬£¬£¬¿´¿´ÒªÁìÌåÄÚÊÇ·ñŲÓÃdataBinder.setDisallowedFieldsÒªÁì £¬£¬£¬ÈôÊÇ·¢Ã÷´Ë´úÂëÆ¬¶ÏµÄÒýÈë,ÔòÔÚÔ­À´µÄºÚÃûµ¥ÖÐ £¬£¬£¬Ìí¼Ó{"class.*","Class.*","*.class.*","*.Class.*"} ¡£¡£¡£¡£¡£¡£×¢:ÈôÊÇ´Ë´úÂëÆ¬¶ÏʹÓÃ½Ï¶à £¬£¬£¬ÐèҪÿ¸öµØ·½¶¼×·¼Ó ¡£¡£¡£¡£¡£¡£

2¡¢ÔÚÓÃϵͳµÄÏîÄ¿°üÏÂн¨ÒÔÏÂÈ«¾ÖÀà £¬£¬£¬²¢°ü¹ÜÕâ¸öÀà±»Spring ¼ÓÔØµ½(ÍÆ¼öÔÚControllerËùÔڵİüÖÐÌí¼Ó) ¡£¡£¡£¡£¡£¡£Íê³ÉÀàÌí¼Óºó £¬£¬£¬Ðè¶ÔÏîÄ¿¾ÙÐÐÖØÐ±àÒë´ò°üºÍ¹¦Ð§ÑéÖ¤²âÊÔ £¬£¬£¬²¢ÖØÐÂÐû²¼ÏîÄ¿ ¡£¡£¡£¡£¡£¡£

import org.springframework.core.annotation.Order;

import org.springframework.web.bind.WebDataBinder;

import org.springframework.web.bind.annotation.ControllerAdvice;

import org.springframework.web.bind.annotation.InitBinder;

@ControllerAdvice

@Order(10000)

public class GlobalControllerAdvicc{

@InitBinder

public void setAllowedFields(webdataBinder dataBinder){

String[]abd=new string[]{"class.*","Class.*","*.class.*","*.Class.*"};            dataBinder.setDisallowedFields(abd);

}

}

 

0x03 ²Î¿¼Á´½Ó

https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement

https://tanzu.vmware.com/security/cve-2022-22965

https://github.com/spring-projects/spring-framework/

 

0x04 °æ±¾ÐÅÏ¢

°æ±¾

ÈÕÆÚ

ÐÞ¸ÄÄÚÈÝ

V1.0

2022-03-31

Ê×´ÎÐû²¼

 

0x05 ¸½Â¼

¼øºÚµ£±£Íø¼ò½é

¼øºÚµ£±£Íø¹«Ë¾½¨ÉèÓÚ1996Äê £¬£¬£¬²¢ÓÚ2010Äê6ÔÂ23ÈÕÔÚÉî½»ËùÖÐС°åÕýʽ¹ÒÅÆÉÏÊÐ £¬£¬£¬ÊǺ£ÄÚ¼«¾ßʵÁ¦µÄ¡¢ÓµÓÐÍêÈ«×ÔÖ÷֪ʶ²úȨµÄÍøÂçÇå¾²²úÆ·¡¢¿ÉÐÅÇå¾²ÖÎÀíÆ½Ì¨¡¢Ç徲ЧÀÍÓë½â¾ö¼Æ»®µÄ×ÛºÏÌṩÉÌ ¡£¡£¡£¡£¡£¡£

¹«Ë¾×ܲ¿Î»ÓÚ±±¾©ÊÐÖйشåÈí¼þÔ° £¬£¬£¬ÔÚÌìϸ÷Ê¡¡¢ÊС¢×ÔÖÎÇøÉèÓзÖÖ§»ú¹¹ £¬£¬£¬ÓµÓÐÁýÕÖÌìϵÄÇþµÀϵͳºÍÊÖÒÕÖ§³ÖÖÐÐÄ £¬£¬£¬²¢ÔÚ±±¾©¡¢ÉϺ£¡¢³É¶¼¡¢¹ãÖÝ¡¢³¤É³¡¢º¼ÖÝµÈ¶àµØÉèÓÐÑз¢ÖÐÐÄ ¡£¡£¡£¡£¡£¡£

¶àÄêÀ´ £¬£¬£¬¼øºÚµ£±£ÍøÖÂÁ¦ÓÚÌṩ¾ßÓйú¼Ê¾ºÕùÁ¦µÄ×ÔÖ÷Á¢ÒìµÄÇå¾²²úÆ·ºÍ×î¼Ñʵ¼ùЧÀÍ £¬£¬£¬×ÊÖú¿Í»§ÖÜÈ«ÌáÉýÆäIT»ù´¡ÉèÊ©µÄÇå¾²ÐÔºÍÉú²úЧÄÜ £¬£¬£¬Îª´òÔìºÍÌáÉý¹ú¼Ê»¯µÄÃñ×åÐÅÏ¢Çå¾²¹¤ÒµÁì¾üÆ·ÅÆ¶ø²»Ð¸Æð¾¢ ¡£¡£¡£¡£¡£¡£


¹ØÓÚ¼øºÚµ£±£Íø

¼øºÚµ£±£ÍøÇå¾²Ó¦¼±ÏìÓ¦ÖÐÐÄÖ÷ÒªÕë¶ÔÖ÷ÒªÇå¾²Îó²îµÄÔ¤¾¯¡¢¸ú×ٺͷÖÏíÈ«Çò×îеÄÍþвÇ鱨ºÍÇå¾²±¨¸æ ¡£¡£¡£¡£¡£¡£

¹Ø×¢ÒÔϹ«ÖںŠ£¬£¬£¬»ñȡȫÇò×îÐÂÇå¾²×ÊѶ£º

image.png