·ì϶±àºÅºÍ¼¶±ð
CVE±àºÅ£ºCVE-2019-5018£¬£¬£¬£¬£¬£¬Î£ÏÕ¼¶±ð£º¸ß¼¶£¬£¬£¬£¬£¬£¬CVSS·ÖÖµ£º³§ÉÌ×ÔÆÀ£º8.1£¬£¬£¬£¬£¬£¬¹Ù·½Î´ÆÀ¶¨
Ó°Ïì°æ±¾
SQLite 3.26.0¡¢3.27.0
·ì϶¸ÅÊö
SQLiteÊÇÒ»¿îÊ¢ÐеÄSQLÊý¾Ý¿âÒýÇæ£¬£¬£¬£¬£¬£¬ÓµÓÐÓ×ÐÍ£¬£¬£¬£¬£¬£¬¼±¾ç£¬£¬£¬£¬£¬£¬¿¿µÃסµÄÌØµã£¬£¬£¬£¬£¬£¬¿í·ºÓÃÓÚÒÆ¶¯É豸£¬£¬£¬£¬£¬£¬ä¯ÀÀÆ÷£¬£¬£¬£¬£¬£¬Ó²¼þÉ豸ÒÔ¼°Óû§ÀûÓ÷¨Ê½¡£¡£¡£¡£¡£¡£¡£¡£
SQLiteµÄ´°¿Úº¯ÊýÖдæÔڿɱ»ÀûÓõÄuse-after-free·ì϶£¬£¬£¬£¬£¬£¬¹¥»÷Õß¿Éͨ¹ý·¢ËͶñÒâSQLºÅÁîÀ´´¥·¢´Ë·ì϶£¬£¬£¬£¬£¬£¬µ¼ÖÂÔ¶³Ì´úÂëÖ´ÐС£¡£¡£¡£¡£¡£¡£¡£
·ì϶ÑéÖ¤
¾ßÌåϸ½ÚΪ£¬£¬£¬£¬£¬£¬SQLiteÔÚ¶ÔÔ̺¬´°¿Úº¯ÊýµÄSELECTÓï¾ä½øÐнâÎöºó£¬£¬£¬£¬£¬£¬Ê¹ÓÃsqlite3WindowRewriteº¯Êý¶Ô¸ÃSELECTÓï¾ä½øÐÐת»»¡£¡£¡£¡£¡£¡£¡£¡£
Ôڴ˺¯ÊýÖУ¬£¬£¬£¬£¬£¬ÈôÊǸÃSELECTÓï¾äÔ̺¬¾ÛºÏº¯Êý£¨COUNT£¬£¬£¬£¬£¬£¬MAX£¬£¬£¬£¬£¬£¬MIN£¬£¬£¬£¬£¬£¬AVG£¬£¬£¬£¬£¬£¬SUM£©£¬£¬£¬£¬£¬£¬Ôò³ÁдSELECT¶ÔÏó±£ÁôµÄ±í°×ʽÁÐ±í£¨ÏÂͼÖеÚ[0]ÐУ©¡£¡£¡£¡£¡£¡£¡£¡£
Ö÷´°¿Ú¶ÔÏópMWinÈ¡×ÔSELECT¶ÔÏ󣬣¬£¬£¬£¬£¬²¢ÔÚ³ÁдÆÚ¼ä±»Ê¹ÓÃ[1]¡£¡£¡£¡£¡£¡£¡£¡£±éÀúSELECT¶ÔÏóµÄ±í°×ʽÁÐ±í£¬£¬£¬£¬£¬£¬³Áд´°¿Úº¯ÊýÒÔ±ãÓÚ´¦Öᣡ£¡£¡£¡£¡£¡£¡£
°ÑÎÈÖ÷´°¿Ú¶ÔÏóÔÚWindowRewrite¶ÔÏóÖÐʹÓᣡ£¡£¡£¡£¡£¡£¡£ÔÚÑ»·´¦ÖÃÿһ¸ö±í°×ʽʱ£¬£¬£¬£¬£¬£¬½«xExprCallbackº¯Êý×÷Ϊ»Øµ÷º¯Êý¡£¡£¡£¡£¡£¡£¡£¡£µ±´¦ÖþۺϺ¯Êý£¨TK AGG FUNCTION£©ºó£¬£¬£¬£¬£¬£¬±í°×ʽ±»É¾³ý[2]¡£¡£¡£¡£¡£¡£¡£¡£
ÈôÊDZ»É¾³ýµÄ±í°×ʽ±»ÏóÕ÷Ϊ´°¿Úº¯Êý£¬£¬£¬£¬£¬£¬ÔòÒ²»áɾ³ý¹ØÁªµÄWindow¶ÔÏ󡣡£¡£¡£¡£¡£¡£¡£
²¢É¾³ý¸ÃWindow¶ÔÏó¹ØÁªµÄ·ÖÇø¡£¡£¡£¡£¡£¡£¡£¡£
»ØÊ׳õʼµÄsqlite3WindowRewriteº¯Êý£¬£¬£¬£¬£¬£¬·¢Ïָú¯ÊýÔÚ³Áд±í°×ʽÁбí[4]Ö®ºóͨ¹ýexprListAppendList³ÁÓÃÕâ¸ö±»É¾³ýµÄ·ÖÇø[5]£¬£¬£¬£¬£¬£¬´Ó¶øµ¼ÖÂuse-after-freeºÍ»Ø¾ø·þÎñ¡£¡£¡£¡£¡£¡£¡£¡£ÈôÊǹ¥»÷ÕßÄܹ»½ÚÔìfreeºóµÄÄڴ棬£¬£¬£¬£¬£¬Ôò¿ÉÄÜ·ÛËé¸üÎÞÊý¾Ý£¬£¬£¬£¬£¬£¬´Ó¶øµ¼Ö´úÂëÖ´ÐС£¡£¡£¡£¡£¡£¡£¡£
Äܹ»Ê¹ÓÃDebug°æ±¾µÄsqlite3ÏÈÇå¿Õ±»freeµÄ»º³åÇøµÄÄÚÈÝ£¬£¬£¬£¬£¬£¬ÒÔ¸üºÃµØ½øÐÐÑÝʾ[5]¡£¡£¡£¡£¡£¡£¡£¡£
ͨ¹ýgdb sqlite3ÔËÐÐPoC£¬£¬£¬£¬£¬£¬¿É¹Û²ìµ½0xfafafafafafafafa×ó½ü²úÉú±ÀÀ££¬£¬£¬£¬£¬£¬ÕâÒâζ×ŶÔÒÑ¿ªÊ͵Ļº³åÇøµÄÔٴνӼû£º
ʹÓÃsqlite3 shellÔËÐÐPoC£º
½¨¸´½¨Òé
ĿǰSQLite³§ÉÌÕë¶Ô¸Ã·ì϶°ä²¼ÁË·ì϶²¹¶¡£¬£¬£¬£¬£¬£¬Çë¸üÐÂÖÁSQLite3 3.28.0£ºhttps://www.sqlite.org/src/info/69bad9257f8db6a2¡£¡£¡£¡£¡£¡£¡£¡£
²Î¿¼Á´½Ó
https://www.talosintelligence.com/vulnerability_reports/TALOS-2019-0777/