
Pesquisa e validação privadas para a restauração de arrastar e soltar (DnD) de arquivos no WebKitGTK (acompanhamento do CVE-2025-13947)
Caderno de pesquisa e CI para restaurar o arrastar-e-soltar confiável de arquivos no WebKitGTK e WPE após o CVE-2025-13947.
O CVE-2025-13947 (WSA-2025-0009, GHSA-j77f-3hf7-7rvg) permitia que conteúdo web lesse
conteúdos de arquivos locais por meio de arrastar-e-soltar no WebKitGTK. A correção upstream,
bugs.webkit.org 303434, foi uma desativação ampla: allowsFileAccess() retorna
false em todas as portas não-Cocoa, então dataTransfer.files fica vazio para cada
soltura, incluindo um usuário arrastando seu próprio arquivo do gerenciador de arquivos para um
alvo de upload. Navegadores estilo Epiphany e UIs de upload embarcadas no WebKitGTK
perderam o recurso. O bug 320301 é um relato de usuário final da mesma regressão.
Dividir a confiança na fronteira da plataforma em vez de desativar o recurso. Um único
commit no fork do motor, branch sirredbeard/WebKit
gtk-dnd-file-access-reenable:
SelectionData::setURIList() não promove mais linhas de uri-list para
nomes de arquivo. Concessões de arquivo vêm apenas dos setters explícitos usados pelos
dois alvos de soltura da UIProcess e pela decodificação IPC.allowsFileAccess() retorna true apenas para arrastos de arquivo reais no GTK e WPE.GdkFileList fornecido pelo portal prevalece sobre uma uri-list paralela,
com a mesma verificação de host de URI de arquivo aplicada a ambos os caminhos.file:// e nunca exportam um GdkFileList.file://host/path é rejeitado a menos que o host esteja vazio ou seja localhost.filenames cruza o IPC como campo próprio e a cópia no processo web é
limpa no início do arrasto.Fontes de arrasto criadas pela web não recebem conteúdos de arquivo. Solturas de usuário de
arquivos externos concedem dataTransfer.files. Colar permanece desativado pendente de uma auditoria
da área de transferência.
Enviado upstream em 2026-09-03.
2fd5c6cb7ea7, árvore bc272e2a5ebe, no main upstream atuald364838bce86; uma nova execução na árvore atual é devidafindings/findings/upstream-strategy.mdfindings/testing-plan.mdbug_report.md.github/copilot-instructions.mdCommit único e squashado no main, sem outras branches. A maquinaria de validação de
empacotamento e GUI que precedeu a abordagem somente-motor foi removida;
findings/ mantém as conclusões em prosa.