Skip to main content
Meet us at Black Hat USA 2026— Las Vegas, August 1–6Book a Meeting
Mallory
HighPublic exploit

Jenkins XStream XML deserialization RCE

IdentifiersCVE-2016-0792CWE-502

CVE-2016-0792 is a deserialization of untrusted data vulnerability in Jenkins affecting versions before 1.650 and Jenkins LTS before 1.642.2. Multiple unspecified Jenkins API endpoints accept XML input that is processed via XStream. Because of unsafe handling of serialized data, including gadget abuse related to groovy.util.Expando, a remote authenticated user can supply crafted XML that triggers arbitrary code execution during deserialization.

Share:
For your environment

Are you exposed to this one?

Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.

ANALYST BRIEF

Impact, mitigation & remediation

What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.

Impact

What an attacker gets, and what they’ve been doing with it.

Successful exploitation allows a remote authenticated attacker to execute arbitrary code on the Jenkins server in the security context of the Jenkins process. This can lead to full compromise of the CI/CD server, access to build jobs and credentials available to Jenkins, modification of pipelines and artifacts, and potential lateral movement into connected development and deployment environments.

Mitigation

If you can’t patch tonight, do this now.

If immediate patching is not possible, restrict access to Jenkins API endpoints that accept XML input to trusted administrators only, minimize the number of authenticated users, and place Jenkins behind network access controls. Monitor for suspicious XML-based API requests and unexpected code execution behavior on the Jenkins controller. These are temporary risk-reduction measures and do not replace upgrading to a fixed version.

Remediation

Patch, then assume compromise.

Upgrade Jenkins to 1.650 or later, or upgrade Jenkins LTS to 1.642.2 or later, as indicated by the advisory. Apply the vendor-fixed release across affected Jenkins controllers and verify that any exposed API endpoints handling XML requests are no longer running vulnerable versions.
PUBLIC EXPLOITS

Exploits

2 valid exploits after Mallory filtered fakes, detection scripts, and README-only repos (1 hidden).

VALID 2 / 3 TOTALView more in app
CVE-2016-0792MaturityPoCVerified exploit

This repository contains a Python exploit script (CVE-2016-0792.py) targeting Jenkins servers vulnerable to CVE-2016-0792, a remote code execution vulnerability. The exploit works by programmatically creating a new Jenkins job with a malicious shell command payload, which runs an exfiltration binary in the background, monitors its process, and attempts to contact an exfiltration server at http://exfiltration:8080. The script then triggers the job and monitors its output via Jenkins' API. The exploit assumes the Jenkins server is accessible at http://web:8080 and that the exfiltration binary is present at /usr/local/bin/exfiltrate. The repository also includes a minimal README. The main attack vector is network-based, exploiting Jenkins' job creation and build features to achieve remote code execution. The script is operational and demonstrates a real-world attack scenario, though it requires a specific environment (vulnerable Jenkins, exfiltration binary, and exfiltration server) to function fully.

bugdotexeDisclosed Jul 15, 2025pythonnetwork
jenkins-cve-2016-0792MaturityPoCVerified exploit

This repository contains a Python-based exploit for Jenkins CVE-2016-0792, a remote code execution vulnerability in Jenkins versions prior to 1.650. The main exploit logic resides in 'exploit.py', which checks if the target Jenkins server is online, verifies its version via the 'X-Jenkins' HTTP header, and if vulnerable, sends a crafted XML payload to the '/createItem' endpoint to trigger command execution. The payload is generated by 'prepare_payload.py', which constructs an XML object that leverages Groovy's Expando and Java's ProcessBuilder to execute arbitrary commands. The exploit requires Python 3.6+ and the 'requests' library. The README provides usage instructions and references to further documentation. No hardcoded IPs or credentials are present; the exploit is generic and requires the attacker to specify the target URL and command to execute. The attack vector is network-based, targeting Jenkins servers accessible over HTTP.

jpiechowkaDisclosed Jul 30, 2017pythonnetwork
EXPOSURE SURFACE

Affected products & vendors

Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.

VendorProductType
JenkinsJenkinsapplication
Red HatOpenshiftapplication

Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.

ACTIVITY FEED

Recent activity

3 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.

What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets are affected, which adversaries are exploiting it right now, which detections to deploy, and what to do tonight.
Exposure mapping

Query your assets running an affected version, and investigate the blast radius.

Threat actor evidence1

Every observed campaign linking this CVE to a named adversary.

Associated malware1

Malware families riding this exploit, with evidence and IOCs.

Detection signatures

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

Vendor-by-vendor mapping

Cross-references every affected SKU, including bundled OEM variants.

Social activity2

Community discussion across Reddit, Mastodon, and other social sources.