SQLite安全现状
SQLite是遵守ACID的关系数据库管理系统,实现了大多数SQL标准。它使用动态的、弱类型的SQL语法,包含在一个相对小的C库中。作为一款嵌入式数据库,它因占用的资源非常低,数据处理速度快等优点被Andriod、iOS、WebKit等流行软件采用。
2017年Black大会上来自长亭科技的议题介绍了基于Memory Corruption的SQLite漏洞。基于该漏洞,可以攻击常见的使用了SQLite的浏览器,包括Safari、Chrome、Opera等。同时,由于大部分应用本地数据库的存储几乎都采用了SQLite实现,这些应用同样受到该漏洞的影响。基于该漏洞可以造成大范围的用户信息泄露,包括用户在浏览器中填写的用户名、密码、身份证、银行卡等敏感信息。另外,基于该漏洞可以实现远程代码执行,从而控制用户终端设备,危害是非常大的。
此外,SQLite也有许多影响严重的漏洞常常被爆出。SQLite从3.3.6提供了支持扩展的能力,通过sqlite_load_extension API(或者load_extension SQL语句)开发者可以在不改动SQLite源码的情况下,通过加载动态库来扩展SQLite的能力。然而该功能被黑客利用,通过SQL注入漏洞加载预制的符合SQLite扩展规范的动态库,从而实现了远程代码执行,危害非常严重。
当然,SQLite的漏洞并不仅限于这几个。随着版本更新,在功能升级的过程中,每一版本均会被爆出大量的不同级别的漏洞。每一版本均会在上一版本基础上修改一些bug和漏洞,并可能会添加新的功能。由于精力有限,无法保证对每一行代码都经过安全审核,新发布的版本中很可能存在未被发现的漏洞。在现有技术体系下,产品漏洞挖掘的过程将会是长期存在的状况。
在Android应用中,只要有本地存储数据的需求,一般均会采用SQLite数据库存储。因此,一旦SQLite被爆安全漏洞,将影响数以万计的Android应用。同时,在某一Android设备中,一般都会预装许多应用或日常使用中安装了许多需要的应用,而这些应用中总会有一款应用使用了SQLite数据库。因此,SQLite的安全漏洞几乎总会影响的该设备。
https://www.cvedetails.com/vulnerability-list/vendor_id-9237/Sqlite.html
https://github.com/mudongliang/LinuxFlaw/tree/master/CVE-2015-5895