CVE DatabaseCVE-2017-1000353
한국어 권고문 →
CVE-2017-10003539.8/CRITICALCISA KEVCWE-502CWE-502

Jenkins CLI Java Deserialization Remote Code Execution Vulnerability Analysis (CVE-2017-1000353)

⚡ Jump to Patch
Affected Vendors
jenkins
Affected Components
jenkins, jenkins_lts
Published Date
2018-01-29
CVSS v3.1
9.8
CRITICAL
EPSS (30d)
99.7%
FIRST.org
CISA KEV
Exploited

Executive & SecOps Summary

SECOPS ASSESSMENT
Affected Scope

Jenkins weekly versions 2.56 and earlier, and LTS versions 2.46.1 and earlier

Impact

Unauthenticated remote attackers can execute arbitrary system commands and fully compromise the Jenkins master node by sending a serialized Java SignedObject

Mitigation

Immediately upgrade Jenkins to version 2.57+ or LTS 2.46.2+, and disable the legacy remoting-based CLI protocol

Affected Products & Version Scope

Jenkins weekly 2.56 and earlier, LTS 2.46.1 and earlier (CISA KEV listed, EPSS score > 0.99, actively exploited in the wild)

Remediation & Live Workaround Commands

PATCH & WORKAROUND

1. Official Patch & Version Upgrade Commands

The primary remediation is to upgrade Jenkins to a secure version (weekly 2.57 or later, LTS 2.46.2 or later).

bash
# Upgrade Jenkins on Debian/Ubuntu systems
sudo apt-get update
sudo apt-get --only-upgrade install jenkins
sudo systemctl restart jenkins

# Upgrade Jenkins on RedHat/CentOS systems
sudo yum update jenkins
sudo systemctl restart jenkins

2. Temporary Workaround & Hardening Configuration

If an immediate upgrade is not feasible, disable the vulnerable Remoting-based CLI protocol via the Jenkins Script Console.

groovy
// Run this in Jenkins Script Console (Manage Jenkins -> Script Console)
import jenkins.model.Jenkins
import java.util.logging.Logger

def logger = Logger.getLogger('security-patch')
def inst = Jenkins.getInstance()

// Disable Remoting-based CLI
inst.getDescriptor('jenkins.CLI').getApi().setEnabled(false)
inst.save()
logger.info('Jenkins Remoting CLI has been disabled successfully.')

3. Log Audit & IoC Verification Commands

Use the following script to verify your Jenkins version and check if the CLI endpoint is exposed.

bash
#!/bin/bash
# Check Jenkins version and CLI exposure
JENKINS_URL='http://localhost:8080'

echo '[+] Checking Jenkins Version...'
curl -sI $JENKINS_URL | grep -i 'X-Jenkins'

echo '[+] Checking CLI endpoint status...'
curl -sL $JENKINS_URL/cli | grep -E 'cli|remoting' && echo '[!] Warning: CLI endpoint is exposed.' || echo '[+] CLI endpoint is secure or disabled.'
Interactive SecOps Remediation Checklist
0/4 (0%)
Recommended Security Control & Mitigation Partner
Snyk Open Source & Container Security
Immediately upgrade Jenkins to version 2.57 / LTS 2.46.2 or higher, and disable the legacy CLI protocol.

Scan Your Repositories for Transitive Vulnerable Dependencies in 30 Seconds

Automatically detect vulnerable packages across npm, PyPI, Maven, and Go, and open automated fix Pull Requests without breaking your build.

Free Forever Tier · 1-Click GitHub/GitLab Auto-PR
Master DevSecOps: Automated SAST/SCA in GitHub Actions & Kubernetes
View Course Curriculum

Technical Root Cause & Exploitation Mechanics

1. Vulnerability Overview & Root Cause

This vulnerability (CVE-2017-1000353) is a critical Java deserialization flaw within the Jenkins CLI (Command Line Interface) subsystem. Jenkins previously employed a blacklist-based filtering mechanism to block dangerous classes during deserialization. However, security researchers discovered that the standard Java library class java.security.SignedObject could be leveraged to bypass this protection. Because SignedObject encapsulates another serialized object and deserializes it internally using a newly instantiated ObjectInputStream, it completely evades the pre-existing blacklist filters.

2. Exploitation Mechanics & Attack Scenario

An attacker crafts a malicious payload containing a gadget chain (such as CommonsCollections) nested inside a SignedObject. The attacker then initiates a connection to the Jenkins CLI port or tunnels the request via HTTP. When the Jenkins server receives and deserializes the SignedObject, the nested ObjectInputStream is triggered, bypassing the blacklist validation and executing the payload. Since this process requires no authentication, any internet-facing Jenkins instance is highly vulnerable to immediate compromise.

3. Infrastructure & Business Impact

As the orchestrator of CI/CD pipelines, Jenkins holds extensive privileges, including access to source code repositories, API keys, SSH credentials, and production environments. Successful exploitation allows attackers to gain shell access to the Jenkins master node, leading to credential theft, intellectual property exposure, or supply chain attacks where malicious code is injected into software builds. This poses an existential threat to enterprise infrastructure and business continuity.

Official Vendor Advisories & References

NVD Original English Description

Jenkins versions 2.56 and earlier as well as 2.46.1 LTS and earlier are vulnerable to an unauthenticated remote code execution. An unauthenticated remote code execution vulnerability allowed attackers to transfer a serialized Java `SignedObject` object to the Jenkins CLI, that would be deserialized using a new `ObjectInputStream`, bypassing the existing blacklist-based protection mechanism. We're fixing this issue by adding `SignedObject` to the blacklist. We're also backporting the new HTTP CLI protocol from Jenkins 2.54 to LTS 2.46.2, and deprecating the remoting-based (i.e. Java serialization) CLI protocol, disabling it by default.

Frequently Asked SecOps Questions (CVE-2017-1000353)

FAQ

Q1. How critical is CVE-2017-1000353 and is it actively exploited in the wild?

CVE-2017-1000353 is rated CVSS 9.8 (CRITICAL) with a 30-day EPSS exploitation probability of 99.7%. It is listed in the CISA Known Exploited Vulnerabilities (KEV) catalog, requiring immediate emergency remediation.

Q2. Which vendors and products are affected by CVE-2017-1000353?

Primary impacted vendors include jenkins across jenkins, jenkins_lts. Scope summary: Jenkins weekly 2.56 and earlier, LTS 2.46.1 and earlier (CISA KEV listed, EPSS score > 0.99, actively exploited in the wild)

Q3. What temporary mitigations or workarounds exist for CVE-2017-1000353 before patching?

[Mitigation] Immediately upgrade Jenkins to version 2.57+ or LTS 2.46.2+, and disable the legacy remoting-based CLI protocol Follow the CLI remediation commands and interactive SecOps checklist on this page to restrict exposure prior to your maintenance window.

SECOPS WORKBENCH INTEGRATION

Generate an Internal Engineering Notice or CISO Report for CVE-2017-1000353

Instantly format this advisory into an executive CISO summary or engineering patch ticket.

Generate Report →

🔗 Related Advisories in Similar Stack (jenkins)

View Category →
SecOps Advisory Dispatch & RSS Feed

Subscribe to Daily Vulnerability Briefings & KEV Alerts

Concise morning briefings for SecOps, DevSecOps, and SRE teams covering newly exploited CVEs and mitigation priorities.

Slack / Teams / RSS Feed:
PatchKO
CVE-2017-1000353 Jenkins CLI Java Deserialization Remote Code Execution Vulnerability Analysis (CVE-2017-1000353) (CVSS 9.8) - Patch & Workaround | CVE Pulse