English version →
カテゴリ
CVE-2026-103001 medium CVSS 6.5

PyJWT の脆弱性 (CVE-2026-103001)

概要

PyJWT に 脆弱性 (CVE-2026-103001) が存在。データの不正な改ざんを許す可能性があります。options 経由で攻撃可能。

原文の説明

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

Summary

PyJWT.decode()/decode_complete() mutates a caller-supplied options dict in place whenever verify_signature is falsy, adding verify_exp/verify_nbf/verify_iat/verify_aud/verify_iss/verify_sub/verify_jti keys directly onto that object. If application code reuses the same options dict across calls (a config object, a module-level constant, a wrapper's self.options), a later call that explicitly sets verify_signature=True for a full, normal verification silently inherits the leftover verify_exp=False etc. from an earlier verify_signature=False call on the same object -- and accepts an expired, wrong-audience, wrong-issuer, or wrong-subject token as valid with no exception. Signature verification itself is unaffected; this is specifically a claims-check bypass.

This is a regression of an already-fixed, closed issue: originally reported in #679 (2021), fixed in #743 (2022, via a shallow copy of options), and silently reintroduced by #1045 (merged 2025-03-05, a typing/logic refactor that dropped the 2022 shallow-copy line). It has been present since #1045 merged, so it likely shipped in several releases already in the wild.

Details

File: jwt/api_jwt.py, PyJWT._merge_options() (called from decode_complete(), which backs both jwt.decode() and jwt.decode_complete()):

def _merge_options(self, options=None):
    if options is None:
        return self.options
    if not options.get("verify_signature", True):…

出典: NIST National Vulnerability Database NVD GitHub Advisory

自動生成の要約

取得元のデータ (CVSS・CWE・影響バージョンなど) から SecPulse が定型文で組み立てた要約です。AI は使っていません。正確な内容は下の原文と参照URLで確認してください。

PyJWT という製品で、CVE-2026-103001 という番号がついた弱点 (脆弱性) が見つかりました。
悪い人がインターネット越しに options のような特定の入り口を狙うことで、製品の中を不正に操作できてしまいます。
データの不正な改ざんを許す可能性があります。重要度は CVSS スコア 6.5/10 です。
対策: ベンダー公式の修正版に更新してください。
心配なら、システム担当者や製品の公式サイトで「PyJWT CVE-2026-103001」を検索してください。

CVE-2026-103001 (PyJWT) — CWE-471 / CVSS v3 6.5
攻撃ベクター: ネットワーク経由 (リモート攻撃可) / 認証不要 / 被害者操作不要
脆弱箇所: options / verify_signature / verify_exp / verify_nbf
対応方針: 1) SBOMで影響バージョン横断確認, 2) ステージング検証→本番更新, 3) WAF/プロキシで該当エンドポイントを監視, 4) ログでIOC調査。
参考: 当ページの『参照URL』の GHSA / vendor advisory / patched release を参照。

❓ 何が問題か

PyJWT に 脆弱性 (CWE-471) があります。攻撃者は options を経由して脆弱な処理に到達し、認証なしで悪用できます。

📍 影響範囲

PyJWT の影響バージョンはベンダーのアドバイザリで確認してください。攻撃箇所: options / verify_signature / verify_exp / verify_nbf。

🔥 重要度

重要度: 中 (CVSS 6.5/10)。データの不正な改ざんを許す可能性があります。

🔧 修正方法

ベンダー公式アドバイザリの修正版に更新してください。

🛡️ 暫定回避

修正版が未提供時は、影響機能の無効化・WAFルール・ネットワークACLでの遮断を検討。

🔍 検知方法

Webサーバ・プロキシ・WAFログで該当CVEのIOCに合致する不審リクエストを検索。SBOM/依存ファイルで影響バージョンを横断確認。

対応アクション

SOC/SREチームが順番に実行すべき具体的なステップとコマンド例

  1. 1
    影響範囲の特定 identify
    grep -r 'PyJWT' . | grep -v node_modules

    リポジトリと本番環境の依存ファイル (package-lock.json / requirements.txt / go.sum / Gemfile.lock 等) で PyJWT を grep し、稼働しているサービス・バージョンを把握する。

  2. 2
    事後検証 verify
    Confirm patched version is live in production

    パッチ適用後、ステージングで PoC または同等の悪用パターンを再現して脆弱性が閉じたことを確認。本番ではアクセスログ・WAF でアラート再発が無いか継続監視。

影響パッケージ

pip PyJWT
[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}]

参照URL

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