Tailscale,这家专注于VPN和网络连接服务的公司,发现了一个隐秘了16年之久的SQLite漏洞。自2022年起,Tailscale将SQLite作为主要数据库,但在2025年8月时,备份报告显示数据库出现了损坏,导致需要频繁中断服务进行修复。
尽管团队排查了最近的修改和底层代码,他们并没有找到问题的直接原因。由于缺乏触发条件的明晰,导致无法轻易重现漏洞。于是,Tailscale与SQLite开发者签署了支持合同,双方共同努力寻找症结。
为了提高运维效率,Tailscale采取了几项措施,包括自动备份和改善操作手册,进一步缩短了停机时间。在调查过程中,他们创建了一个事务日志管道,用于记录所有数据库修改的SQL语句,以确保数据安全并能够有效恢复服务。 千亿球友会
随着对事务日志的深入分析,团队发现某些已提交的事务在后续处理中未能被正确识别,这使得他们逐渐锁定问题可能出在SQLite的检查点流程。SQLite使用“预写式日志”(WAL)来优化数据库性能,检查点过程的操作是非标准的。
为了解决此问题,SQLite开发者为生产环境增加了一层虚拟文件系统包装,以输出额外的追踪信息。在这一层的应用下,Tailscale在一次数据库损坏事件中收集到关键日志,从而揭示了检查点与写事务之间的数据竞争问题,该漏洞被命名为“WAL-Reset漏洞”。
经过一系列的修复,SQLite发布了修复缺陷的版本。随后,Tailscale在确认所有问题解决后,持续运作了四个月,没有再发生数据库损坏事件。这一经历彰显了使用标准流程的重要性。 千亿球友会
发表评论