SQLite 远程代码执行缝隙(CVE-2019-5018)
颁布功夫 2019-05-1101布景描述
02影响领域
缝隙等级: 高危
影响领域: SQLite 3.26.0、3.27.0
CVSS评分: 8.1
03缝隙详情
SQLite 3.26.0的窗口函数中存在可被利用的use-after-free缝隙,攻击者可通过发送恶意SQL号令来触发此缝隙,导致远程代码执行。
具体细节为,SQLite在对蕴含窗口函数的SELECT语句进行解析后,使用sqlite3WindowRewrite函数对该SELECT语句进行转换。
在此函数中,若是该SELECT语句蕴含聚合函数(COUNT,MAX,MIN,AVG,SUM),则沉写SELECT对象保留的表白式列表(下图中第[0]行)。
把稳主窗口对象在WindowRewrite对象中使用。在循环处置每一个表白式时,将xExprCallback函数作为回调函数。当处置聚合函数(TK AGG FUNCTION)后,表白式被删除[2]。
若是被删除的表白式被象征为窗口函数,则也会删除关联的Window对象。
并删除该Window对象关联的分区。
能够使用Debug版本的sqlite3先清空被free的缓冲区的内容,以更好地进行演示[5]。
通过gdb sqlite3运行PoC,可观察到0xfafafafafafafafa左近产生崩溃,这意味着对已开释的缓冲区的再次接见:
04建复建议
05参考链接
https://www.sqlite.org/src/info/884b4b7e502b4e99


京公网安备11010802024551号