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/