Bouncy Castle для Java: неограниченное число итераций в legacy PBES1 и PKCS#12 PBE (CVE-2026-97873)
ЗАГОЛОВОК
Bouncy Castle для Java: неограниченное число итераций в legacy PBES1 и PKCS#12 PBE (CVE-2026-97873)
===PREVIEW===
В Bouncy Castle for Java до 1.86 (и BC-LTS-JAVA до 2.73.13) уязвимость в raw JCA provider позволяет атакующему через недовере
Подробности
Уязвимость затрагивает Legion of the Bouncy Castle Inc. BC-JAVA версий до 1.86 и BC-LTS-JAVA версий до 2.73.13. В raw JCA provider реализации AlgorithmParameters (PKCS12PBE и её псевдонимы по object identifier, а также PBKDF1) принимали любое значение счётчика итераций из закодированных структур PKCS12PBEParams или PBEParameter. При этом значение, выходящее за пределы диапазона int, сужалось через intValue(), а не отклонялось. В результате каждый Cipher, Mac и SecretKeyFactory в этих семействах выполнял вывод ключа с тем числом итераций, которое было задано, — включая случай, когда значение декодировалось AlgorithmParameters другого провайдера, например при расшифровке защищённого PKCS#12 PBE приватного ключа через javax.crypto.EncryptedPrivateKeyInfo.getKeySpec() с использованием BC. Таким образом, небольшой по размеру входной файл мог заставить приложение выполнить сколь угодно большой объём вычислений до момента какой-либо проверки. Это классический вектор отказа в обслуживании (DoS) через исчерпание вычислительных ресурсов. CVSS-оценка уязвимости — 5.3 (MEDIUM).Что делать
Разработчикам рекомендуется обновить библиотеку до версий Bouncy Castle for Java 1.86 или выше, а для LTS-ветки — до 2.73.13 или выше. В этих версиях как разбор параметров, так и операции вывода ключа отклоняют отрицательное или превышающее лимит значение счётчика итераций. Ограничение управляется свойством org.bouncycastle.pbe.max_iteration_count со значением по умолчанию 10 000 000 — тем же, что ранее было введено для PBKDF2 в рамках CVE-2026-17508. Кроме того, разбор теперь отклоняет значение, выходящее за пределы диапазона int, вместо его сужения. Если обновление невозможно, следует рассмотреть митигации на уровне приложения: не принимать к обработке PKCS#12/PBES1-защищённые артефакты из недоверенных источников, ограничивать размер и происхождение входных файлов, а также применять таймауты при операциях расшифровки и вывода ключа. Однако такие меры являются обходными и не устраняют саму уязвимость. Итог: CVE-2026-97873 — умеренно опасная уязвимость отказа в обслуживании в Bouncy Castle for Java, связанная с неограниченным числом итераций в legacy-алгоритмах PBE. Единственное надёжное решение — обновление до исправленных версий 1.86 или 2.73.13 (LTS). Организациям, использующим эту библиотеку для обработки PKCS#12-хранилищ и ключей, стоит провести инвентаризацию зависимостей и запланировать обновление в приоритетном порядке.Источник: CVE Project (cvelistV5)
