30秒で判断
対応すべき人:
- Python ライブラリ
authlibのバージョン 1.6.9 未満を使用中 - かつ JWS デシリアライズ関数に
key=Noneを渡している実装がある
対応不要な人:
- authlib 1.6.9 以降を使用中
- authlib を使用していない
- JWS デシリアライズ時に常に明示的なキーオブジェクトを渡している
確認コマンド:
pip show authlib | grep Version
# key=None を渡しているコードを確認
grep -r "key=None" your_project/
概要
Python OAuth/OpenID Connect ライブラリ Authlib の JWS 実装に JWK ヘッダーインジェクション脆弱性が報告されました(CVE-2026-27962、CVSS 9.1)。
JWS のデシリアライズ関数に key=None を渡した場合、ライブラリは攻撃者が制御するJWTの jwk ヘッダーフィールドからクリプトグラフィックキーを抽出・使用してしまいます。攻撃者は自身の秘密鍵でトークンに署名し、対応する公開鍵をJWTヘッダーに埋め込むことで、サーバーがそのトークンを「正当に署名された」ものとして受理するようになります。
これにより認証・認可をバイパスした任意のJWTトークンの偽造が可能となります。
なお、同じAuthlib絡みの脆弱性として CVE-2026-28802(alg:none バイパス、CVSS 9.8)も同時期に報告されています。両方の修正版を適用することを推奨します。
CVSSベクトル
| 属性 | 値 |
|---|---|
| Attack Vector | Network(ネットワーク) |
| Attack Complexity | Low |
| Privileges Required | None(認証不要) |
| User Interaction | None |
| Scope | Unchanged |
| Confidentiality | High |
| Integrity | High |
| Availability | None |
影響を受けるソフトウェア
| 製品 | 影響バージョン | 修正バージョン |
|---|---|---|
| authlib (PyPI) | < 1.6.9 | 1.6.9 |
修正バージョンと回避策
推奨: 1.6.9 へのアップデート
pip install --upgrade authlib
# バージョン確認
pip show authlib | grep Version
コードレベルの回避策
JWS デシリアライズ時に key=None を渡さず、常に明示的なキーオブジェクトを渡すように実装を変更することで影響を軽減できます:
# NG: key=None を渡すケース
JsonWebSignature().deserialize_compact(token, key=None)
# OK: 明示的なキーを渡す
JsonWebSignature().deserialize_compact(token, public_key)
関連リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
