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つの変更が導入されました。

  1. 問題を軽減するために、既存のplaceholderプロパティがプレーンテキストとして扱われるようになりました。

  2. 提供する制御レベルを示し、その値は信頼できるソースからのみ提供されるべきことを示す、新しいplaceholderHTMLプロパティが導入されました。

この更新はユーザーに影響を与えますか?

この修正により、Auth0 Lockウィジェットにパッチが適用され、アプリケーションコードの変更が必要になる可能性がありますが、ユーザーとその現在の状態、既存のセッションには影響はありません。

このplaceholderプロパティと信頼できるソースからのHTMLコンテンツを使用している開発者は、同じユーザー体験を提供し続けるためにplaceholderHTMLプロパティを使用し始める必要があります。