
Этот репозиторий предоставляет комплексное устранение уязвимостей безопасности, связанных с отказом в обслуживании и выделением ресурсов без ограничений или регулирования, о которых сообщалось в CVE-2025-52999, GHSA-2m67-wjpj-xhg9 и sonatype-2022-6438, сохраняя при этом полную совместимость с jackson‑core 2.13.5.
Данная ветка (2.13.5-CVE-2025-52999-sonatype-2022-6438-GHSA-2m67-wjpj-xhg9) содержит комплексное устранение уязвимостей типа «отказ в обслуживании» (DoS) и «выделение ресурсов без ограничений или регулирования», затрагивающих jackson-core 2.13.5. В ней представлен API StreamReadConstraints —
совместимый с API, введённым в jackson-core 2.15.0, но расширенный более широким охватом парсеров
и дополнительными защитами от векторов атак — устраняющий атаку исчерпания глубины вложенности
(CVE-2025-52999), проблему выделения ресурсов без ограничений или регулирования (SNYK-JAVA-COMFASTERXMLJACKSONCORE-15365924), обход ограничения длины документа (SNYK-JAVA-COMFASTERXMLJACKSONCORE-15907551 / GHSA-2m67-wjpj-xhg9) и атаку исчерпания длины числового токена (Sonatype-2022-6438), оставаясь при этом совместимым с публичной поверхностью API jackson-core версии 2.13.5.
| Ветка | Устранённые уязвимости |
|---|---|
2.13.5-CVE-2025-52999-sonatype-2022-6438 | CVE-2025-52999, Sonatype-2022-6438, SNYK-JAVA-COMFASTERXMLJACKSONCORE-15365924 |
2.13.5-CVE-2025-52999-sonatype-2022-6438-GHSA-2m67-wjpj-xhg9 | Все вышеуказанные + GHSA-2m67-wjpj-xhg9 (обход ограничения длины документа) |
Исходная ветка (2.13.5-CVE-2025-52999-sonatype-2022-6438) устраняет три уязвимости
и сохранена на удалённом репозитории sasso. Данная ветка расширяет её дополнительным устранением
GHSA-2m67-wjpj-xhg9,
которая применяет maxDocumentLength во всех путях парсера.
| ID | Тип | Серьёзность | CVSS | Исправление в восходящем проекте |
|---|---|---|---|---|
| CVE-2025-52999 | Отказ в обслуживании — неограниченная глубина вложенности | Высокий | 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) | jackson-core 2.15.0 |
| Sonatype-2022-6438 / SNYK-JAVA-COMFASTERXMLJACKSONCORE-7569538 | Отказ в обслуживании — неограниченная длина числового токена | Высокий | 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) | jackson-core 2.15.0 |
| SNYK-JAVA-COMFASTERXMLJACKSONCORE-15365924 | Выделение ресурсов без ограничений или регулирования | Высокий | 8.7 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) | jackson-core 2.18.6, 2.21.1 или выше. |
| SNYK-JAVA-COMFASTERXMLJACKSONCORE-15907551 / GHSA-2m67-wjpj-xhg9 | Выделение ресурсов без ограничений или регулирования — обход ограничения длины документа | Высокий | 8.7 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) | jackson-core 2.18.7, 2.21.2 или выше. |
| Версия | CVE-2025-52999 | Sonatype-2022-6438 / SNYK-JAVA-COMFASTERXMLJACKSONCORE-7569538 | SNYK-JAVA-COMFASTERXMLJACKSONCORE-15365924 | SNYK-JAVA-COMFASTERXMLJACKSONCORE-15907551 |
|---|---|---|---|---|
| 2.13.5 | Уязвима | Уязвима | Уязвима | Уязвима |
| 2.13.5-CVE-2025-52999-sonatype-2022-6438 | Устранена | Устранена | Устранена | Уязвима |
| 2.13.5-CVE-2025-52999-sonatype-2022-6438-GHSA-2m67-wjpj-xhg9 | Устранена | Устранена | Устранена | Устранена |
| 2.14.x | Уязвима | Уязвима | Уязвима | Уязвима |
| 2.15.x | Устранена | Устранена | Уязвима | Уязвима |
| 2.16.x | Устранена | Устранена | Уязвима | Уязвима |
| 2.17.x | Устранена | Устранена | Уязвима | Уязвима |
| 2.18.6+ | Устранена | Устранена | Устранена | Уязвима |
| 2.18.7+ | Устранена | Устранена | Устранена | Устранена |
| 2.21.1+ | Устранена | Устранена | Устранена | Уязвима |
| 2.21.2+ | Устранена | Устранена | Устранена | Устранена |
Запись NVD
| Поле | Значение |
|---|---|
| CVE ID | CVE-2025-52999 |
| Опубликовано | 2025-06-25 |
| Последнее изменение | 2025-06-26 |
| Источник (CNA) | GitHub, Inc. |
| Оценка CVSS v4.0 | 8.7 HIGH — CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N |
| CWE | CWE-121 — Переполнение стека |
| Уведомление GitHub | GHSA-h46c-h94j-95f3 |
| PR с исправлением в восходящем проекте | jackson-core#943 |
Официальное описание NVD
jackson-core содержит базовые низкоуровневые инкрементальные ("потоковые") абстракции парсера и генератора, используемые Jackson Data Processor. В версиях до 2.15.0, если пользователь разбирает входной файл, содержащий глубоко вложенные данные, Jackson может выбросить
StackOverflowErrorпри особенно большой глубине. jackson-core 2.15.0 содержит настраиваемый лимит того, насколько глубоко Jackson будет проходить по входному документу; по умолчанию допустимая глубина составляет 1 000. jackson-core выбрасываетStreamConstraintsExceptionпри достижении лимита. jackson-databind также выигрывает от этого изменения, поскольку использует jackson-core для разбора JSON-входных данных. В качестве меры предосторожности пользователям следует избегать разбора входных файлов из ненадёжных источников.
Мера предосторожности: избегайте разбора JSON-входных данных из ненадёжных источников до развёртывания исправленной версии.
Основная причина: До версии 2.15.0 JsonParser не накладывал ограничений на глубину вложенности
JSON-документа. Каждый токен массива [ или объекта { вызывал JsonReadContext.createChildArrayContext() /
createChildObjectContext(), выделяя новый узел контекста в куче и увеличивая цепочку ссылок.
Злоумышленник может создать документ с десятками тысяч уровней вложенности, что приведёт к исчерпанию
стека потока или памяти кучи Java Virtual Machine.
Уязвимый путь кода: