概要
SiYuan は 個人 向け の ナレッジ マネジメント システム であり、Markdown ベース の ノート 管理 と 双方向 リンク 機能 を 特徴 と する オープンソース ソフトウェア です。ローカル で SQLite データベース を 使用 して コンテンツ の 全文検索 機能 を 提供 して います。
この 脆弱性 は /api/search/fullTextSearchBlock エンドポイント に 存在 する SQL インジェクション です。検索 パラメータ の method に 値 2 を 指定 した 場合、ユーザー が 入力 した 検索 文字列 が サニタイズ や パラメータ バインディング を 経ず に、そのまま 生 の SQL 文 として データベース エンジン に 渡されて しまいます。
さらに この エンドポイント には 認可 チェック や 読み取り 専用 制約 が 適用 されて おらず、Reader ロール を 含む 全て の 認証済み ユーザー が 任意 の SQL 文 を 実行 できます。CWE-89(SQL インジェクション)および CWE-863(不正 な 認可)の 複合 的 な 脆弱性 であり、CVSS スコア 9.8 と 極めて 深刻 な 問題 です。
技術的 背景
SQL インジェクション(CWE-89)は Web アプリケーション における 最も 代表的 な 脆弱性 の 一つ であり、OWASP Top 10 に おいて も 長年 に わたり 上位 に ランク されて いる 攻撃 手法 です。ユーザー 入力 を 適切 に エスケープ または パラメータ化 せず に SQL クエリ に 組み込む こと で、攻撃者 が データベース に 対して 意図 しない 操作 を 実行 できて しまいます。
SiYuan の 場合、通常 の 全文検索(method=0 や method=1)では FTS(Full-Text Search)エンジン を 使用 して おり、ユーザー 入力 は 検索 トークン として 安全 に 処理 されます。しかし method=2 の 場合 は 開発者 向け の 高度 な 検索 モード として、入力 を そのまま SQL 文 として 実行 する 仕様 と なって いました。この 設計 は 開発 や デバッグ の 便宜 の ため に 実装 された もの と 考えられ ますが、運用 環境 に おいて は 深刻 な セキュリティ リスク を もたらします。
不正 な 認可(CWE-863)の 観点 から は、Reader ロール は 本来 コンテンツ の 閲覧 のみ が 許可 される べき 権限 レベル です。しかし この エンドポイント では ロール に 基づく アクセス制御 が 実装 されて おらず、Reader 権限 の ユーザー で あって も INSERT、UPDATE、DELETE、DROP 等 の 破壊的 な SQL 操作 を 実行 できて しまう 状態 でした。
SQLite を バックエンド と して 使用 する アプリケーション では、SQL インジェクション に より データベース 内 の 全 データ の 読み取り、改ざん、削除 が 可能 と なります。SiYuan の よう な ナレッジ マネジメント ツール に おいて は、ユーザー の メモ、日記、研究 ノート 等 の 機密性 の 高い 個人 情報 が 漏洩 する リスク が あります。
CVSS ベクトル
| 項目 | 値 |
|---|---|
| CVSS スコア | 9.8 |
| 深刻度 | Critical |
| CWE | CWE-89(SQLインジェクション)、CWE-863(不正な認可) |
| 攻撃元区分 | ネットワーク |
| 攻撃条件 の 複雑さ | 低 |
| 必要 な 権限 | 不要 |
| ユーザー 操作 | 不要 |
影響 を 受ける ソフトウェア
| 製品 | 影響 バージョン | 修正 バージョン |
|---|---|---|
| SiYuan | 3.6.0 以下 | 3.6.1 |
修正 バージョン と 回避策
SiYuan 3.6.1 で この 脆弱性 は 修正 されて います。3.6.0 以下 を 使用 して いる ユーザー は 直ちに 3.6.1 以降 へ アップデート して ください。アップデート まで の 暫定 的 な 回避策 として、SiYuan の API サーバー へ の 外部 から の アクセス を ネットワーク レベル で 制限 する こと を 推奨 します。また、ネットワーク 共有 機能 を 使用 して いる 場合 は 一時的 に 無効 に する こと で、リモート から の 攻撃 リスク を 軽減 できます。マルチ ユーザー 環境 で は Reader ロール の ユーザー アカウント の アクティビティ ログ を 確認 し、不審 な API アクセス が なかった か 監査 する こと も 重要 です。
関連 リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説 は Claude API に より 自動生成 されています。正確性 に ついては 原文 を ご確認 ください。
