概要
auth0.js ライブラリのバージョン < 9.0.0、または Lock ライブラリのバージョン < 11.0.0 を使用しているアプリケーションが動作しなくなる可能性があります。さらに、これらのライブラリ以外で /usernamepassword/login Authentication API エンドポイントをクロスドメインで使用している場合も、影響を受ける可能性があります。
/usernamepassword/login でユーザーの認証情報が検証されると、HTML フォームがユーザーのブラウザーにレンダリングされ、自動的に実行されます。このフォームは、/login/callback エンドポイントに (JWT) を POST します。この認証済みトークンは、ユーザーの identity に関する state を維持します。これは、多くの最新ブラウザーにあるクロスドメインのセッション管理の制限により、直接行うことができません。セッションバインディングがないため、このフォーム POST は CSRF の影響を受けます。Auth0 テナントで有効なユーザーの認証情報を持つ攻撃者は、それを使ってこのようなフォームを取得し、さらにソーシャルエンジニアリングやクリックジャッキングなどの手法を用いて、被害者のブラウザーに実行させることができます。すると被害者は、その Auth0 テナントにおいて攻撃者のアカウントでログインセッションを持つことになり、そのフェデレーション内の下流アプリケーションから攻撃者として認識されます。ユーザーがこのように不正にログインさせられた状態で何らかの操作を行った場合、それらの操作と関連情報は攻撃者から見えるようになります。
この攻撃によって攻撃者の権限が昇格することはなく、攻撃者から見える被害者の操作も、その攻撃者にシステム内で付与されている permissions の範囲に制限されます。また、被害者はフェデレーション内で完全に攻撃者として認識されるため、自分自身のアカウントとして操作していないことを示すアカウント情報や、そのほかの状況的な手がかりが表示される可能性があります。
影響を受けますか?
それを修正するにはどうすればよいですか?
/usernamepassword/login エンドポイントは、/login でホストされる ページからのログインでは引き続き機能しますが、これらは同一ドメインのログインであるため、CSRF から保護されます。一方、このフラグを切り替えると、そのエンドポイントでのクロスドメイン認証は無効になります。
auth0.js version < 9.0.0 または Lock version < 11.0.0 を使用しているアプリケーションでは、これによってユーザーがログインできなくなる可能性があります。auth0.js version > 9.0.0 または Lock version > 11.0.0 にアップグレードすると、クロスオリジン認証を使用する埋め込み型の username/password 認証が再び利用可能になります (制限事項がある点に注意してください) 。また、アプリケーションは Universal Login への移行も推奨されます。
レガシー Lock API フラグが off に設定されている version > 14591 の Private SaaS Appliances は、この脆弱性の影響を受けません。