CVE-2019-20174:Auth0 Lockライブラリーのセキュリティ更新
公開日:2020年1月30日
CVE番号:CVE-2019-20174
著者:Muhamad Visat
概要
Auth0 Lockバージョン11.20.4以前は、生成されたHTMLコードを適切にサニタイズしませんでした。additionalSignUpFields
のカスタマイズオプションを使用してサインアップダイアログにチェックボックスを追加しており、これが信頼できないソースから取得したplaceholder
プロパティ(クエリパラメーターなど)を渡している場合、サインアップページにクロスサイトスクリプティング(XSS)を許してしまう可能性があります。
自分は影響を受けますか?
以下の条件がすべて当てはまる場合には、この脆弱性の影響を受けます。
Auth0 Lockバージョン11.20.4以前を使用している。
Lockを初期化するときにオプションとして
additionalSignUpFields
を渡しており、これに信頼できないソースから取得したplaceholder
値のあるcheckbox
タイプのフィールドが含まれている。
以下は脆弱なスニペットの例で、placeholder
値がname
クエリパラメーターによって部分的にユーザーに制御されています。
<script>
var params = new URLSearchParams(window.location.search);
var options = {
auth: {
redirectUrl: 'http://localhost:12345/callback',
responseType: 'code',
params: {
scope: 'openid email',
},
},
additionalSignUpFields: [{
name: 'agree',
type: 'checkbox',
placeholder: "I agree to Terms & Conditions for " + params.get('name'),
}],
};
var lock = new Auth0Lock('<CLIENT_ID>', '<TENANT_NAME>.auth0.com', options);
lock.show({
allowShowPassword: true,
initialScreen: 'signUp',
});
</script>
Was this helpful?
修正方法
Auth0のLockサインインソリューションを使用している開発者は、バージョン11.21.0以降にアップグレードする必要があります。バージョン11.21.0では2つの変更が導入されました。
問題を軽減するために、既存の
placeholder
プロパティがプレーンテキストとして扱われるようになりました。提供する制御レベルを示し、その値は信頼できるソースからのみ提供されるべきことを示す、新しい
placeholderHTML
プロパティが導入されました。
この更新はユーザーに影響を与えますか?
この修正により、Auth0 Lockウィジェットにパッチが適用され、アプリケーションコードの変更が必要になる可能性がありますが、ユーザーとその現在の状態、既存のセッションには影響はありません。
このplaceholder
プロパティと信頼できるソースからのHTMLコンテンツを使用している開発者は、同じユーザー体験を提供し続けるためにplaceholderHTML
プロパティを使用し始める必要があります。