概要
SiYuan は ローカル ファースト の 個人 ナレッジ マネジメント システム で あり、Bazaar と 呼ばれる パッケージ マーケットプレイス を 通じて テーマ や テンプレート の 配布 を 行って います。バージョン 3.6.0 以前 に おいて、Bazaar ページ で の パッケージ メタデータ レンダリング に クロスサイト スクリプティング(CWE-79)の 脆弱性 が 存在 します。この 脆弱性 は CVSS スコア 9.0 の Critical と 評価 されます。
問題 の 根本原因 は、パッケージ の メタデータ フィールド、特に displayName と description が テンプレート リテラル を 使って HTML 文字列 に 埋め込まれる 際 に、HTML エスケープ 処理 が 行われて いない 点 です。悪意 の ある パッケージ 作者 が これら の フィールド に HTML タグ や JavaScript コード を 含める こと で、Bazaar ページ を 閲覧 した すべて の ユーザー の ブラウザ 上 で 任意 の スクリプト が 実行 されます。
この 攻撃 の 特徴 は、ユーザー の インタラクション が ほぼ 不要 で ある 点 です。ユーザー が Bazaar タブ を 開く だけ で 攻撃 が トリガー され、パッケージ を クリック したり インストール したり する 必要 は ありません。マーケットプレイス の 一覧 ページ に パッケージ メタデータ が 表示 される 時点 で 悪意 の ある コード が 実行 されます。
SiYuan は Electron フレームワーク を 使用 して おり、nodeIntegration: true の 設定 で 動作 する ため、ブラウザ コンテキスト で の JavaScript 実行 は 直ちに Node.js API へ の アクセス を 意味 します。攻撃者 は ファイル の 読み書き、システム コマンド の 実行、ユーザー の ノート データ の 窃取 など、ホスト マシン 上 で 完全 な 権限 で 操作 を 行う こと が 可能 です。これ は ゼロ クリック に 近い 攻撃 シナリオ で あり、影響 範囲 は Bazaar を 利用 する 全 ユーザー に 及びます。
CVSS ベクトル
| 項目 | 値 |
|---|---|
| CVSS スコア | 9.0 |
| 深刻度 | Critical |
| CWE | CWE-79(クロスサイト スクリプティング) |
| 攻撃元 | ネットワーク |
| 影響 | 機密性 高 / 完全性 高 / 可用性 高 |
影響 を 受ける ソフトウェア
| 製品 | 影響 バージョン | 修正 バージョン |
|---|---|---|
| SiYuan | 3.6.0 以前 | 3.6.1 |
修正 バージョン と 回避策
SiYuan バージョン 3.6.1 に アップデート する こと で、パッケージ メタデータ の レンダリング 時 に 適切 な HTML エスケープ が 適用 されます。テンプレート リテラル へ の 直接 埋め込み が 修正 され、ユーザー 制御 の 文字列 が 安全 に エスケープ されます。すぐ に アップデート できない 場合 は、SiYuan の Bazaar ページ へ の アクセス を 控え、パッケージ の インストール は コマンドライン や 手動 ダウンロード で 行う こと を 検討 して ください。ネットワーク レベル で Bazaar の バックエンド API へ の 通信 を 遮断 する こと も 暫定 的 な 対策 と なります。
関連 リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説 は Claude API に より 自動生成 されています。正確性 に ついては 原文 を ご確認 ください。
