Сервис аутентификации Mozilla Persona содержит уязвимости

3/10/2013 10:11

В развиваемом проектом Mozilla распределённом сервисе идентификации пользователей Persona выявлена уязвимость, позволяющая злоумышленнику подделать факт верификации email и выполнить вход от имени любого адреса сервисов Gmail и Yahoo Mail, для которых поддерживается использование OpenID для подтверждения валидности пользователя, сообщает opennet.ru. Уязвимость была выявлена в рамках программы "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 из поля, указанного первым, несмотря на то, что оно не охватывается цифровой подписью.
Источник