«У вас есть пропуск?» «Нет, я его сам нарисовал» «Проходите». Зайти в систему по вымышленным документам теперь – дело одного обновления

Опубликованы данные об уязвимости в плагине Tomcat, которая отключает проверку цифровой подписи.


bdyj93mtss0ch5ypa7h9g56h0r7himv8.jpg

Иногда, чтобы обойти защиту, не нужны сложные инструменты. Достаточно сказать системе то, что она не умеет проверять. Именно такую брешь нашли во время клиентского проекта специалисты в библиотеке OpenID Connect Authenticator for Tomcat. Уязвимость позволяла входить в систему с поддельными токенами и любыми данными внутри.

Проблема затрагивает версии OpenID Connect Authenticator for Tomcat с 2.0.0 по 2.5.0, а также актуальное состояние ветки master. Ошибка появилась после одного из изменений в коде и касается проверки цифровой подписи токенов JWT (JSON Web Token), которые используют для подтверждения личности пользователя.

Внутри функции проверки подписи isSignatureValid в классе org.bsworks.catalina.authenticator.oidc.BaseOpenIDConnectAuthenticator разработчики предусмотрели обработку разных алгоритмов подписи. Однако если в заголовке токена указан неизвестный алгоритм, библиотека не отклоняет такой токен. Вместо этого она просто записывает предупреждение в журнал и возвращает значение true, то есть считает подпись корректной.

По сути, если система встречает незнакомый алгоритм в поле alg, она полностью пропускает проверку подписи. Это означает, что злоумышленник может создать собственный токен JWT , указать вымышленный алгоритм и добавить любые данные, например чужой адрес электронной почты, – и приложение примет такой токен как действительный.