JWT の署名検証不備はどのように認証回避につながるのか
診断で繰り返し見つかる JWT 実装の不備と、攻撃者がそれを足がかりに権限を広げていく流れを整理します。
JWT(JSON Web Token)はログイン状態の受け渡しに広く使われていますが、署名の検証方法を誤ると、攻撃者が任意のユーザーになりすませるようになります。
よく見られる不備
- alg ヘッダーの値をそのまま信頼し、none や想定外のアルゴリズムを受け入れてしまう
- 推測しやすい共通鍵を署名に使っている
- 署名を検証せずにペイロードだけをデコードして利用している
被害が広がる流れ
認証を回避できると、ユーザー ID を差し替えて他人のデータを読み取る IDOR など、別の弱点と組み合わされることで影響が大きくなります。単体の脆弱性ではなく、攻撃経路として評価することが重要です。
対策
- サーバー側で許可するアルゴリズムを固定する
- 十分な長さの鍵を使い、定期的にローテーションする
- 検証済みのライブラリを使い、署名検証を必ず通す