用于在 CVE-2025-13947 之后恢复 WebKitGTK 和 WPE 上可信文件拖放功能的研究与 CI 笔记本。
CVE-2025-13947(WSA-2025-0009、GHSA-j77f-3hf7-7rvg)允许网页内容通过 WebKitGTK 上的拖放操作读取本地文件内容。上游修复(bugs.webkit.org 303434)是一次广泛的禁用:allowsFileAccess() 在所有非 Cocoa 端口上返回 false,因此每次拖放时 dataTransfer.files 都为空,包括用户从文件管理器将自己的文件拖到上传目标上的情况。Epiphany 风格的浏览器和嵌入式 WebKitGTK 上传界面因此失去了该功能。Bug 320301 是同一回归问题的最终用户报告。
在平台边界上拆分信任,而不是禁用该功能。在引擎分支 sirredbeard/WebKit 的 gtk-dnd-file-access-reenable 分支上提交一次:
SelectionData::setURIList() 不再将 uri-list 行提升为文件名。文件授权仅来自两个 UIProcess 拖放目标和 IPC 解码所使用的显式 setter。allowsFileAccess() 仅在 GTK 和 WPE 上对实际文件拖放返回 true。GdkFileList 优先于并行的 uri-list,并且对两条路径都应用相同的文件 URI 主机检查。file:// 行,且绝不导出 GdkFileList。localhost,否则拒绝 file://host/path。filenames 作为独立字段通过 IPC 传输,并且 Web 进程副本在拖放开始时被清除。Web 编写的拖放源无法获取任何文件内容。用户拖入的外部文件授予 dataTransfer.files。粘贴功能在剪贴板审计完成前保持禁用。
已于 2026-09-03 提交上游。
2fd5c6cb7ea7,树 bc272e2a5ebe,位于当前上游 main 分支d364838bce86;需要在当前树上重新运行一次findings/findings/upstream-strategy.mdfindings/testing-plan.mdbug_report.md.github/copilot-instructions.mdmain 分支上只有一个压缩提交,没有其他分支。在仅引擎方案之前使用的打包和 GUI 验证机制已被移除;findings/ 以散文形式保留了结论。