CVE-2020-17521 | Apache GroovyÎó²îͨ¸æ
Ðû²¼Ê±¼ä 2020-12-070x00 Îó²î¸ÅÊö
CVE ID | CVE-2020-17521 | ʱ ¼ä | 2020-12-07 |
Àà ÐÍ | ȨÏÞÉý¼¶/ÐÅϢй¶ | µÈ ¼¶ | ¸ßΣ |
Ô¶³ÌʹÓà | ·ñ | Ó°Ïì¹æÄ£ |
0x01 Îó²îÏêÇé

Groovy ÊÇ Apache ÆìϵÄÒ»ÃÅ»ùÓÚ JVM ƽ̨µÄ¶¯Ì¬±à³ÌÓïÑÔ£¬£¬ÔÚÓïÑÔµÄÉè¼ÆÉÏÆäÎüÄÉÁË Python¡¢Ruby ºÍ Smalltalk ÓïÑÔµÄÌØµã£¬£¬Óï·¨¾«Á·£¬£¬¿ª·¢Ð§Âʸߡ£¡£¡£¡£¡£¡£
2020Äê12ÔÂ06ÈÕ£¬£¬ApacheÐû²¼Ç徲ͨ¸æ£¬£¬GroovyÖб£´æÒ»¸öÇå¾²Îó²î£¨CVE-2020-17521£©¡£¡£¡£¡£¡£¡£GroovyÕýÔÚʹÓÃJDKÖеÄÒ»ÖÖÒªÁ죬£¬ÏÖÔÚ½«¸ÃÒªÁì±ê¼ÇΪ²»ÊÊÓÃÓÚÇå¾²Ãô¸ÐµÄÉÏÏÂÎÄ¡£¡£¡£¡£¡£¡£ÁíÍ⣬£¬Groovyδ¼ì²é½¨ÉèÔÝʱĿ¼ʱµÄÏà¹Øflag£¬£¬Õ⽫±£´æÇå¾²ÎÊÌâ¡£¡£¡£¡£¡£¡£
´ËÎó²î¿ÉÄÜ»áÓ°ÏìÀàUnixϵͳÒÔ¼°¾É°æµÄMac OSXºÍWindowsϵͳ¡£¡£¡£¡£¡£¡£Groovy¿ÉÒÔÔÚÕâЩϵͳÖн¨ÉèÔÝʱĿ¼ÌìÉúJava StubÒÔ¹©ÄÚ²¿Å²Ó㬣¬»òÕßͨ¹ýÁ½ÖÖÀ©Õ¹ÒªÁ죨Ïê¼û²Î¿¼Á´½Ó£©À´½¨ÉèÔÝʱĿ¼£¬£¬¸ÃĿ¼»áÔÚϵͳÉϵÄËùÓÐÓû§Ö®¼ä¹²Ïí¡£¡£¡£¡£¡£¡£
ÆÊÎö´ËÎó²îµÄÓ°Ïìʱ£¬£¬Ìõ¼þÌõ¼þÈçÏ£º
Groovy´úÂëÊÇ·ñÔÚÊÜÓ°ÏìµÄ²Ù×÷ϵͳÉÏÔËÐУ¿£¿£¿£¿
ÆäËûÓû§ÊÇ·ñ¿ÉÒÔ»á¼ûÔËÐÐGroovy´úÂëµÄ»úе£¿£¿£¿£¿
Groovy´úÂëÊÇ·ñʹÓÃcreateTempDirÁ½ÖÖÀ©Õ¹ÒªÁìÖ®Ò»½¨ÉèÔÝʱĿ¼£¿£¿£¿£¿
ÈôÊÇGroovyʹÓÃcreateTempDirÁ½ÖÖÀ©Õ¹ÒªÁìÖ®Ò»À´½¨ÉèÔÝʱĿ¼£¬£¬Groovy´úÂëÔÚÊÜÓ°ÏìµÄ²Ù×÷ϵͳÉÏÔËÐУ¬£¬¿ÉÖ´ÐдúÂ뱻дÈë»ò´æ´¢ÔÚÔÝʱĿ¼ÖУ¬£¬²¢ÇÒÆäËûÓû§¿ÉÒÔ»á¼ûÔËÐÐGroovy´úÂëµÄ»úе£¬£¬Ôò±£´æÍâµØÈ¨ÏÞÌáÉýµÄΣº¦£»£»£»ÈôÊÇGroovyʹÓÃcreateTempDirÁ½ÖÖÀ©Õ¹ÒªÁìÖ®Ò»À´½¨ÉèÔÝʱĿ¼£¬£¬Groovy´úÂëÔÚÊÜÓ°ÏìµÄ²Ù×÷ϵͳÉÏÔËÐУ¬£¬Groovy´úÂ뽫Ãô¸ÐÐÅÏ¢£¨ÀýÈçAPIÃÜÔ¿»òÃÜÂ룩дÈëÔÝʱĿ¼£¬£¬²¢ÇÒÆäËûÓû§¿ÉÒÔ»á¼ûÔËÐÐGroovy´úÂëµÄ»úе£¬£¬Ôò½«±£´æÐÅϢй¶»òÐ޸ĵÄΣº¦¡£¡£¡£¡£¡£¡£
¹ØÓÚÀο¿°æ±¾£¬£¬Groovy 2.5¼°¸ü¸ß°æ±¾ÏÖÔÚʹÓÃÒ»ÖÖ¸üÐÂJDKµÄÒªÁìÀ´ÐÞ¸´´ËÎó²î£¬£¬¸ÃÒªÁ콫½¨ÉèÒ»¸öÖ»ÓÐGroovy´úÂëµÄÓû§²Å»ª¶ÁÈ¡µÄĿ¼¡£¡£¡£¡£¡£¡£Groovy 2.4°æ±¾Ò²ÊÊÓÃÓÚÕâÖÖÒªÁ죬£¬³ý·ÇÆäJDK°æ±¾Ð¡ÓÚJDK7¡£¡£¡£¡£¡£¡£ÈôÊÇJDK°æ±¾ÔÚJDK7֮ǰ£¬£¬¿ÉÒÔʹÓÃfallback implementationÀ´¼ì²éÊÇ·ñÀֳɽ¨ÉèÁËÔÝʱĿ¼£¬£¬µ«ÔÚ´ËÖÖÇéÐÎÏ¿ÉÐ޸ĿÉÖ´ÐÐÎļþ»òÐÅÏ¢£¬£¬Òò´ËÈÔ¿ÉÄܵ¼ÖÂÃô¸ÐÐÅϢй¶¡£¡£¡£¡£¡£¡£Groovy 2.4/JDK 6Óû§½¨ÒéʹÓÃjava.io.tmpdir¡£¡£¡£¡£¡£¡£
Ó°Ïì¹æÄ££º
Codehaus 2.0-2.4.4
Apache Groovy 2.4.4-2.4.20¡¢2.5.0-2.5.13¡¢3.0.0-3.0.6¡¢4.0.0-alpha-1¡£¡£¡£¡£¡£¡£
0x02 ´¦Öóͷ£½¨Òé
ÏÖÔÚApacheÒѾÐÞ¸´ÁË´ËÎó²î£¬£¬½¨Òé²Î¿¼ÒÔϰ汾ʵʱ¸üС£¡£¡£¡£¡£¡£
Apache Groovy 2.4.21¡¢2.5.14¡¢3.0.7¡¢4.0.0-alpha-2¡£¡£¡£¡£¡£¡£
»º½â²½·¥£º
½«java.io.tmpdirµÄϵͳÇéÐαäÁ¿ÉèÖÃΪִÐÐÓû§¶ÀÍÌ¡£¡£¡£¡£¡£¡£´ËÒªÁìÊÊÓÃÓÚËùÓвÙ×÷ϵͳºÍËùÓÐGroovy°æ±¾¡£¡£¡£¡£¡£¡£
ÈôÊDz»ÏëÉý¼¶Groovy£¬£¬Ôò¿ÉÒÔ˼Á¿Ê¹ÓÃJDKµÄFiles#createTempDirectoryÒªÁìÀ´ÐÞ¸´¡£¡£¡£¡£¡£¡£
0x03 ²Î¿¼Á´½Ó
http://mail-archives.apache.org/mod_mbox/www-announce/202012.mbox/%3CCADRx3PPJFs4x2Oyy-auG+=e2nB+bDx_f_tKR7xn2qXW7518Pgg@mail.gmail.com%3E
https://docs.groovy-lang.org/latest/html/groovy-jdk/java/io/File.html#createTempDir
https://docs.groovy-lang.org/latest/html/groovy-jdk/java/io/File.html#createTempDir(java.lang.String,%20java.lang.String)
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-17521
0x04 ʱ¼äÏß
2020-12-06 ApacheÐû²¼Ç徲ͨ¸æ
2020-12-07 VSRCÐû²¼Ç徲ͨ¸æ
0x05 ¸½Â¼
CVSSÆÀ·Ö±ê×¼¹ÙÍø£ºhttp://www.first.org/cvss/



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