Better Auth API keys Vulnerability Let Attackers Create Privileged Credentials For Arbitrary Users
2025/10/21 CyberSecurityNews — 人気の TypeScript 認証フレームワーク Better-Auth の API キー・プラグインに、深刻な脆弱性 CVE-2025-61928 が発見された。この脆弱性が影響を及ぼす範囲は、npm で週に約 30 万回もダウンロードされている Better-Auth の API キー・プラグイン導入環境である。悪用に成功した攻撃者は認証を必要とせずに、任意のユーザーに対して特権認証情報を付与できるようになる。

この脆弱性の影響が顕著なのは、自動アクセスに API キーを使用するアプリケーションであるため、広範なアカウント侵害につながる恐れがある。Better-Auth は、エネルギー大手 Equinor などの急成長中のスタートアップや大企業の認証を支えている。そのプラグイン・アーキテクチャにより、API キー管理などの機能の追加が容易である一方で、認証ロジックには悪用が可能な微妙なバグが存在していた。
ZeroPath がサードパーティ依存関係のスキャン中に発見した、この脆弱性が浮き彫りにするのは、アプリケーション・エコシステム全体を支える認証ライブラリのリスクである。
Better-Auth API キーの脆弱性
この脆弱性は、プラグイン内の createApiKey ハンドラーに存在する。通常において、このハンドラーはアクティブなセッションからユーザー・コンテキストを導出してセキュリティ・チェックを適用する。
しかし、リクエストにセッションが存在せず、ボディに userId が含まれる場合には、コードが authRequired フラグを false に設定するため、重要な検証がスキップされてしまう。したがって、このハンドラーは、攻撃者が送信したデータに対して、ユーザー・オブジェクトの偽装を許すことになる。
その結果として未認証の攻撃者は、ターゲットユーザーの ID/name/レート制限/権限といった任意の特権フィールドを用いて、”/api/auth/api-key/create” エンドポイントへ POST を送信できる。
そのレスポンスとして、被害者アカウントに紐付いた有効な API キーが返されるため、多要素認証の回避とスクリプトによる乗っ取りが可能になる。なお、同様のロジックは更新用エンドポイントにも影響するため、さらにリスクが増大する。
自動化のための API キーは、長期間にわたり昇格された権限を保持することが多いため、この脆弱性は極めて危険である。攻撃者が自動化するものには、ユーザーなりすまし/機密データへのアクセス/サービス全体での悪意などがあるという。
この攻撃のターゲットは、API キー・プラグインを導入している環境に限られるが、Better-Auth の普及状況を考慮すると、その影響の範囲は広大である。対策として強く推奨されるのは、問題のある認証チェックを修正した Better-Auth バージョン 1.3.26 以降へと、直ちにアップグレードすることだ。
さらに、プラグイン経由で作成された、すべての API キーをローテーションし、未使用の API キーを無効化することも推奨される。また、”/api/auth/api-key/create” および更新エンドポイントに対する未認証のリクエストを、特にユーザー ID や高い権限を持つリクエストを、監査ログで確認する必要がある。
すでに Better-Auth の開発者は、10月2日の時点で修正パッチを適用している。10月8日にアドバイザリ (GHSA-99h5-pjcv-gr6v) が GitHub で公開され、その翌日に CVE が割り当てられた。
Better-Auth の API キー用プラグインのcreateApiKey処理において、セッションが無いときに userId を渡された場合に authRequired=false となり、認可チェックが丸ごとバイパスされるという問題があります。そのため、未認証のリクエストであっても任意のユーザーとして API キーの発行が生じ、権限やレート制限などの特権属性の偽装も可能になります。長寿命の API キーを前提とする自動化環境では、影響が広がりやすい点が厄介だと、この記事は指摘しています。ご利用のチームは、ご注意ください。よろしければ、カテゴリ API を、ご参照ください。
You must be logged in to post a comment.