Разработчики Okta Auth0 устранили RCE-уязвимость в популярной опенсорсной библиотеке JsonWebToken, которая используется в 22 000 проектов (включая опенсорсные проекты Microsoft, Twilio, Salesforce, Intuit, Box, IBM, Docusign, Slack и SAP) и насчитывает более 36 млн загрузок в месяц на NPM.
Свежая уязвимость получила идентификатор CVE-2022-23529 (7,6 балла по шкале CVSS) и затрагивает все версии JsonWebToken ниже 9.0.0 (то есть выпущенные до 21 декабря 2022 года). Сообщается, что успешная эксплуатация CVE-2022-23529 позволяет обойти механизмы аутентификации, получить доступ к конфиденциальной информации, а также позволяет похищать или изменять данные.
Проблема была обнаружена специалистами Palo Alto Networks еще летом 2022 года, о чем те сразу же уведомили разработчиков. Тогда эксперты заметили, что злоумышленники могут удаленно выполнять код с помощью JsonWebToken после верификации вредоносного токена JWS.
Проблема, которая позволяла это осуществить, была связана с методом verify(), который используется в JsonWebToken для проверки JWT и возврата расшифрованной информации. Этот метод принимал три параметра: token, secretOrPublicKey и options. Из-за отсутствия надлежащей проверки параметра secretOrPublicKey, которая должна была определять, является ли он строкой или буфером, злоумышленники могли использовать специально созданные объекты для выполнения произвольной записи файлов на целевой машине.
Кроме того, используя ту же уязвимость с иной полезной нагрузкой в запросе, можно было добиться и удаленного выполнения произвольного кода.
Разработчики Auth0 работали над созданием патча с августа 2022 года, но исправленная версия с JsonWebToken (9.0.0) была выпущена только в конце декабря 2022 года. Патч включает реализацию дополнительных проверок для параметра secretOrPublicKey, предотвращающих парсинг вредоносных объектов.