メインコンテンツへスキップ
公開日: 2021年6月4日 CVE番号: CVE-2021-32641

概要

11.30.0 以前のバージョンには、反射型 XSS の脆弱性があります。次のいずれかに該当する場合、攻撃者によって任意のコードが実行される可能性があります。
  • ライブラリの flashMessage 機能を使用しており、flashMessage にユーザー入力または URL パラメーターのデータが組み込まれている場合。
または
  • ライブラリの languageDictionary 機能を使用しており、languageDictionary にユーザー入力または URL パラメーターのデータが組み込まれている場合。

影響を受けますか?

ご利用中の実装が次のいずれかに該当する場合、この脆弱性の影響を受けます。

flashMessage の脆弱性

以下の条件がすべて当てはまる場合、脆弱です。
  • auth0-lock バージョン 11.30.0 以前を使用している。
  • flashMessage 機能を使用している。
  • ユーザー入力、または URL パラメーターのデータが flashMessage に取り込まれている。
以下は、クエリーパラメーターを使って flashMessagetext プロパティを設定している脆弱なスニペットの例です。
var params = new URLSearchParams(location.search);

var errorMessage = params.get('error__message');
var showParams = {};

if (!!errorMessage === true) {
  showParams.flashMessage = {
    type: 'error',
    text: 'We were unable to log you in. ' + errorMessage,
  };
}

lock.show(showParams);

languageDictionary の脆弱性

次の条件がすべて当てはまる場合、脆弱です。
  • auth0-lock バージョン 11.30.0 以前を使用している。
  • languageDictionary 機能を使用している。
  • ユーザー入力または URL パラメーターのデータを languageDictionary のプロパティで使用している。
以下は、クエリーパラメーターを使用して languageDictionarysocialLoginInstructions プロパティに値を設定する、脆弱なコードスニペットの例です。
var params = new URLSearchParams(location.search);
var instruction = params.get('instruction');

var options = {
  languageDictionary: {
    emailInputPlaceholder: "something@youremail.com",
    title: "title",
    socialLoginInstructions: instruction
  },
};

var lock = new Auth0LockPasswordless(
    CLIENT_ID,
    DOMAIN,
    options
);

lock.show();

これを修正するには?

auth0-lock をバージョン 11.30.1 にアップグレードしてください。

この更新はユーザーに影響しますか?

この修正では、flashMessagelanguageDictionary の入力をサニタイズするために DOMPurify を使用しています。これにより、script タグや onclick 属性など、これらのフィールドに含まれる JavaScript はすべて削除されます。