JSON Web トークン(JWT)は、セキュアなデータ交換を可能にします。JWT は署名と検証が可能であるため、通常、認証手段を提供するために使用されます。残念ながら、その実装方法によっては、JWT も攻撃者にとって価値のある標的となる可能性があります。
しかし幸いなことに、ある程度の洞察を得て事前に計画することで、JWT を適切に保護することができます。JWT の強化を容易にするため、BlackBerry Security Research Group の Fraser Winterborn は最近、簡単に使える新しいツールを作成して公開しました。しかも無料です。
JWT Editor と名付けられたこのツールは、Burp Suite の拡張機能として、さらにはスタンドアロンのアプリケーションとして機能します。このツールを使用すれば、JWT を編集、署名、検証することも、暗号化したり復号したりすることも可能です。
Burp Suite 内から動作する JWT Editor は、HTTP 要求および応答内の JWT トークンを自動的に検出し、インライン編集機能を提供します。JWT Editor は、セキュリティチームが JWT の利用を強化するのに役立つ自動化も提供します。
スタンドアロンアプリケーションとして動作する JWT Editor は、Burp Suite 内から使用する場合と同じ機能をすべて有効にしますが、さらにローカル(またはオフライン)の JWT を JWT Editor に挿入することも可能にします。コマンドラインオプションを使えば、PEM 形式の公開鍵と秘密鍵を JWK 形式に変換できます。
「none」署名アルゴリズム
JWT Editor は、JSON Web Signature(JWS)に対する 3 つのよくある攻撃の対応を自動化します。1 つ目は「none」署名アルゴリズム攻撃です。この攻撃では、JWS 標準を利用し、「none」を承認された署名アルゴリズムとして使用できるようにします。この署名アルゴリズムは、JWS の有効性がその他の方法で既に確立されている場合にのみ使用されることになっています。残念ながら、一部のライブラリはこれを有効な署名と見なします。JWT Editor は、JWS からの署名値の削除を自動化します。
HMAC キーの混同
JWT Editor が対応する 2 つ目の攻撃は、HMAC キーの混同です。JWS 内の各アルゴリズムには、特定のキーの種類の要件があるため、一部の実装では、JWS ヘッダーの情報が指定されたキーの種類のアルゴリズムと異なる場合があります。この攻撃は、攻撃者がサーバーによって受け入れられる署名を偽造することを可能にします。
埋め込み JWK 攻撃
最後に、このツールは埋め込まれた JWK 攻撃を防止するのに役立ちます。JWS はヘッダー内に "jwk" フィールドを定義します。このフィールドは受信者に公開鍵を送信するために使用されます。ほとんどの場合、これは問題ありませんが、このフィールドがライブラリの実装により署名検証のソースキーとして誤って使用される可能性があります。攻撃者は新しいキーを作成することで、それを検証のためにヘッダー内に埋め込み、JWS ペイロードに署名した後、悪意のある目的に使用できる JWT ペイロードを作成できます。
JWT Editor には、生成されたキーを変換するコマンドラインインターフェイスも備わっています。
BlackBerry Product Security における職務の一環として、私たちは製品を保護する方法を進化させることに挑戦し続けています。今回、当社の製品とお客様をサポートする能力を向上させるツールを開発するとともに、業界全体に役立つツールを提供する素晴らしい機会を持つことができました。
JWT Editor は、こちらの PortSwigger の Web サイトからダウンロードできます。