
Частное исследование и валидация восстановления перетаскивания файлов в WebKitGTK (продолжение CVE-2025-13947)
Исследовательская и CI-записная книжка для восстановления доверенного перетаскивания файлов в WebKitGTK и WPE после CVE-2025-13947.
CVE-2025-13947 (WSA-2025-0009, GHSA-j77f-3hf7-7rvg) позволял веб-контенту читать содержимое локальных файлов через перетаскивание в WebKitGTK. Исправление в апстриме, bugs.webkit.org 303434, было широким отключением: allowsFileAccess() возвращает false на всех портах, отличных от Cocoa, поэтому dataTransfer.files пуст для любого перетаскивания, включая случай, когда пользователь перетаскивает собственный файл из файлового менеджера на цель загрузки. Браузеры в стиле Epiphany и встроенные интерфейсы загрузки WebKitGTK потеряли эту функцию. Bug 320301 — это сообщение конечного пользователя о той же регрессии.
Разделить доверие на границе платформы вместо отключения функции. Один коммит в форке движка, ветка sirredbeard/WebKit gtk-dnd-file-access-reenable:
SelectionData::setURIList() больше не преобразует строки uri-list в имена файлов. Разрешения на файлы поступают только из явных сеттеров, используемых двумя целями перетаскивания UIProcess и декодированием IPC.allowsFileAccess() возвращает true только для реальных перетаскиваний файлов на GTK и WPE.GdkFileList имеет приоритет над параллельным uri-list, при этом одна и та же проверка хоста файлового URI применяется к обоим путям.file:// и никогда не экспортирует GdkFileList.file://host/path отклоняется, если хост не пуст и не равен localhost.filenames передаётся через IPC как отдельное поле, а копия в веб-процессе очищается при начале перетаскивания.Источники перетаскивания, созданные веб-контентом, не получают содержимого файлов. Пользовательские перетаскивания внешних файлов предоставляют dataTransfer.files. Вставка остаётся отключённой до аудита буфера обмена.
Отправлено в апстрим 2026-09-03.
2fd5c6cb7ea7, дерево bc272e2a5ebe, на текущем апстрим-maind364838bce86; повторный прогон на текущем дереве предстоитfindings/findings/upstream-strategy.mdfindings/testing-plan.mdbug_report.md.github/copilot-instructions.mdОдин сжатый коммит на main, других веток нет. Механизмы проверки упаковки и GUI, предшествовавшие подходу только с движком, были удалены; findings/ сохраняет выводы в прозе.