SQLiteÔ¶³Ì´úÂëÖ´Ðзì϶°²È«¹«¸æ

°ä²¼¹¦·ò 2018-12-11

·ì϶±àºÅºÍ¼¶±ð


CVE±àºÅ£º´ý¶¨ £¬Î£ÏÕ¼¶±ð£º¸ßΣ £¬CVSS·ÖÖµ£º¹Ù·½Î´ÆÀ¶¨



Ó°Ïì°æ±¾


ChromiumµÍÓÚ71.0.3578.80°æ±¾

SQLiteµÍÓÚ3.26.0°æ±¾



·ì϶¸ÅÊö


2018Äê12ÔÂ10ÈÕ £¬¹ú¶ÈÐÅÏ¢°²È«·ì϶¹²ÏíÆ½Ì¨£¨CNVD£©ÊÕ¼ÁËÓÉÌÚѶ°²È«Æ½Ì¨²¿Tencent BladeÍŶӷ¢ÏÖ²¢»ã±¨µÄSQLiteÔ¶³Ì´úÂëÖ´Ðзì϶£¨CNVD-2018-24855£©¡£¹¥»÷ÕßÀûÓø÷ì϶ £¬¿ÉÔÚδÊÚȨµÄÇé¿öÏÂÔ¶³ÌÖ´ÐдúÂë¡£



SQLite×÷ΪǶÈëʽÊý¾Ý¿â £¬Ö§³Ö´óÎÞÊýSQL³ß¶È £¬ÊµÏÖÁËÎÞ·þÎñÆ÷¡¢ÁãÅäÖá¢ÊÂÎñÐÔµÄSQLÊý¾Ý¿âÒýÇæ £¬ÔÚÍøÒ³ä¯ÀÀÆ÷¡¢²Ù×÷ϵͳ¡¢Ç¶ÈëʽϵͳÖÐʹÓýÏΪ¿í·º¡£Web SQLÊý¾Ý¿âÊÇÒýÈëÁËÒ»Ì×ʹÓÃSQL²Ù×÷¿Í»§¶ËÊý¾Ý¿âµÄAPI £¬ÒÔSQLite×÷Ϊµ×²ãʵÏÖ £¬¿ÉÔÚ×îаæµÄChrome/Chromiumä¯ÀÀÆ÷ÔËÐС£



Chromium¹Ù·½°ä²¼ÁË11Ô·ݰ²È«·ì϶²¼¸æ,ÆäÖÐÔ̺¬SQLiteÔ¶³Ì´úÂëÖ´Ðзì϶¡£¸Ã·ì϶ͨ¹ýŲÓÃWeb SQL API £¬Ò»Ê±´´½¨Êý¾Ý¿â £¬²¢¶ñÒâÅú¸ÄSQLiteÊý¾Ý¿âÄÚ²¿±í £¬Ê¹´úÂëÔËÐÐÖÁÃýÎó·ÖÖ§¡£Ö®ºó £¬¹¥»÷Õ߾ͿÉͨ¹ýŲÓÃSQLiteµÄÊý¾Ý¿âË÷Òý²Ù×÷´¥·¢·ì϶ £¬ÊµÏÖ¶Ôä¯ÀÀÆ÷µÄÔ¶³Ì¹¥»÷ £¬ÔÚä¯ÀÀÆ÷µÄäÖȾÆ÷£¨Render£©¹ý³ÌÖ´ÐÐËÁÒâ´úÂë¡£



ͬʱ £¬×÷Ϊ»ù´¡×é¼þ¿âµÄSQLiteÒ²×÷ΪÀ©´ó¿â±»ºÜ¶à·¨Ê½Ê¹Óà £¬ÀýÈçPHP¡¢PythonµÈµÈ £¬¹¥»÷Õß¿Éͨ¹ýͬÑùµÄ¹¥»÷´úÂë £¬ÔÚÕâЩ¹ý³ÌµÄ¸ßµÍÎÄÖб¾µØ»òÔ¶³ÌËÁÒâÖ´ÐдúÂë £¬»òµ¼ÖÂÈí¼þ»Ø¾ø·þÎñ¡£



·ì϶ÑéÖ¤


ÔÝÎÞPOC/EXP¡£



½¨¸´½¨Òé


1¡¢¹È¸è/SQLite¹Ù·½½¨²¹¹æ»®


Chromium²úÆ·Ðè¸üÐÂÖÁ¹Ù·½²»±ä°æ71.0.3578.80 £¬»òͬ²½¸üÐÂÖÁ´úÂë°æ±¾Commit c368e30ae55600a1c3c9cb1710a54f9c55de786e¼°ÒÔÉÏ

(https://chromium.googlesource.com/chromium/src/+/c368e30ae55600a1c3c9cb1710a54f9c55de786e)¡£

SQLite¼°SQLite¿â²úÆ·Ðè¸üÐÂÖÁ3.26.0°æ±¾ £¬¸Ã°æ±¾ÎªÄ¿Ç°µÄ¹Ù·½²»±ä°æ£¨https://www.sqlite.org/releaselog/3_26_0.html£©¡£


2¡¢Ò»Ê±½â¾ö¹æ»®£º


£¨1£©½ûÓÃWebSQL£º±àÒëʱ²»±àÒëthird-partyµÄsqlite×é¼þ

ÓÉÓÚWebSQLûÓÐÈκι淶 £¬Ä¿Ç°½öÓÐChrome¡¢SafariÖ§³Ö¡£µ«ÊÇSafariÒ²ÒѾ­Ñ˸îÁË´ó²¿ÃÅsqliteÖ°ÄÜ¡£ÈôÊǹعشËÖ°Äܲ»Ó°Ïì²úÆ· £¬¿É½ûÓÃWebSQL¡£

ÑéÖ¤²½Ö裺³ÁбàÒëºóµÄÄÚºË £¬Ó¦ÎÞ·¨ÔÚ½ÚÔį̀ŲÓÃopenDatabaseº¯Êý¡£


£¨2£©¹Ø¹ØSQLiteÖеÄfts3Ö°ÄÜ

Èç¹Ø¹Ø´ËÖ°Äܲ»Ó°Ïì²úÆ· £¬¿É½ûÓøÃÖ°ÄÜ¡£SafariÔÚWebkitÖйعØfts3µÄ¹æ»® £¬Çë²Î¿¼

https://github.com/WebKit/webkit/commit/36ce0a5e2dc2def273c011bef04e58da8129a7d6¡£

ÑéÖ¤²½Öè:Ö´ÐÐÈçÏÂJavaScript´úÂëʱ £¬²»·µ»Ø{a:1}Ôò°µÊ¾ÒѹعظÃÖ°ÄÜ£º

var db = openDatabase('xxxxx'+parseInt(Math.random()*10000).toString(),1, 'fts_demo', 5000000);

db.transaction(function(tx) {

     tx.executeSql('create virtual table x using fts3(a,b);');

     tx.executeSql('insert into x values (1,2);');

     tx.executeSql('select a from x;', [], function (tx, results) {

console.log(results.rows[0]);

     });

});



²Î¿¼Á´½Ó


£¨1£©¹È¸è°²È«²¼¸æ£º

https://chromereleases.googleblog.com/2018/12/stable-channel-update-for-desktop.htm


£¨2£©SQLite¸üв¼¸æ£º

https://www.sqlite.org/releaselog/3_26_0.html


£¨3£©SQLite·ì϶ÏêÇéÒ³Ãæ£º

https://blade.tencent.com/magellan/