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号