О новой уязвимости десериализации Джексона

Spring Boot Java

Есть еще одна уязвимость десериализации в jackson-databind (2020-08-27), номер уязвимости CVE-2020-24616, которая влияет на уровень данных и оценивается какУязвимость с высоким риском

br.com.anteros: в Anteros-DBCP есть новая цепочка эксплойтов десериализации, которая может обойти ограничения черного списка jackson-databind.Удаленные злоумышленники могут вызывать удаленный код, отправляя специально созданные пакеты запросов в интерфейс веб-сервиса с помощью этого компонента.

Воздействовать на версию

Jackson-databind < 2.9.10.6

Влияет на версию Spring Boot

Джексон, как встроенный фреймворк для синтаксического анализа json в Spring Boot, до тех пор, пока введение

  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

Автоматически вводить jar-файлы, связанные с jackson, автор обнаружил, прочитав зависимости spring-boot-dependenciesВерсии ниже весенней загрузки 2.1.10 будут иметь связанные проблемы.

как исправить

Как обычно используемый парсер JSON, jackson имеет встроенный этот модуль в большинстве фреймворков, и нереально работать с каждым методом исключения.

  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
   <exclusions>
    <exclusion>
     <artifactId>jackson-databind</artifactId>
     <groupId>com.fasterxml.jackson.core</groupId>
    </exclusion>
   </exclusions>
  </dependency>

  <dependency>
   <groupId>com.xkcoding.nacos</groupId>
   <artifactId>nacos-config</artifactId>
   <version>1.1.4</version>
   <exclusions>
    <exclusion>
     <artifactId>jackson-databind</artifactId>
     <groupId>com.fasterxml.jackson.core</groupId>
    </exclusion>
   </exclusions>
  </dependency>

Самый простой способ — добавить спецификацию версии в узел dependencyManagement корневого pom, тогда все версии jackson, представленные в эталонных пакетах, будут объединены в эту версию

<dependencyManagement>
  <dependencies>
    <dependency>
      <artifactId>jackson-databind</artifactId>
      <groupId>com.fasterxml.jackson.core</groupId>
      <version>2.9.10.6</version>
    </dependency>
  </dependencies>
</dependencyManagement>

Суммировать

Не паникуйте,pig4cloud[1]Динамическая типизация не включена по умолчанию, иspring cache[2]Не использовать сериализацию Джексона.

Если ваш Redis использует сериализацию Джексона и внедряет глобальный ObjectMapper Обратите внимание, используйте что-то вродеmica-redis[3]Такая копия предназначена для предотвращения загрязнения глобального ObjectMapper и нарушения безопасности.

Позже мы переведем две статьи автора Джексона, чтобы дать вам более глубокое понимание механизмов динамической типизации и безопасности Джексона. Если вы знаете правду, вы должны знать причину, иначе будут лазейки, в которых конфигурация json-инструмента неверна.

использованная литература

[1]

pig4cloud: https://gitee.com/log4j/pig

[2]

spring cache: https://gitee.com/log4j/pig/pulls/63

[3]

mica-redis: https://gitee.com/596392912/mica