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/


¾©¹«Íø°²±¸11010802024551ºÅ