В широко используемом пакете sha.js для экосистемы JavaScript обнаружена критическая уязвимость безопасности, ставящая под угрозу криптографические операции в миллионах приложений. Проблема, получившая идентификатор CVE-2025-9288, затрагивает все версии библиотеки вплоть до 2.4.11, которая накопила более 14 миллионов загрузок через npm-реестр.
Детали уязвимости
Исследователь безопасности под псевдонимом ChALkeR выявил, что уязвимость возникает из-за отсутствия проверки типа входных данных в механизме вычисления хешей. Это позволяет злоумышленникам манипулировать состояниями хешей с помощью специально сформированного JSON-совместимого ввода, что открывает возможности для проведения изощренных атак на криптографические системы.
Эксплуатация уязвимости возможна в трех основных сценариях. Первый предполагает перемотку состояний хеша с использованием объектов с отрицательными свойствами длины, что эффективно откатывает криптографическое состояние к предыдущим значениям. Второй сценарий позволяет осуществлять атаки на основе коллизий, когда специально сконструированные объекты производят идентичные хеш-выходы для различных входных данных. Третья вектора атаки нацелена на отказ в обслуживании посредством передачи некорректных значений длины, вызывающих бесконечную работу библиотеки.
Уязвимость получила критический балл по шкале CVSS v4, что отражает ее серьезное влияние на уязвимые системы и связанные с ними инфраструктурные компоненты. Атака может осуществляться через сетевые соединения со сложными требованиями к реализации, но без необходимости взаимодействия с пользователем, что делает ее особенно опасной для сценариев автоматизированной эксплуатации.
Разработчики sha.js оперативно отреагировали на угрозу, выпустив версию 2.4.12 с комплексной проверкой типов входных данных, которая блокирует все выявленные векторы атак. Специалисты настоятельно рекомендуют организациям, использующим уязвимые версии библиотеки, немедленно обновить зависимости до патченной версии.
Широкое распространение библиотеки sha.js в экосистеме JavaScript означает, что последствия уязвимости могут затрагивать бесчисленное количество веб-приложений, серверных компонентов и инструментов разработки. Криптографические уязвимости такого масштаба требуют незамедлительных действий со стороны сообщества для предотвращения потенциально масштабных компрометаций систем.
Ссылки
- https://github.com/browserify/sha.js/security/advisories/GHSA-95m3-7q98-8xr5
 - https://www.cve.org/CVERecord?id=CVE-2025-9288
 - https://github.com/browserify/sha.js/pull/78
 - https://www.cve.org/CVERecord?id=CVE-2025-9287