¡¾·ì϶¹«¸æ¡¿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°ü´ó¾Ö²¿Ê𣬣¬£¬£¬£¬£¬ÒÀÕÕÈçϵIJ½Öè½øÐÐÅжϣº

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

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

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

2. ÈôÊÇÒµÎñϵͳÏîÄ¿ÒÔjar°ü´ó¾Ö¶ÀÁ¢ÔËÐУ¬£¬£¬£¬£¬£¬ÒÀÕÕÈçϵIJ½Öè½øÐÐÅжϣº

½âѹjar°ü£º½«jarÎļþµÄºó׺Åú¸Ä³Ézip£¬£¬£¬£¬£¬£¬½âѹzip Îļþ£»£»£»£»£»£»£»

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

ÈôÊÇspring-beans-*.jarÎļþ²»´æÔÚ£¬£¬£¬£¬£¬£¬ÔòÔÚ½âѹËõĿ¼ÏÂËÑË÷CachedIntrospectionResults.classÎļþÊÇ·ñ´æÔÚ£¬£¬£¬£¬£¬£¬ÈôÊÇ´æÔÚÔò×¢Ã÷ÒµÎñϵͳʹÓÃÁË 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 ¸½Â¼

8827Ì«Ñô¼¯Íżò½é

8827Ì«Ñô¼¯ÍŹ«Ë¾³ÉÁ¢ÓÚ1996Ä꣬£¬£¬£¬£¬£¬²¢ÓÚ2010Äê6ÔÂ23ÈÕÔÚÉî½»ËùÖÐÓ×°åÕýʽ¹ÒÅÆÉÏÊУ¬£¬£¬£¬£¬£¬ÊǹúÄÚ¼«¾ßʵÁ¦µÄ¡¢Õ¼ÓÐÆëÈ«×ÔÖ÷֪ʶ²úȨµÄÍøÂ簲ȫ²úÆ·¡¢¿ÉÐŰ²È«ÖÎÀíÆ½Ì¨¡¢°²È«·þÎñÓë½â¾ö¹æ»®µÄ×ÛºÏÌṩÉÌ¡£¡£¡£¡£ ¡£¡£¡£

¹«Ë¾×ܲ¿Î»ÓÚ±±¾©ÊÐÖйشåÈí¼þÔ°£¬£¬£¬£¬£¬£¬ÔÚÈ«¹ú¸÷Ê¡¡¢ÊÓ×¢×ÔÖÎÇøÉèÓзÖÖ§»ú¹¹£¬£¬£¬£¬£¬£¬Õ¼Óи²¸ÇÈ«¹úµÄÇþ·ϵͳºÍ¼¼ÊõÖ§³ÖÖÐÐÄ£¬£¬£¬£¬£¬£¬²¢ÔÚ±±¾©¡¢ÉϺ£¡¢³É¶¼¡¢ÕÑͨ¡¢³¤É³¡¢¾£ÃÅµÈ¶àµØÉèÓÐÑз¢ÖÐÐÄ¡£¡£¡£¡£ ¡£¡£¡£

¶àÄêÀ´£¬£¬£¬£¬£¬£¬8827Ì«Ñô¼¯ÍÅÖÂÁ¦ÓÚÌṩӵÓйú¼Ê¾ºÕùÁ¦µÄ×ÔÖ÷´´Ðµİ²È«²úÆ·ºÍ×î¼Ñʵ¼Ê·þÎñ£¬£¬£¬£¬£¬£¬Ô®ÊÖ¿Í»§È«ÃæÌáÉýÆäIT»ù´¡ÉèÊ©µÄ°²È«ÐԺͳö²úЧÁ¦£¬£¬£¬£¬£¬£¬Îª´òÔìºÍÌáÉý¹ú¼Ê»¯µÄÃñ×åÐÅÏ¢°²È«²úÒµÁì¾üÆ·ÅÆ¶ø²»Ð¸ÖÂÁ¦¡£¡£¡£¡£ ¡£¡£¡£


¹ØÓÚ8827Ì«Ñô¼¯ÍÅ

8827Ì«Ñô¼¯ÍŰ²È«Ó¦¼±ÏìÓ¦ÖÐÐÄÖØÒªÕë¶Ô³ÁÒª°²È«·ì϶µÄÔ¤¾¯¡¢¸ú×ٺͷÖÏíÈ«Çò×îеÄÍþвµý±¨ºÍ°²È«»ã±¨¡£¡£¡£¡£ ¡£¡£¡£

¹Ø×¢ÒÔϹ«¼ÒºÅ£¬£¬£¬£¬£¬£¬»ñȡȫÇò×îа²È«×ÊѶ£º

image.png