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Ðû²¼Îó²îͨ¸æ


Ò«ÊÀÓéÀÖ-¿Æ¼¼¸³Äܳ¡¾°,ÈÃÓéÀÖ¸üÓÐȤ¡£