
Json Web Token (JWT) ライブラリに対するアルゴリズム混乱攻撃のデモンストレーション。JWT
はユーザーセッションを証明するためにクッキーでよく使用されるため、この攻撃は重大です。node
モジュール [email protected] がこの脆弱性の実証に使用されました。
このプロジェクトは、フロントエンドがAPI呼び出し以外はほぼすべてLLMで作成された、 楽しいバイブスコーディング活動でもありました。
JWTの形式は次のとおりです:
b64(header).b64(payload).b64(signature)
With in our case:
header = (algorithm, type)
payload = (username, role)
当時、さまざまなJWTライブラリはアルゴリズムで署名できましたが、アルゴリズムを強制せず、 JWTのヘッダーの内容に依存していたため、ユーザーが自身の暗号化方式を決定できました。これに より多くの悪用が可能になりますが、このケースで使用されたものは次のとおりです:
ログインページで任意のユーザーとして認証します。最初に登録する必要があります。
ホームページに移動すると、有効なadminセッションを持っている場合にのみクリックできるボタンが あります。次に、このJWTを偽造するためにエクスプロイトを実行する必要があります。
最後に、ローカルストレージ内の元のJWTを偽造したJWTと置き換えます。リフレッシュ後、 ボタンがクリック可能になり、フラグはあなたのものになります!