hack the box ~魔法使いへの道~ (その16) Algorithm confusion attacks

htb

はじめに

HTBでUnderConstructionをやっていたところ,JWTなる言葉がでてきましたので,JWTの勉強をしていきます.

前回は認証用のトークンの種類*1や,対称性JWTと非対称性JWTを*2少し深堀りしていました.

今回はJWTを騙す「Algorithm confusion attacks」について見ていきたいと思います.

Algorithm confusion attacks

わかりやすいこちらのサイト*3にはこう記載があります.

Algorithm confusion attacks (also known as key confusion attacks) occur when an attacker is able to force the server to verify the signature of a JSON web token (JWT) using a different algorithm than is intended by the website's developers. If this case isn't handled properly, this may enable attackers to forge valid JWTs containing arbitrary values without needing to know the server's secret signing key.

日本語訳はこちら

アルゴリズム混乱攻撃(別名、鍵混乱攻撃)は、攻撃者がウェブサイトの開発者が意図したものとは異なるアルゴリズムを用いて、JSONウェブトークン(JWT)の署名をサーバーに検証させることができる場合に発生します。このケースが適切に処理されないと、攻撃者はサーバーの秘密の署名鍵を知らなくても、任意の値を含む有効なJWTを偽造できる可能性があります。

つまり,通常は鍵を持っていないと認証を上書きできませんが,これを使えば認証を上書きすることができ,自分の都合がよい情報を送りつけることができます.

なぜ発生するのか?

How do algorithm confusion vulnerabilities arise?
Algorithm confusion vulnerabilities typically arise due to flawed implementation of JWT libraries. Although the actual verification process differs depending on the algorithm used, many libraries provide a single, algorithm-agnostic method for verifying signatures. These methods rely on the alg parameter in the token's header to determine the type of verification they should perform.

日本語訳はこちら

アルゴリズム混同の脆弱性はどのように発生するのか?
アルゴリズム混同の脆弱性は、一般的にJWTライブラリの実装に不備があるために発生します。実際の検証プロセスは使用するアルゴリズムによって異なりますが、多くのライブラリは署名検証のためにアルゴリズムに依存しない単一の方法を提供しています。これらのメソッドは、トークンのヘッダーのalgパラメータに依存して、実行すべき検証の種類を決定します。

つまり,algパラメータを変更することができればJWTの対称性,非対称性などを変更可能であるということです.

Algorithm confusion attacksの概要

上記のことを踏まえた上でデータを改竄しようとした場合,正しいプロセスでは署名を検証する際に使われる公開鍵を使用します.
ヘッダーを対称鍵に変更した上で公開鍵を使って再度署名します.これによりデータの改竄を可能にします.

おわりに

今回は,JWTを騙す「Algorithm confusion attacks」について見ていきました.
次回はunder constructionの解き方に戻っていこうと思います.

参考サイト

1:hack the box ~魔法使いへの道~ (その14) JWTとは
2:hack the box ~魔法使いへの道~ (その15) 対称性JWTと非対称性JWT
*3:Algorithm confusion attacks

コメント

タイトルとURLをコピーしました