Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
sqlite-xfer-auth — SQLite 3.53.4 - 高危 - 本地 - 权限残留 - INSERT SELECT xfer 跳过源 READ | Kitploit
工具/GitHubGitHub/abraxas/sqlite-xfer-auth
漏洞分析代码分析漏洞利用安全虚拟化论文与研究数据库安全实验室与实践
GitHubabraxas/sqlite-xfer-auth

sqlite-xfer-auth

SQLite 3.53.4 - 高危 - 本地 - 权限残留 - INSERT SELECT xfer 跳过源 READ

查看仓库
96天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - sqlite-xfer-auth

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  sqlite-xfer-auth

sqlite-xfer-auth

类别: 权限残留 可达性: 本地

SQLite 3.53.4(b09c88c,SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc)对 INSERT INTO dest SELECT * FROM src 仍然走 xferOptimization 快速路径。sqlite3AuthCheck 仅对 dest 执行 SQLITE_INSERT。该复制过程从不对 src 调用 sqlite3Select 或逐列的 sqlite3AuthRead。SELECT * FROM src 会被拒绝。INSERT SELECT 却复制了见证数据。授权器日志为 INSERT:dest。

除非嵌入方安装授权器,否则授权器处于关闭状态。不是 RCE。DRH 将 Fossil d1cdb817 视为 3.54 的功能,而非 3.53 的缺陷修复。3.54.0 仍为草稿。

ID暂无 CVE
类别权限残留(READ 被拒的表复制)
可达性本地(嵌入方 sqlite3_set_authorizer)
CWECWE-863
CVSS高危:7.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
产品SQLite(Hwaci)
受影响版本3.53.4(b09c88c14082339b66c7b7158d609a771e64ca69)
认证针对已安装授权器的本地 SQL,该授权器对 src 拒绝 READ/SELECT 并允许对 dest 执行 INSERT
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1:18850

攻击者能做什么

当 dest 模式兼容且允许 INSERT 时,构造 INSERT INTO dest SELECT * FROM src。原始 B-tree 记录从 READ 被拒的源表离开并落入 dest。裸 SELECT * FROM src 会返回 SQLITE_AUTH。xfer 路径不编译 SELECT,因此源端 SQLITE_SELECT、表级 SQLITE_READ 以及逐列的 sqlite3AuthRead 均不会触发。

需要嵌入方将 sqlite3_set_authorizer 安装为不可信 SQL / 列 ACL 门禁。默认库中该回调为 NULL。不是 RCE。

我是如何发现的

与本次 GA 上其他残留问题相同的 3.53.4 Crit/High 排查。授权器文档位于 sqlite3_set_authorizer。INSERT 授权仅针对 dest 表(insert.c:969)。xfer 在 sqlite3Select() 之前被采用(insert.c:1020-1038)。xferOptimization 复制记录。在此 pin 上对 insert.c 的 grep:一处 sqlite3AuthCheck,无 sqlite3AuthRead。SQLITE_OMIT_XFER_OPT 不是默认构建标志。

论坛 2026-05-21T03:31:22Z。Trunk d1cdb817cafd03a4 仅适用于 3.54。DRH:新功能,不会进入 branch-3.53。

实验环境

cd lab
./run.sh

构建 amalgamation 3.53.4 加上 lab/xfer_auth.c。Compose sqlite-xfer-auth。绑定 127.0.0.1:18850。Oracle 是来自进程内授权器的 JSON:SELECT * FROM src 被拒;INSERT INTO dest SELECT * FROM src 成功;dest 含有 SQLITE-XFER-AUTH-WITNESS;插入操作仅为 INSERT:dest。

SUCCESS sqlite-xfer-auth how=xfer-opt-skip-src-read select-src=denied insert-select=ok dest-has-witness=yes SQLITE-XFER-AUTH-WITNESS

修复方案

按照 3.54 d1cdb817 的方式对源端进行授权:如果注册了授权器,xferOptimization 必须对 src 执行 sqlite3AuthCheck SELECT/READ(或拒绝快速路径并回退到 sqlite3Select)。在此之前,对某表拒绝 READ 的嵌入方仍必须拒绝向任何兼容 dest 的 INSERT,或使用 -DSQLITE_OMIT_XFER_OPT 编译。

参考资料

  • sqlite.org/src 标签 version-3.53.4(b09c88c14082339b66c7b7158d609a771e64ca69)
  • src/insert.c 中 sqlite3AuthCheck INSERT dest,xferOptimization 位于 sqlite3Select 之前
  • 论坛 2026-05-21T03:31:22Z · check-in d1cdb817cafd03a4
  • sqlite3_set_authorizer
下载工具