SQLite远程代码执行漏洞

北京时间2018年12月10日,国家信息安全漏洞共享平台(CNVD)收录了SQLite远程代码执行漏洞(CNVD-2018-24855)。攻击者利用该漏洞,可在未授权的情况下远程执行代码。目前漏洞利用细节尚未公开。

作为基础组件库的SQLite也作为扩展库被许多程序使用,例如PHP、Python、Java等等,攻击者可通过攻击代码,在一些进程的上下文中在本地或远程任意执行代码,或导致软件的拒绝服务。 并且,SQLite作为嵌入式数据库,支持大多数SQL标准,实现了无服务器、零配置、事务性的SQL数据库引擎,在网页浏览器、操作系统、嵌入式系统中使用较为广泛。

此次漏洞与Chromium官方在11月份发布的包含SQLite远程代码执行漏洞有关。该漏洞通过调用Web SQL API(Web SQL数据库是引入了一套使用SQL操作客户端数据库的API,以SQLite作为底层实现,可在最新版的Chrome/Chromium浏览器运行。),临时创建数据库,并恶意修改SQLite数据库内部表,使代码运行至错误分支。之后,攻击者就可通过调用SQLite的数据库索引操作触发漏洞,实现对浏览器的远程攻击,在浏览器的渲染器(Render)进程执行任意代码。

安全狗攻防实验室已关注了事件进展,根据最新的研究分析,我们总结出了一些防护建议,敬请用户知晓。

处置建议

我们总结出的应对方案主要为官方提供的修补方案和应急的临时解决方案。

一、谷歌/SQLite官方修补方案

(1)将SQLite及SQLite库产品更新至3.26.0版本,该版本为目前的官方稳定版

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

(2)将Chromium产品更新至官方稳定版71.0.3578.80,或同步更新至代码版本

Commit c368e30ae55600a1c3c9cb1710a54f9c55de786e(https://chromium.googlesource.com/chromium/src/+/c368e30ae55600a1c3c9cb1710a54f9c55de786e)。

二、临时解决方案

如果暂时没有条件采用官方提供的修补方案,可采用下列方式暂时应急。

(1)关闭SQLite中的fts3功能如关闭此功能不影响产品,可禁用该功能。

Safari在Webkit中关闭fts3的方案(请参考https://github.com/WebKit/webkit/commit/36ce0a5e2dc2def273c011bef04e58da8129a7d6)。

验证方法:执行如下JavaScript代码时,不返回则表示已关闭该功能:

(2)禁用WebSQL:编译时不编译third-party的sqlite组件

由于WebSQL没有任何规范,目前仅有Chrome、Safari支持。但是Safari也已经阉割了大部分sqlite功能。如果关闭此功能不影响产品,可禁用WebSQL。

验证方法:重新编译后的内核,应无法在控制台调用openDatabase函数。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181213B0H38P00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券