В Mozilla Persona выявили проблемы с безопасностью
В рамках программы "Bug Bounty Program" была выявлена уязвимость, о которой публично не оглашали до устранения проблемы. Persona дает возможность пользователям авторизоваться на любом сайте с помощью email, который был предварительно подтвержден владельцем, благодаря использованию протокола 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 из поля, указанного первым, не глядя на то, что оно не охватывается цифровой подписью.