Критическая ошибка в mirage-crypto-ec: подделка подписей без приватного ключа (CVE-2026-87733)
В библиотеке mirage-crypto-ec для OCaml обнаружена уязвимость, позволяющая принимать точку бесконечности в качестве валидного публичного ключа. Это дает злоумышленнику возможность подделывать ECDSA-подписи без знания приватного ключа. Уязвимость затрагивает версии до 2.2.0, оценка CVSS — 6.2 (MEDIUM).
Подробности
Проблема локализована в функциях `{P256,P384,P521}.Dsa.pub_of_octets` библиотеки mirage-crypto-ec до версии 2.2.0. Функции предназначены для декодирования публичных ключей из байтового представления. Ошибка заключается в том, что они принимают значение `0x00` — кодировку так называемой «точки бесконечности» (point at infinity) — как корректный публичный ключ. В криптографии точка бесконечности — это нейтральный элемент группы эллиптической кривой. Использование ее в качестве публичного ключа является грубым нарушением спецификации ECDSA. Как следствие, при верификации подписи с таким «ключом» математические проверки вырождаются: подпись считается валидной без необходимости обладать секретным ключом. Злоумышленник может сгенерировать произвольные данные и подписать их, предъявив в качестве ключа байт `0x00`. Метрика CVSS для данной уязвимости составляет 6.2 (MEDIUM). Низкая оценка сложности атаки компенсируется необходимостью особых условий эксплуатации: жертва должна самостоятельно использовать mirage-crypto-ec для проверки входящих данных от ненадежного источника.Что делать
Разработчикам, использующим mirage-crypto-ec в своих проектах на OCaml, настоятельно рекомендуется: 1. **Обновить библиотеку** до версии 2.2.0 или новее, где данное поведение исправлено. 2. **Провести аудит кода**: если вы принимаете публичные ключи из внешних источников (сеть, файлы конфигурации, пользовательский ввод), проверьте, не используется ли уязвимая версия библиотеки. 3. **Добавить валидацию ключей**: в качестве дополнительной меры защиты до обновления можно вручную отклонять ключи, представленные в виде одного байта `0x00`, а также проверять корректность точки на кривой согласно рекомендациям стандарта SEC1. 4. Если вы используете высокоуровневые библиотеки поверх mirage-crypto-ec, убедитесь, что они также обновлены и не наследуют данную ошибку. Игнорирование проблемы может привести к компрометации систем аутентификации, так как злоумышленник сможет подделывать подписи для любых данных, не имея доступа к секретным материалам. Итог: CVE-2026-87733 — напоминание о том, что даже в mature-криптографических библиотеках встречаются ошибки на уровне математики эллиптических кривых. Обновление до актуальных версий и тщательная валидация входных данных — обязательные шаги для поддержания безопасности ваших систем.Источник: CVE Project (cvelistV5)
