本文へ移動
English version →
高 9.1 急ぎ度: 早めに

SiYuanのログイン保護を回避される脆弱性、3.8.9で修正

SiYuan 2.1.0以上3.8.9未満で、アクセスコードのログイン画面にあるCAPTCHAを使い回され、総当たりで管理者セッションを得られる脆弱性が公表されました。ネットワークから到達できる環境で使っている組織は、3.8.9へ更新してください。

CVE-2026-126265 公開 更新 執筆・監修: 佐々木 航 人が監修しながらAIを活用して執筆
画像は生成 AI で作成したイメージです

急ぎ度: 早めに

CVSS v3は7.4、v4は9.1で、攻撃の難度は高めとされていますが、認証なしで管理者権限に届く内容で、修正版3.8.9がすでに出ています。

関係があるか

SiYuanをサーバーやコンテナーで動かし、アクセスコードのログイン画面にネットワークから到達できる組織が対象です。社内の共有ノートや手順書を置いている場合は影響が大きくなります。

製品影響を受ける版修正版
SiYuan(カーネル。Goモジュール名は github.com/siyuan-note/siyuan/kernel) 2.1.0以上3.8.9未満 3.8.9

確かめ方

  1. 1利用中のSiYuanの版を確認し、2.1.0以上3.8.9未満に当たるかを見ます。
  2. 2アクセスコードによるログインを有効にしているか、そのログイン画面にどこから到達できるか(インターネット、社内LAN、VPN内など)を、ポート公開やリバースプロキシの設定から確認します。
  3. 3Dockerで動かしている場合は、イメージのタグから版を確認します。

何が起きたか

SiYuanのアクセスコードによるログインには、誤入力が続くとCAPTCHAを求める追加の確認があります。この確認を一度解くと、そのまま使い回せてしまう脆弱性が見つかりました。突破されると、アクセスコードを総当たりで当てられ、管理者としてログインされる恐れがあります。

原因は、CAPTCHAの出題内容が、署名付きのクライアント側cookieに入っていることです。誤ったコードを送ると、サーバーは新しい出題を返してcookieを差し替えます。ところが、差し替え前の古いcookieも有効なままで、解答済みの状態を保っています。サーバー側に、使った出題を無効にする記録がありません。

弱点の種類はCWE-307(認証試行の回数制限が不十分)です。GitHubの勧告は重要度をHighとし、VulnCheckはCVSS v4の9.1に基づいてcriticalとしています。

攻撃の流れ

  1. 1

    ログイン画面に到達

    アクセスコードのログインと、CAPTCHAの取得は、どちらも認証なしで呼び出せます。

  2. 2

    CAPTCHAを一度解く

    誤入力が重なって求められたCAPTCHAに、一度だけ正しく答えます。

  3. 3

    古いcookieを使い回す

    差し替えられる前の署名付きcookieを使い続け、解答済みの状態を保ちます。

  4. 4

    コードを総当たり

    CAPTCHAに邪魔されないまま、アクセスコードの候補を試し続けます。

  5. 5

    管理者セッション獲得

    コードが一致すると、管理者権限が必要な機能を使えるセッションが成立します。

公開されている情報をもとにした流れの例です。

どう悪用されるか

認証は要りません。攻撃者は、アクセスコードのログイン画面にネットワーク経由で到達できればよく、利用者の操作も不要です。CVSSの評価では、攻撃の難度は高めとされています。アクセスコードそのものを当てる必要があるためです。

成功すると、管理者としてのセッションを得られます。機密性と完全性への影響が高いと評価されており、ノートの閲覧や書き換えにつながります。可用性への影響は評価されていません。

アクセスコードが短い、推測しやすいといった環境ほど、突破までの試行回数は少なくて済むでしょう。

今すぐやること

  1. 1

    使っている版を確認する

    SiYuanの版が2.1.0以上3.8.9未満かを確認します。コンテナー運用なら、イメージのタグを見ます。複数台ある場合は、台数ぶん洗い出します。

    docker images | grep -i siyuan
  2. 2

    3.8.9以上に更新する

    該当する環境は、修正版の3.8.9以上へ更新します。インターネットに公開している環境から先に行います。

  3. 3

    ログイン画面の到達範囲を絞る

    更新前でも、公開が不要ならネットワークから閉じます。必要な場合も、VPNや接続元IPの制限の内側に置きます。

  4. 4

    アクセスコードと痕跡を見直す

    更新と合わせて、長く推測されにくいアクセスコードに変えます。公開状態で運用していた期間があれば、短時間に大量のログイン失敗がなかったか、身に覚えのない管理操作がなかったかを、ログやリバースプロキシの記録から調べます。

  5. 5

    ベンダーの告知を確認する

    SiYuanのGitHubにあるセキュリティアドバイザリで、更新手順や追加の注意が出ていないかを確認します。

すぐ更新できないとき

修正版を当てられない間は、SiYuanのログイン画面をインターネットに出さず、VPNや接続元IPの制限、リバースプロキシでの認証など、別の入口の内側に置いてください。これは一般的なつなぎの対策で、この脆弱性を直すものではありません。アクセスコードを強くすると総当たりに時間はかかりますが、CAPTCHAの使い回しは防げません。

背景

SiYuanはオープンソースのノート・ナレッジ管理ツールで、手元のアプリとして使うほか、サーバーやコンテナーで動かしてブラウザーから使う運用もできます。後者では、アクセスコードのログイン画面が入口になります。ここを破られると、社内の手順書、設計メモ、認証情報の控えなど、ノートに置いたものがまとめて読み書きされるおそれがあります。

今回の問題は、回数制限を補うCAPTCHAの状態を、サーバーではなくクライアント側のcookieに持たせたことにあります。署名があるので改ざんはできませんが、古いcookieを無効にする仕組みがなく、署名付きでも使い回しは防げませんでした。誤入力のたびにCAPTCHAを差し替える設計だったからこそ、差し替え前のcookieが残ることが抜け道になりました。

よくある質問

Q.GitHubはHigh、VulnCheckはcriticalと書いています。どちらで判断すればよいですか。
A.採点方式の違いです。CVSS v3.1では7.4、v4では9.1が付いています。ログイン画面を外部に公開しているかどうかで、急ぎ度を決めてください。公開しているなら、v4の評価に沿って優先して対応するのが妥当でしょう。
Q.アクセスコードを長くすれば、更新しなくても安全ですか。
A.安全にはなりません。長いコードは総当たりに時間がかかるだけで、CAPTCHAを使い回せる欠陥は残ります。更新を前提に、コードの見直しは併せて行ってください。

この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。

影響パッケージ

パッケージ影響を受ける版 → 修正版
siyuan-notesiyuan
2.1.0 以上 3.8.9 未満→ 3.8.9
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

SiYuan 2.1.0 before 3.8.9 contains a flaw where the loginAuth CAPTCHA challenge lives in a signed client-side cookie, allowing reuse of a solved challenge. Attackers can replay the original signed siyuan cookie with distinct wrong access codes to brute-force the code and gain an administrator session.

出典: CVE.org (CVE Program・cvelistV5) NVD

参照URL

当サイトでは、アクセス解析と広告の効果測定のために Cookie を使います。株式会社Game のサイト共通の設定です。 詳しく