run2_jackson-empty-key-vulnerability
Detailed explanation of the Jackson empty key ("") vulnerability and how it bypasses @JacksonInject security.
- License 许可
- MIT
- 最近更新
- 2026-10-02
- Stars
- ★ 93
- Forks
- 7
01 前言 Front Matter
- name
- run2_jackson-empty-key-vulnerability
- description
- Detailed explanation of the Jackson empty key ("") vulnerability and how it bypasses @JacksonInject security.
03 SKILL.md 正文
Jackson Empty Key ("") Vulnerability
The vulnerability (e.g., CVE-2021-25646 in Apache Druid) occurs when Jackson's @JacksonInject is used to provide sensitive configuration objects, but the deserialization process allows these objects to be overridden by malicious JSON input.
How it works
- Unnamed Injected Parameters: If a constructor parameter is marked with
@JacksonInjectbut lacks a@JsonPropertyname, Jackson may default to matching it against certain JSON keys, including the empty string key"". - Override Behavior: By default, Jackson might allow the JSON input to populate the fields of an injected object if a match is found.
- Security Bypass: In Druid,
JavaScriptConfigis injected to determine if JavaScript is enabled. An attacker can provide"": {"enabled": true}in the JSON, which Jackson uses to override the server-sideJavaScriptConfigobject, thus enabling JavaScript execution for that specific request even if it's globally disabled.
The Fix: useInput = OptBoolean.FALSE
The robust fix is to explicitly tell Jackson NOT to use any JSON input for the injected parameter.
@JsonCreator
public MyObject(
@JsonProperty("someField") String someField,
@JacksonInject(useInput = OptBoolean.FALSE) MyConfig config
)
Setting useInput = OptBoolean.FALSE ensures that the config object is ONLY sourced from the InjectableValues (server configuration) and never from the JSON payload.
04 同仓库更多 Skills
object_counter
Count occurrences of an object in the image using computer vision algorithm.
travel-planning-workflow
Invoke this skill when performing travel planning. It defines a structured workflow for generating itineraries. Following this workflow is essential to ensure the final plan satisfies user requirements.
bundled-dataset-search-tool
invoke this skill when you need to perform database search for travel planning. This skill provides some useful pre-packaged tools to look up accommodations, attractions, cities, driving distance, flights, and restaurants from the bundled dataset.
glm-output
Output-processing guidance for GLM tasks. Especially useful after glm-basics and glm-calibration when you need verifier-matching metrics from output.nc and a final /root/metrics.json.
glm-calibration
Calibration guidance for GLM tasks. Often most effective after glm-basics has clarified the setup; glm-output is the companion skill for exact final metric computation.
glm-basics
A good starting point for GLM calibration tasks. Use to inspect glm3.nml, confirm how GLM runs, and identify the relevant files before moving on to calibration and output evaluation.