druid-javascript-rce
Apache Druid JavaScript RCE vulnerability (CVE-2021-25646) fix via @JacksonInject hardening and constructor validation.
- License 许可
- MIT
- 最近更新
- 2026-10-02
- Stars
- ★ 93
- Forks
- 7
01 前言 Front Matter
- name
- druid-javascript-rce
- description
- Apache Druid JavaScript RCE vulnerability (CVE-2021-25646) fix via @JacksonInject hardening and constructor validation.
03 SKILL.md 正文
Apache Druid JavaScript RCE Vulnerability
Overview
Apache Druid 0.20.0 allows authenticated users to execute arbitrary server-side code through JavaScript-based features (filters, aggregators, extraction functions, etc.) even when JavaScript is disabled via druid.javascript.enabled=false.
Root Cause
All JavaScript-related classes use @JacksonInject JavaScriptConfig config to receive the server-side JavaScript configuration. Jackson's default behavior allows JSON input to override injected values via an empty key "".
Affected Classes
JavaScriptDimFilter- processing moduleJavaScriptAggregatorFactory- processing moduleJavaScriptExtractionFn- processing moduleJavaScriptPostAggregator- processing moduleJavaScriptParseSpec- core moduleJavaScriptTieredBrokerSelectorStrategy- server module (already has constructor check)
Fix Strategy
For each affected class:
- Change
@JacksonInjectto@JacksonInject(useInput = OptBoolean.FALSE) - Add
Preconditions.checkState(config.isEnabled(), "JavaScript is disabled")in constructors that don't already have it
Exploit Payload Example
{
"type": "index",
"spec": {
"dataSchema": {
"transformSpec": {
"filter": {
"type": "javascript",
"dimension": "dim",
"function": "function(x){java.lang.Runtime.getRuntime().exec('cmd')}",
"": {"enabled": true}
}
}
}
}
}
Modules Requiring Rebuild
druid-core(JavaScriptParseSpec)druid-processing(JavaScriptDimFilter, JavaScriptAggregatorFactory, JavaScriptExtractionFn, JavaScriptPostAggregator)druid-server(JavaScriptTieredBrokerSelectorStrategy)druid-indexing-service(sampler endpoint, depends on above)
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.