FastjsonÔ¶³Ì´úÂëÖ´Ðзì϶¹«¸æ

°ä²¼¹¦·ò 2020-05-29

0x00 ·ì϶¸ÅÊö


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°ä²¼·ì϶¹«¸æ


±¦ÔËÀ³¡¤(ÖйúÇø)×îйٷ½ÍøÕ¾