
Recherche et validation privées pour la restauration du glisser-déposer de fichiers WebKitGTK (suivi de CVE-2025-13947)
Carnet de recherche et d'intégration continue pour restaurer le glisser-déposer fiable de fichiers sur WebKitGTK et WPE après CVE-2025-13947.
CVE-2025-13947 (WSA-2025-0009, GHSA-j77f-3hf7-7rvg) permettait au contenu web de lire le contenu de fichiers locaux via le glisser-déposer sur WebKitGTK. Le correctif en amont, bugs.webkit.org 303434, était une désactivation large : allowsFileAccess() renvoie false sur tous les ports non-Cocoa, donc dataTransfer.files est vide pour chaque dépôt, y compris lorsqu'un utilisateur fait glisser son propre fichier depuis le gestionnaire de fichiers vers une cible de téléversement. Les navigateurs de type Epiphany et les interfaces de téléversement WebKitGTK embarquées ont perdu cette fonctionnalité. Le bug 320301 est un rapport d'utilisateur final de la même régression.
Séparer la confiance à la frontière de la plateforme plutôt que de désactiver la fonctionnalité. Un seul commit sur le fork du moteur, branche sirredbeard/WebKit gtk-dnd-file-access-reenable :
SelectionData::setURIList() ne promeut plus les lignes uri-list en noms de fichiers. Les autorisations de fichiers proviennent uniquement des setters explicites utilisés par les deux cibles de dépôt UIProcess et le décodage IPC.allowsFileAccess() renvoie true uniquement pour les véritables glissements de fichiers sur GTK et WPE.GdkFileList fourni par le portail l'emporte sur une uri-list parallèle, avec la même vérification d'hôte d'URI de fichier appliquée aux deux chemins.file:// et n'exportent jamais de GdkFileList.file://host/path est rejeté sauf si l'hôte est vide ou localhost.filenames traverse l'IPC comme champ propre et la copie du processus web est effacée au début du glissement.Les sources de glissement créées par le web n'obtiennent aucun contenu de fichier. Les dépôts par l'utilisateur de fichiers externes accordent dataTransfer.files. Le collage reste désactivé en attendant un audit du presse-papiers.
Déposé en amont le 2026-09-03.
2fd5c6cb7ea7, arbre bc272e2a5ebe, sur le main amont actueld364838bce86 ; une nouvelle exécution sur l'arbre actuel est duefindings/findings/upstream-strategy.mdfindings/testing-plan.mdbug_report.md.github/copilot-instructions.mdUn seul commit écrasé sur main, aucune autre branche. La machinerie de validation d'empaquetage et d'interface graphique qui précédait l'approche moteur uniquement a été supprimée ; findings/ conserve les conclusions en prose.