本文へ移動
English version →
重大 9.8 急ぎ度: 至急

AstroBlocksに管理者なりすまし脆弱性、3.4.0で修正

AstroBlocksの3.4.0より前では、第三者が管理者のセッショントークンを偽造し、CMSを丸ごと操作できます。3.4.0に更新して署名用のシークレットを設定し、不審な管理操作がないかも調べてください。

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

急ぎ度: 至急

CVSS v3は9.8で、認証なしにネットワーク経由で管理者権限を取られうる一方、修正版の3.4.0がすでに公開されているためです。

関係があるか

AstroのサイトにAstroBlocksを組み込み、管理画面を本番環境やステージング環境に公開している組織が対象です。公式ドキュメントのとおりに認証を設定した環境も含まれます。

製品影響を受ける版修正版
@astroblocks/astro-blocks(npm) 3.4.0より前のすべての版。認証機能が入った0.3.0以降で、最新の影響版は3.3.2 3.4.0

確かめ方

  1. 1package.jsonとロックファイルで@astroblocks/astro-blocksの版を確認します。3.4.0未満なら次の確認に進みます。
  2. 2稼働中の環境にCMS_JWT_SECRETが設定されているかを確認します。3.4.0未満が読むのはこの名前だけです。未設定なら、公開パッケージに含まれる固定値で署名と検証が行われています。
  3. 3ASTRO_BLOCKS_JWT_SECRETだけを設定している場合も該当します。ドキュメントはこちらの名前を案内していましたが、3.4.0未満のコードは読んでいませんでした。

何が起きたか

AstroBlocksの管理画面に、管理者(owner)のセッショントークンを第三者が偽造できる脆弱性があります。偽造されたトークンは正規のものとして通り、コンテンツ、ユーザー、メディア、リダイレクト、設定を作成・削除できてしまいます。

原因は、トークンの署名に使うシークレットの扱いにあります。シークレットが未設定のとき、3.4.0より前のサーバーは固定の値で署名と検証を行います。この固定値はnpmで配布されるパッケージのソースに入っており、誰でも読めます。

さらに、コードがシークレットを読む環境変数はCMS_JWT_SECRETでしたが、README.mdとAGENTS.consumer.mdはASTRO_BLOCKS_JWT_SECRETを設定するよう案内していました。ドキュメントのとおりに設定した運用者ほど、気づかないまま公開の固定値で動かしていた可能性があります。弱点の種類はCWE-321(ハードコードされた暗号鍵の使用)とCWE-798(ハードコードされた認証情報の使用)です。

修正を取り込んだPull Requestは2026年7月2日にマージされ、GitHubの勧告も同日付です。CVEの公表は11月11日でした。依存パッケージを定期的に更新している環境なら、すでに3.4.0以降になっているかもしれません。

攻撃の流れ

  1. 1

    固定値の入手

    公開されているパッケージのソースから、シークレット未設定時に使われる固定値を読み取ります。

  2. 2

    トークンの偽造

    その固定値で署名し、ownerの役割を持つセッショントークンを作ります。

  3. 3

    管理機能へ提示

    偽造したトークンを管理機能に示すと、サーバーは正規の管理者として扱います。

  4. 4

    CMSの掌握

    コンテンツ、ユーザー、メディア、リダイレクト、設定を作成・削除できる状態になります。

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

どう悪用されるか

攻撃者はログイン情報を持っている必要がなく、利用者の操作も要りません。管理画面にネットワーク経由で到達できれば成立します。CVSSの攻撃条件の複雑さは低で、必要な知識は、パッケージから読める固定値だけです。

成功すると、CMSの管理権限をすべて握られます。機密性、完全性、可用性の影響はいずれも高です。公開サイトの内容やリダイレクトも書き換えられるため、サイトの閲覧者にも影響が及びえます。

今すぐやること

  1. 1

    導入している版を確認する

    ステージング環境や過去に作ったサイトも含め、AstroBlocksを使うプロジェクトを洗い出し、版が3.4.0未満かどうかを確認します。

    npm ls @astroblocks/astro-blocks
  2. 2

    3.4.0以降に更新し、シークレットを設定する

    修正版に更新し、ASTRO_BLOCKS_JWT_SECRETに32文字以上のランダムな値を新しく生成して設定します。3.4.0の本番ビルドは、シークレットが未設定だと管理画面のログインが503を返して使えなくなります。公開サイトの表示は止まりません。古い版の時期に偽造されたトークンを無効にするため、以前使った値の使い回しは避けます。

  3. 3

    不審な管理操作の跡を調べる

    見覚えのないユーザー、特にownerの役割を持つアカウントがないかを確認します。コンテンツ、メディア、リダイレクト、設定に身に覚えのない変更がないかも見ます。管理機能へのアクセスログがあれば、通常と違う接続元からの操作を探します。

  4. 4

    未設定のまま公開している環境を残さない

    更新が遅れる環境があれば、下記の回避策を先に適用します。管理画面を社内ネットワークやVPNからだけ到達できるようにしておくと、更新までの間の露出を減らせます。

すぐ更新できないとき

3.4.0未満のまま運用を続ける場合は、3.4.0未満が実際に読む環境変数のCMS_JWT_SECRETに、32文字以上のランダムな強い値を設定します。値を変えると、偽造された可能性のあるトークンも無効になります。ASTRO_BLOCKS_JWT_SECRETを設定しても3.4.0未満では読まれないため、回避策になりません。あくまで更新までのつなぎで、3.4.0以降への更新が推奨されています。

背景

AstroBlocksは、Astroのプロジェクトに組み込むブロック型のCMSです。記事などのコンテンツに加えて、ユーザー、メディア、リダイレクト、設定を管理画面から扱います。認証は0.3.0で導入されました。管理者のトークンの署名に使う鍵が固定値に落ちる状態は、その管理画面の入口を無効にするのと変わりません。

修正の過程で、ドキュメントにも食い違いが見つかりました。ASTRO_BLOCKS_ADMIN_USERとASTRO_BLOCKS_ADMIN_PASSWORDという変数は案内されていましたが、コードは一度も読んでいませんでした。実際には、管理者アカウントは初回ログイン時に作られます。トークンもhttpOnlyのCookieではなく、Bearerヘッダーで扱われます。READMEとAGENTS.consumer.mdはこれらを訂正済みです。設定したはずの値が効いていなかった可能性があるため、環境変数が実際に読まれているかも見直す価値があります。

よくある質問

Q.管理者のパスワードを強くしていれば防げますか。
A.防げません。この脆弱性では、ログインを経由せずにトークンそのものが偽造されます。決め手になるのはパスワードの強さではなく、署名用のシークレットが固定値のままかどうかです。
Q.更新後もCMS_JWT_SECRETのままで問題ありませんか。
A.3.4.0はCMS_JWT_SECRETを旧名の別名として受け付けますが、非推奨で警告が出ます。今後の版で扱いが変わる可能性もあるため、ASTRO_BLOCKS_JWT_SECRETに移しておくのが安全です。

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

原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

AstroBlocks is a block-first CMS for Astro projects. Prior to version 3.4.0, admin session tokens can be forged due to a hard-coded fallback JWT secret and a mismatched environment variable name. An attacker who knows the public fallback value (readable in the published package) can forge a valid session token with role: "owner" and obtain full administrative control of the CMS — creating/deleting content, users, media, redirects, and configuration. This issue has been patched in version 3.4.0.

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

参照URL

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