FastjsonÔ¶³Ì´úÂëÖ´Ðзì϶¹«¸æ
°ä²¼¹¦·ò 2020-05-290x00 ·ì϶¸ÅÊö
|
CVE ID |
ÔÝÎÞ |
ʱ ¼ä |
2020-05-29 |
|
Àà ÐÍ |
RCE |
µÈ ¼¶ |
¸ßΣ |
|
Ô¶³ÌÀûÓà |
ÊÇ |
Ó°ÏìÁìÓò |
Fastjson <= 1.2.68 |
0x01 ·ì϶ÏêÇé
FastjsonÊǰ¢Àï°Í°ÍµÄ¿ªÔ´JSON½âÎö¿â£¬£¬£¬£¬£¬£¬£¬£¬ËüÄܹ»½âÎöJSONÌåʽµÄ×Ö·û´®£¬£¬£¬£¬£¬£¬£¬£¬Ö§³Ö½«Java BeanÐòÁл¯ÎªJSON×Ö·û´®£¬£¬£¬£¬£¬£¬£¬£¬Ò²Äܹ»´ÓJSON×Ö·û´®·´ÐòÁл¯µ½JavaBean¡£¡£¡£¡£¡£
2020Äê5ÔÂ28ÈÕ£¬£¬£¬£¬£¬£¬£¬£¬Github°ä²¼ÁËÓйØFastjson <= 1.2.68°æ±¾´æÔÚÔ¶³Ì´úÂëÖ´Ðзì϶µÄ²¼¸æ£¬£¬£¬£¬£¬£¬£¬£¬¸Ã·ì϶¿ÉÈÆ¹ýautoType¿ª¹ØµÄÏÞ¶È£¬£¬£¬£¬£¬£¬£¬£¬¹¥»÷Õß¾«ÐÄ»ú¹Ø·´ÐòÁл¯ÀûÓÃÁ´£¬£¬£¬£¬£¬£¬£¬£¬Êµ´Ë¿ÌÖ¸±ê»úеÉϵÄÔ¶³Ì´úÂëÖ´ÐÓ×£¡£¡£¡£¡£´Ë·ì϶×ÔÉíÎÞ·¨ÈƹýFastjsonµÄºÚÃûµ¥ÏÞ¶È£¬£¬£¬£¬£¬£¬£¬£¬±ØÒª¹²Í¬²»ÔÚºÚÃûµ¥Öеķ´ÐòÁл¯ÀûÓÃÁ´ÄÜÁ¦ÊµÏÖ·ì϶ÀûÓᣡ£¡£¡£¡£
Fastjson°æ±¾¼ì²âºÅÁ
lsof | grep fastjson
0x02 ´ëÖý¨Òé
½ØÖ¹µ½Ä¿Ç°£¬£¬£¬£¬£¬£¬£¬£¬¹Ù·½»¹Î´°ä²¼1.2.69°æ±¾£¬£¬£¬£¬£¬£¬£¬£¬½¨Òé¿í´óÓû§ÊµÊ±¹Ø×¢¹Ù·½¸üй«¸æ£¬£¬£¬£¬£¬£¬£¬£¬×öºÃ×ʲú×Բ飬£¬£¬£¬£¬£¬£¬£¬ÒÔÃâÔâ·êºÚ¿Í¹¥»÷¡£¡£¡£¡£¡£
һʱ´ëÊ©£º
ÊÜÓ°ÏìÓû§¿Éͨ¹ý½ûÓÃautoTypeÀ´¶ã±Ü·çÏÕ£¬£¬£¬£¬£¬£¬£¬£¬Áí±í½¨Ò齫JDKÉý¼¶µ½×îа汾¡£¡£¡£¡£¡£
ÓÉÓÚautotype¿ª¹ØµÄÏ޶ȿɱ»Èƹý£¬£¬£¬£¬£¬£¬£¬£¬ÇëÊÜÓ°ÏìÓû§Éý¼¶fastjsonÖÁ1.2.68°æ±¾£¬£¬£¬£¬£¬£¬£¬£¬Í¨¹ý¿ªÆôsafeModeÅäÖÃÆëÈ«½ûÓÃautoType¡£¡£¡£¡£¡£( °ÑÎÈ£ºsafeMode»áÆëÈ«½ûÓÃautotype£¬£¬£¬£¬£¬£¬£¬£¬ºöÊÓ°×Ãûµ¥£¬£¬£¬£¬£¬£¬£¬£¬Çë°ÑÎÈÆÀ¹À¶ÔÒµÎñÓ°Ïì)ÈýÖÖÅäÖÃSafeModeµÄ·½Ê½ÈçÏÂ:
? ÔÚ´úÂëÖÐÅäÖãº
ParserConfig.getGlobalInstance().setSafeMode(true);
? ¼ÓÉÏJVMÆô¶¯²ÎÊý£ºÈôÊÇÓжà¸ö°üÃûǰ׺£¬£¬£¬£¬£¬£¬£¬£¬¿ÉÓöººÅ¸ô¿ª¡£¡£¡£¡£¡£
-Dfastjson.parser.safeMode=true
? ͨ¹ýfastjson.propertiesÎļþÅäÖãºÍ¨¹ýÀàõè¾¶µÄfastjson.propertiesÎļþÀ´ÅäÖ㬣¬£¬£¬£¬£¬£¬£¬ÅäÖ÷½Ê½ÈçÏ£º
fastjson.parser.safeMode=true
0x03 ²Î¿¼Á´½Ó
https://github.com/alibaba/fastjson/releases
https://github.com/alibaba/fastjson/wiki/fastjson_safemode
0x04 ¹¦·òÏß
2020-05-28 Github°ä²¼·ì϶²¼¸æ
2020-05-29 VSRC°ä²¼·ì϶¹«¸æ


¾©¹«Íø°²±¸11010802024551ºÅ