OpenIDC/cjose — это библиотека C, реализующая подписывание и шифрование объектов Javascript (JOSE). До версии 0.6.2.5 путь расшифровки JWE cjose для алгоритмов управления ключами AES Key Wrap (`alg` = `A128KW`, `A192KW`, `A256KW`) не проверяет длину предоставленного злоумышленником `encrypted_key` (зашифрованный ключ JWE) перед его развертыванием до фиксированного размера. Буфер ключа шифрования контента (CEK), выделенный в куче.
Удаленный злоумышленник, не прошедший проверку подлинности, который может отправить созданный JWE приложению, которое расшифровывает его с помощью симметричного ключа AES-KW, может инициировать запись в кучу за пределами допустимого диапазона, повреждая кучу. Это приводит как минимум к сбою (отказу в обслуживании) и, в зависимости от структуры кучи и распределителя, может быть использовано для дальнейшего воздействия на повреждение памяти. `cjose_jwe_import()` / `cjose_jwe_decrypt()` — это точки входа предварительной аутентификации: они анализируют и обрабатывают входные данные, полностью контролируемые злоумышленником. Обновитесь до версии 0.6.2.5, чтобы получить патч.
Если обновление невозможно немедленно, откажитесь от алгоритмов переноса ключей AES (A128KW/A192KW/A256KW) для ненадежных JWE на уровне приложения.
Показать оригинальное описание (EN)
OpenIDC/cjose is a C library implementing the Javascript Object Signing and Encryption (JOSE). Prior to version 0.6.2.5, cjose's JWE decryption path for the AES Key Wrap key-management algorithms (`alg` = `A128KW`, `A192KW`, `A256KW`) does not validate the length of the attacker-supplied `encrypted_key` (JWE Encrypted Key) before unwrapping it into a fixed-size, heap-allocated Content Encryption Key (CEK) buffer. A remote, unauthenticated attacker who can submit a crafted JWE to an application that decrypts it with an AES-KW symmetric key can trigger an out-of-bounds heap write, corrupting the heap. This leads at minimum to a crash (denial of service) and, depending on the heap layout and allocator, may be leverageable for further memory-corruption impact. `cjose_jwe_import()` / `cjose_jwe_decrypt()` are pre-authentication entry points: they parse and process fully attacker-controlled input. Upgrade to cjose 0.6.2.5 to receive a patch. If upgrading is not immediately possible, reject the AES Key Wrap algorithms (`A128KW`/`A192KW`/`A256KW`) for untrusted JWEs at the application layer.
Характеристики атаки
Последствия
Строка CVSS v3.1