
CVE-2026-25860 POC git
この XSS を RCE に連鎖させたい場合は、以下を参照してください:
OpenClinic GA <= v5.351.19 (12/05/2026) には、DICOM 画像アップロードハンドラに反射型クロスサイトスクリプティングの脆弱性が存在し、攻撃者が DICOM ファイルのメタデータフィールドに悪意のあるペイロードを埋め込むことで、被害者のブラウザ上で任意の JavaScript を実行できるようになります。攻撃者は Study Description などのメタデータフィールドに JavaScript ペイロードを含む DICOM ファイルを作成でき、Upload DICOM images 機能で処理されると、popup.jsp および archiving/uploadfiles.java でサニタイズなしに反映されます。
古いバージョンでは、ファイル名は uploadfiles_jsp.java でした。
web/archiving/uploadfiles.jsp ファイルは .DICOM アップロード結果の表示を処理し、いくつかの DICOM フィールドを表示します。それらは追加の計算やサニタイズなしで反映されるため、反射型 XSS が発生します。
脆弱なコードは(短縮版)DICOM の Tag が処理される箇所にあります。特に StudyDescription は、次の画像で示す POC のフィールドです:
while (itr.hasNext()) {
i++;
FileItem item = (FileItem) itr.next();
if (item.isFormField()) {
} else {
try {
String fn = SCANDIR_BASE + "/from/" + filename + "_" + i;
File savedFile = new File(fn);
InputStream is = item.getInputStream();
FileUtils.copyInputStreamToFile(is, savedFile);
is.close();
DicomObject obj = Dicom.getDicomObject(savedFile);
if (obj == null) {
errors.add(item.getName());
} else {
patients.add(obj.getString(Tag.PatientID));
studies.add(obj.getString(Tag.StudyID) + "</td><td>" + obj.getString(Tag.StudyDescription).replaceAll("\\^", " "));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
注: 最新の安定版ダウンロード(実行可能リリース)は、テストされたバージョンよりいくつか古いバージョンです。しかし、脆弱性は依然として存在し、Linux と Windows の両方で動作します。
StudyDescription に、JavaScript を実行するために注入する HTML コードを設定して、悪意のある DICOM ファイル file.dcm を作成します:
さらに詳しく調べると、ポップアップ管理は popup.js で処理されます。
このファイルをアップロードすると、反射型 XSS がトリガーされます: