AI 風向標|SQLite WAL-Reset 漏洞:單寫入者架構也不能忽略的資料庫風險
SQLite WAL-Reset 漏洞:單寫入者架構也不能忽略的資料庫風險
Tailscale 公開說明,其控制平面曾因 SQLite 的 WAL-Reset 資料競爭而出現間歇性資料損壞。這個問題並不是新近引入的回歸,而是存在於 SQLite 3.7.0 至 3.51.2 的長期缺陷,修復版本為 3.51.3。Tailscale 的案例特別值得註意,因為它採用單寫入者設計,仍可能在多個連線共享 WAL 資料庫時遇到極難重現的時序問題。
WAL 模式會把更新先寫入獨立的預寫日志,再由檢查點合併回主資料庫。當連線對 WAL 狀態的觀察不同步,重置流程就可能在不尋常的競態下破壞一致性。Tailscale 不只回報問題,還資助開源 VFS shim,協助重現與隔離故障。SQLite 官方的 3.51.3 發布紀錄則確認了對應修復版本。
對使用 SQLite 的桌面應用、邊緣服務與測試環境而言,實務重點是升級到修復版本,檢查程式是否讓多個連線共享同一 WAL 檔案,並保留可驗證的備份與完整性檢查。單寫入者不是絕對安全保證;檔案係統、連線生命週期與檢查點時序仍需納入故障演練。
來源: - https://tailscale.com/blog/sqlite-wal-reset-bug - https://sqlite.org/releaselog/3_51_3.html - https://sqlite.org/wal.html