CVE-2026-65626 in jose
Сводка
по VulDB • 26.10.2026
Чистая реализация на Erlang алгоритма расшифровки RSAES-PKCS1-v1_5 в модуле `jose_jwa_pkcs1` представляет собой оракул отсечки Блейхенбахера (Bleichenbacher padding oracle). Функция `eme_pkcs1_decode/2` возвращает восстановленное сообщение, если расшифрованный блок имеет допустимую структуру PKCS#1 v1.5 (ведущие байты 0x00 и 0x02, строку заполнения длиной не менее восьми ненулевых байт и разделитель 0x00), в противном случае она возвращает отличный от этого результат ошибки; функция `rsaes_pkcs1_decrypt/2` дополнительно возвращает `{error, {badsize, _}}`, если проверка длины завершается неудачей. В реализации отсутствует защита на основе неявного отклонения (implicit-rejection countermeasure) согласно RFC 8017 §7.2.2: при сбое проверки заполнения не подставляется детерминированный псевдослучайный открытый текст, поэтому в вызывающую сторону утекает сигнал о соответствии структуре на уровне одного бита. Поскольку базовая модульная экспоненциация в функции `dp/2` представляет собой сырую криптографическую операцию `crypto:mod_pow/3` без маскирования (blinding), проверка заполнения остается различимой по времени выполнения даже тогда, когда приложение нормализует все ошибки к единому значению.
Неаутентифицированный злоумышленник, который знает только открытый RSA-ключ и может отправать шифротексты на конечную точку расшифровки, распаковывающую ключи JWE с использованием алгоритма RSA1_5 (или иным образом вызывающую `decrypt_private/3` с параметром `rsa_pkcs1_padding`), может использовать этот оракул для восстановления открытого текста перехваченных шифротекстов, таких как ключи шифрования содержимого и, следовательно, защищенного сообщения, или для подделки подписей, совершив примерно от 10^4 до 10^6 адаптивных запросов с выбранными шифротекстами.
Эта проблема затрагивает пакет `jose`: начиная с версии 1.3.0 и вплоть до (но не включая) версии 1.11.13.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.