DEV Community 日本語
フォロー
CVE-2026-61500: ログインせずにHFS管理セッションを偽造する
Rejetto HFS バージョン 3.0.0 から 3.2.0 には、認証されていない攻撃者が管理者セッションを偽造できる重大な脆弱性が含まれています。このエクスプロイトにより、サーバー上で任意のコードを実行できます。根本原因は、セキュリティ上重要な操作に JavaScript の Math.random() が使用されていることです。具体的には、クッキー署名キーとログインハンドシェイク識別子の両方に使用されており、これらは暗号学的に脆弱です。V8 の Math.random() は決定論的な xorshift128+ アルゴリズムです。ログインハンドシェイク識別子からの Math.random() の複数の出力を観察することで、攻撃者は PRNG の内部状態をリバースエンジニアリングできます。これにより、過去および将来のすべての出力を予測できます。PRNG の状態がわかれば、攻撃者はサーバー起動時に生成されたクッキー署名キーを復元できます。署名キーを取得すると、攻撃者は管理者セッションクッキーを偽造できます。この偽造されたクッキーは、サーバーコード設定を含む管理機能へのアクセスを許可します。悪意のあるサーバーコードスニペットを設定することにより、攻撃者はルート権限でリモートコード実行を達成します。攻撃チェーン全体は、HTTP インタラクションを通じてサーバーの内部状態をブラックボックスで再構築するものです。この脆弱性は Horizon3.ai の Zach Hanley によって発見され、その後すぐにエクスプロイトが開始されました。修正には、安全でない Math.random() を Node の crypto モジュールからの暗号学的に安全なプリミティブに置き換えることが含まれます。これには、クッキー署名キーに randomBytes を、セッション識別子に randomUUID を使用することが含まれます。この教訓は、たとえ一時的なものに見えるものであっても、セキュリティ上重要な値には暗号学的に安全な疑似乱数生成器が必要であることを強調しています。