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Óï¾ä½øÐÐת»»¡£¡£¡£


OG¶«·½Ìü¡¤(Öйú´ó½)


Ôڴ˺¯ÊýÖУ¬£¬£¬ÈôÊǸÃSELECTÓï¾äÔ̺¬¾ÛºÏº¯Êý£¨COUNT£¬£¬£¬MAX£¬£¬£¬MIN£¬£¬£¬AVG£¬£¬£¬SUM£©£¬£¬£¬ÔòÖØÐ´SELECT¶ÔÏó±£ÁôµÄ±í°×ʽÁÐ±í£¨ÏÂͼÖеÚ[0]ÐУ©¡£¡£¡£

OG¶«·½Ìü¡¤(Öйú´ó½)


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


OG¶«·½Ìü¡¤(Öйú´ó½)


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


OG¶«·½Ìü¡¤(Öйú´ó½)


ÈôÊDZ»É¾³ýµÄ±í°×ʽ±»ÏóÕ÷Ϊ´°¿Úº¯Êý£¬£¬£¬ÔòÒ²»áɾ³ý¹ØÁªµÄWindow¶ÔÏ󡣡£¡£


OG¶«·½Ìü¡¤(Öйú´ó½)


²¢É¾³ý¸ÃWindow¶ÔÏó¹ØÁªµÄ·ÖÇø¡£¡£¡£

OG¶«·½Ìü¡¤(Öйú´ó½)


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


OG¶«·½Ìü¡¤(Öйú´ó½)


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


OG¶«·½Ìü¡¤(Öйú´ó½)


ͨ¹ýgdb sqlite3ÔËÐÐPoC£¬£¬£¬¿É¹Û²ìµ½0xfafafafafafafafa×ó½ü²úÉú±ÀÀ££¬£¬£¬ÕâÒâζ×ŶÔÒÑ¿ªÊ͵Ļº³åÇøµÄÔٴνӼû£º£º

OG¶«·½Ìü¡¤(Öйú´ó½)


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

OG¶«·½Ìü¡¤(Öйú´ó½)


04ÐÞ¸´½¨Òé



´Ë·ì϶ÒÑÔÚSQLite 3.28.0ÖÐÐÞ¸´¡£¡£¡£


05²Î¿¼Á´½Ó



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