概要
SiYuan は ローカル ファースト の 個人 ナレッジ マネジメント システム です。バージョン 3.6.0 以前 に おいて、モバイル ファイルツリー コンポーネント(MobileFiles.ts)に クロスサイト スクリプティング(CWE-79)の 脆弱性 が 存在 します。この 脆弱性 は CVSS スコア 9.0 の Critical と 評価 されて います。
問題 の 原因 は、MobileFiles.ts が WebSocket 経由 で 受信 する renamenotebook イベント を 処理 する 際 に、ノートブック 名 を HTML エスケープ せず に innerHTML を 使って DOM に 挿入 して いる 点 に あります。攻撃者 が ノートブック 名 に 悪意 の ある HTML タグ や JavaScript コード を 含めた 場合、その コンテンツ が そのまま ブラウザ の DOM に レンダリング され、任意 の スクリプト が 実行 される 可能性 が あります。
さらに 深刻 な 点 と して、SiYuan は Electron フレームワーク を 使用 して おり、nodeIntegration: true および contextIsolation: false の 設定 で 動作 して います。この ため、XSS 攻撃 が 成功 する と、攻撃者 は Node.js の API に 直接 アクセス でき、ファイル システム の 操作 や 外部 コマンド の 実行 など、完全 な リモートコード 実行(RCE)に エスカレート します。また、モバイル レイアウト は デスクトップ 版 で も ウィンドウ 幅 が 狭い 場合 に 自動的 に 使用 される ため、モバイル 端末 だけ で なく デスクトップ ユーザー も 影響 を 受ける 可能性 が あります。
この 脆弱性 を 悪用 する に は、攻撃者 が 同じ SiYuan インスタンス に アクセス できる 必要 が ありますが、SiYuan が ネットワーク 共有 モード で 動作 して いる 場合 は リモート から の 攻撃 が 可能 と なります。XSS から RCE へ の エスカレーション パス が 存在 する ため、影響 は 非常 に 大きい と 言えます。
CVSS ベクトル
| 項目 | 値 |
|---|---|
| CVSS スコア | 9.0 |
| 深刻度 | Critical |
| CWE | CWE-79(クロスサイト スクリプティング) |
| 攻撃元 | ネットワーク |
| 影響 | 機密性 高 / 完全性 高 / 可用性 高 |
影響 を 受ける ソフトウェア
| 製品 | 影響 バージョン | 修正 バージョン |
|---|---|---|
| SiYuan | 3.6.0 以前 | 3.6.1 |
修正 バージョン と 回避策
SiYuan バージョン 3.6.1 へ の アップデート に より、この 脆弱性 は 修正 されます。修正版 で は、innerHTML で の 直接 レンダリング が 廃止 され、適切 な HTML エスケープ 処理 が 追加 されて います。すぐ に アップデート できない 場合 は、SiYuan の ネットワーク 共有 機能 を 無効 に し、信頼 できない ユーザー が ノートブック 名 を 変更 できない よう に アクセス を 制限 して ください。また、Electron アプリケーション の セキュリティ 設定 と して、可能 で あれば nodeIntegration を 無効 に し contextIsolation を 有効 に する こと が 推奨 されます。
関連 リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説 は Claude API に より 自動生成 されています。正確性 に ついては 原文 を ご確認 ください。
