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


ÍòÀû¹ú¼Ê¹ÙÍø(ÖйúÓÎ)ÓÐÏÞ¹«Ë¾


Ôڴ˺¯ÊýÖÐ £¬£¬£¬£¬£¬£¬ÈôÊǸÃ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£º

ÍòÀû¹ú¼Ê¹ÙÍø(ÖйúÓÎ)ÓÐÏÞ¹«Ë¾


04ÐÞ¸´½¨Òé



´ËÎó²îÒÑÔÚSQLite 3.28.0ÖÐÐÞ¸´¡£¡£¡£¡£¡£¡£


05²Î¿¼Á´½Ó



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