Краткое описание проблемы: только проверка защиты на основе пароля OpenSSL CMP
проверяет, был ли параметр ProtectionAlg не NULL и не его
Тип ASN.1, прежде чем рассматривать его как параметр PBMParameter. Созданное сообщение может
содержат параметр другого типа, который затем разыменовывается как
неверный указатель. Краткое описание воздействия: удаленный злоумышленник, не прошедший проверку подлинности, может привести к сбою приложения.
действует как сервер CMP, который принимает сообщения, защищенные PBM, или клиент CMP
разговор с вредоносным или перехваченным сервером CMP, что приводит к отказу в доступе
Сервис.
CWE: CWE-476: Разыменование нулевого указателя
Описание: При проверке MAC-защиты CMP на основе пароля.
сообщение, библиотека OpenSSL считывает параметр алгоритма ProtectionAlg с помощью
X509_ALGOR_get0(), который возвращает как тип параметра, так и его значение.
указатель. Затем значение преобразуется в ASN1_STRING и обрабатывается как
ожидаемый PBMParameter только после проверки того, что указатель не равен NULL.
тип параметра, возвращаемый функцией X509_ALGOR_get0(), никогда не обрабатывался. Это происходит во время проверки защиты, до того, как будет вычислен какой-либо MAC-адрес, поэтому
знание общего секрета PBM не требуется; единственное предварительное условие
что проверка PBM достижима.
На стороне сервера это достигается из
OSSL_CMP_SRV_process_request() для любого приложения, поддерживающего CMP
сервер, принимающий сообщения, защищенные PBM, и на стороне клиента от CMP
проверка ответа на вредоносный сервер или сервер на пути (MITM).
надежным последствием является отказ в обслуживании; нет раскрытия памяти,
нет контролируемой записи в память и нет пути к выполнению кода. CMP – это
специализированная функция, которую приложение должно явно включить. Влияние FIPS: нет
Поскольку код CMP находится за пределами границ модуля FIPS, никакие модули FIPS не
затронуты этим CVE.
Показать оригинальное описание (EN)
Issue summary: OpenSSL CMP password based protection verification only checks whether the protectionAlg parameter was not NULL and not its ASN.1 type, before treating it as a PBMParameter. A crafted message can contain a parameter of a different type, which is then dereferenced as an invalid pointer. Impact summary: A remote, unauthenticated attacker can crash an application acting as a CMP server that accepts PBM-protected messages, or a CMP client talking to a malicious or intercepted CMP server, resulting in a Denial of Service. CWE: CWE-476: NULL Pointer Dereference Description: When verifying the password-based MAC protection of a CMP message, OpenSSL library reads the protectionAlg algorithm parameter with X509_ALGOR_get0(), which returns both the parameter type and its value pointer. The value is then cast to an ASN1_STRING and treated as the expected PBMParameter after only checking that pointer is not NULL. The parameter type returned by X509_ALGOR_get0() was never consulted. This happens during protection verification, before any MAC is computed, so no knowledge of the PBM shared secret is required; the only precondition is that PBM verification is reachable. On the server side this is reached from OSSL_CMP_SRV_process_request() for any application that stands up a CMP server accepting PBM-protected messages, and on the client side from CMP response validation against a malicious or on-path (MITM) server. The reliable consequence is a denial of service; there is no memory disclosure, no controlled memory write, and no path to code execution. CMP is a specialized feature that an application must explicitly enable. FIPS impact: no As the CMP code lives outside the FIPS module boundary, no FIPS modules are affected by this CVE.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 5
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Openssl Openssl
cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:*
|
3.0.0
|
3.0.22
|
|
Openssl Openssl
cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:*
|
3.4.0
|
3.4.7
|
|
Openssl Openssl
cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:*
|
3.5.0
|
3.5.8
|
|
Openssl Openssl
cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:*
|
3.6.0
|
3.6.4
|
|
Openssl Openssl
cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:*
|
4.0.0
|
4.0.2
|