SQLite Ô¶³Ì´úÂëÖ´ÐЩ¶´£¨CVE-2019-5018£©

Ðû²¼Ê±¼ä 2019-05-11

01Åä¾°ÃèÊö



SQLite 3.28.0ÐÞ¸´ÁËÓÉ˼¿ÆTalos·¢ÏÖ²¢³ÂËßµÄÔ¶³Ì´úÂëÖ´ÐЩ¶´£¨CVE-2019-5018£© ¡£


02Ó°Ï췶Χ



CVE ID  £º   CVE-2019-5018    
©¶´Æ·¼¶£º   ¸ßΣ
Ó°Ï췶Χ£º   SQLite 3.26.0¡¢3.27.0
CVSSÆÀ·Ö£º   8.1


03©¶´ÏêÇé



SQLite 3.26.0µÄ´°¿Úº¯ÊýÖдæÔڿɱ»ÀûÓõÄuse-after-free©¶´£¬¹¥»÷Õß¿Éͨ¹ý·¢ËͶñÒâSQLÃüÁîÀ´´¥·¢´Ë©¶´£¬µ¼ÖÂÔ¶³Ì´úÂëÖ´ÐÐ ¡£


¾ßÌåϸ½ÚΪ£¬SQLiteÔÚ¶Ô°üÂÞ´°¿Úº¯ÊýµÄSELECTÓï¾ä½øÐнâÎöºó£¬Ê¹ÓÃsqlite3WindowRewriteº¯Êý¶Ô¸ÃSELECTÓï¾ä½øÐÐת»» ¡£


×ðÁú¶¶È¦ - Ϊdu¶øÉú


Ôڴ˺¯ÊýÖУ¬Èç¹û¸ÃSELECTÓï¾ä°üÂ޾ۺϺ¯Êý£¨COUNT£¬MAX£¬MIN£¬AVG£¬SUM£©£¬ÔòÖØÐ´SELECT¹¤¾ßÉú´æµÄ±í´ïʽÁÐ±í£¨ÏÂͼÖеÚ[0]ÐУ© ¡£

×ðÁú¶¶È¦ - Ϊdu¶øÉú


Ö÷´°¿Ú¹¤¾ßpMWinÈ¡×ÔSELECT¹¤¾ß£¬²¢ÔÚÖØÐ´ÆÚ¼ä±»Ê¹ÓÃ[1] ¡£±éÀúSELECT¹¤¾ßµÄ±í´ïʽÁбí£¬ÖØÐ´´°¿Úº¯ÊýÒÔ±ãÓÚ´¦Öà ¡£


×ðÁú¶¶È¦ - Ϊdu¶øÉú


×¢ÒâÖ÷´°¿Ú¹¤¾ßÔÚWindowRewrite¹¤¾ßÖÐʹÓà ¡£ÔÚÑ­»·´¦ÖÃÿһ¸ö±í´ïʽʱ£¬½«xExprCallbackº¯Êý×÷Ϊ»Øµ÷º¯Êý ¡£µ±´¦ÖþۺϺ¯Êý£¨TK AGG FUNCTION£©ºó£¬±í´ïʽ±»É¾³ý[2] ¡£


×ðÁú¶¶È¦ - Ϊdu¶øÉú


Èç¹û±»É¾³ýµÄ±í´ïʽ±»±ê־Ϊ´°¿Úº¯Êý£¬ÔòÒ²»áɾ³ý¹ØÁªµÄWindow¹¤¾ß ¡£


×ðÁú¶¶È¦ - Ϊdu¶øÉú


²¢É¾³ý¸ÃWindow¹¤¾ß¹ØÁªµÄ·ÖÇø ¡£

×ðÁú¶¶È¦ - Ϊdu¶øÉú


»Ø¹Ë³õʼµÄsqlite3WindowRewriteº¯Êý£¬·¢Ïָú¯ÊýÔÚÖØÐ´±í´ïʽÁбí[4]Ö®ºóͨ¹ýexprListAppendListÖØÓÃÕâ¸ö±»É¾³ýµÄ·ÖÇø[5]£¬´Ó¶øµ¼ÖÂuse-after-freeºÍ¾Ü¾ø·þÎñ ¡£Èç¹û¹¥»÷Õß¿ÉÒÔ¿ØÖÆfreeºóµÄÄڴ棬Ôò¿ÉÄÜÆÆ»µ¸ü¶àÊý¾Ý£¬´Ó¶øµ¼Ö´úÂëÖ´ÐÐ ¡£


×ðÁú¶¶È¦ - Ϊdu¶øÉú


¿ÉÒÔʹÓÃDebug°æ±¾µÄsqlite3ÏÈÇå¿Õ±»freeµÄ»º³åÇøµÄÄÚÈÝ£¬ÒÔ¸üºÃµØ½øÐÐÑÝʾ[5] ¡£


×ðÁú¶¶È¦ - Ϊdu¶øÉú


ͨ¹ýgdb sqlite3ÔËÐÐPoC£¬¿ÉÊӲ쵽0xfafafafafafafafaËÄÖÜ·¢ÉúÍ߽⣬ÕâÒâζ×ŶÔÒÑÊͷŵĻº³åÇøµÄÔٴηÃÎÊ£º

×ðÁú¶¶È¦ - Ϊdu¶øÉú


ʹÓÃsqlite3 shell ÔËÐÐPoC£º

×ðÁú¶¶È¦ - Ϊdu¶øÉú


04ÐÞ¸´½¨Òé



´Ë©¶´ÒÑÔÚSQLite 3.28.0ÖÐÐÞ¸´ ¡£


05²Î¿¼Á´½Ó



https://blog.talosintelligence.com/2019/05/vulnerability-spotlight-remote-code.html
https://www.sqlite.org/src/info/884b4b7e502b4e99