Mozilla разработала систему унифицированной аутентификации для веб-ресурсов

Mozilla разработала систему унифицированной аутентификации для веб-ресурсов

Разработка должна составить альтернативу существующим решениям наподобие OpenID. Как и другие веб-системы типа "single sign-on", предложенный компанией прототип позволяет использовать одни и те же аутентификационные данные для входа на различные сайты без необходимости каждый раз вводить пароль; есть у него, однако, и ряд отличий от известных аналогов.


Журналисты The Register рассказывают, что продукт получил наименование "BrowserID". Построен он на так называемом "протоколе подтвержденного адреса электронной почты" (Verified Email Protocol). Пользователь, желающий получить идентификатор этой системы, должен будет внести в особую веб-форму принадлежащий ему адрес электронной почты и пароль; эти данные будут переданы в службу верификации, которая отправит на указанный адрес специальное письмо. Следуя инструкциям из письма, будущий владелец идентификатора сможет подтвердить, что ящик действительно принадлежит ему.

Получив подтверждение, служба сформирует пару криптографических ключей, которые в дальнейшем будут ассоциироваться с заданным адресом. Публичный ключ останется на сервере верификации, а секретный - на стороне клиента. На этом подготовительные процедуры будут завершены. Для входа на сайт, использующий технологию BrowserID, пользователю понадобится лишь нажать кнопку "Войти" и указать свой адрес электронной почты; веб-ресурс обратится к серверу верификации и установит, имеется ли соответствие между ключом клиента и ключом адреса. В случае положительного вердикта вход будет разрешен.

Разработчики Mozilla убеждены, что такая схема одновременно проста и надежна: объем данных, которыми обмениваются пользователь, сайт и сервер верификации, сведен к минимуму, равно как и риск утечки каких-либо важных данных. Всех, кто желает лично испробовать прототип в деле, компания приглашает установить агент BrowserID на своем ресурсе или взглянуть на тестовый сайт, демонстрирующий клиентскую сторону новой системы.

Предложенный Mozilla концепт, безусловно, интересен, однако его тесная связь с электронной почтой может сыграть не в его пользу. Если процедура подтверждения ящика будет состоять в обычном переходе по особой ссылке из ответного письма, как это делается во многих онлайн-сервисах, то на сайтах с BrowserID не будет отбоя от спам-ботов - этот метод верификации учетных записей они давным-давно освоили.

Письмо автору

" />

Новая атака на кеш Nginx позволяет красть данные и ломать сайты

Исследователь YesWeHack Алекс Брумен описал вектор кибератаки Cache Key Injection. В случае её эксплуатации последствия для потенциальной жертвы опасные: обход контроля доступа, раскрытие закрытых страниц, отказ в обслуживании и при определённых условиях.

Как объясняет исследователь YesWeHack, проблема возникает не в Nginx по умолчанию, а в конфигурациях, где администраторы просто склеивают несколько значений переменной длины без разделителей. Например:

$scheme$host$request_uri$http_accept

Разных запроса два, а итоговая строка может получиться одна. Так, запрос к /h с заголовком Accept: ome*/* создаёт тот же ключ, что и обычное обращение к /home с Accept: */*.

Если атакующий успеет первым положить в кеш ответ 404, пользователи вместо главной страницы будут получать ошибку до очистки записи. Получается CPDoS — отказ в обслуживании с доставкой прямо из кеша.

 

Ещё веселее становится с закрытыми разделами. В лабораторном примере страница /admin была доступна только с localhost, но злоумышленник мог обратиться к /ad и перенести оставшуюся часть имени в соседний компонент ключа. Nginx видел разрешённый путь, однако доставал из кеша содержимое админ-панели.

При совпадении нескольких условий техника позволяет столкнуть HTTP- и HTTPS-запросы и записать в кеш страницу со ссылкой на атакующий JavaScript, превратив ошибку конфигурации в stored XSS. Даже Cloudflare не всегда спасёт: заголовок Authorization может провести запрос мимо его кеша прямо к уязвимому кешу Nginx.

 

Защита выглядит до смешного просто: не склеивать значения вслепую. Между элементами ключа нужны разделители или структурное кодирование, например:

$scheme|$host|$request_uri|$http_accept

Также следует проверять Host, перенаправлять HTTP на HTTPS и не кешировать аутентифицированные запросы.

RSS: Новости на портале Anti-Malware.ru