В сервисе Mozilla Persona выявлены уязвимости

В распределённом сервисе идентификации пользователей Persona от Mozilla выявлена уязвимость, позволяющая подделать факт верификации email и выполнить вход от имени любого адреса сервисов Gmail и Yahoo Mail, для которых поддерживается использование OpenID для подтверждения валидности пользователя.

Причина уязвимости кроется в особенностях верификации с использованием OpenID и проявляется только для сервисов, для которых поддерживается подтверждение по данному протоколу (на данным момент только Gmail и Yahoo Mail). В частности, для проверки корректности привязки email к заявленному аккаунту используется цифровая подпись. Подразумевается, что цифровая подпись охватывает поле с email, но упускается, что допустимо указание произвольных полей для проверки по цифровой подписи.

Хакер может сформировать для OpenID цифровую подпись, не охватывающую email, после чего подменить указанный в параметрах верификации адрес. После смены адреса цифровая подпись останется корректной и многие популярные OpenID-библиотеки, явным образом не проверяющие наличие поля с email в числе охватываемых цифровой подписью полей, будут считать запрос с фиктивным email прошедшим верификацию.

Второй вектор атаки связан с особенностью извлечения значений полей OpenID. Например, атакующий может путём спуфинга подставить в начало корректно верифицированного запроса дополнительное поле «openid.foo.value.email: victim@gmail.com». Несмотря на то, что цифровая подпись будет корректно сформирована для изначально указанного поля «openid.ext1.value.email: example@gmail.com», многие OpenID-библиотеки извлекут email из поля, указанного первым, несмотря на то, что оно не охватывается цифровой подписью.

Уязвимость была выявлена в рамках программы «Bug Bounty Program» и не была публично оглашена до устранения проблемы.