← Back to Feed CACHED · 2026-08-06 03:46:05 · CACHE_KEY CVE-2026-70426
CVE-2026-70426 · CWE-502 · Disclosed 2026-08-05

In Remoting 3384.v60d89463d9e0 and earlier

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

Someone left the back door of your software factory unlocked, and the guard dog's muzzle is broken

CVE-2026-70426 is a deserialization filter bypass in the Jenkins Remoting library (≤ 3384.v60d89463d9e0, except backport 3355.3357.v931d3c992987), bundled in Jenkins weekly ≤ 2.575 and LTS ≤ 2.568.1. The JEP-200 class filter — Jenkins's primary defense against Java deserialization attacks traversing the controller↔agent channel — is not applied on a fallback code path in the Remoting implementation. An attacker who controls an agent process, runs code on an agent node, or holds Agent/Connect permission can craft serialized payloads using classes on the Jenkins core classpath, bypass the filter, and achieve remote code execution on the Jenkins controller.

The vendor rates this CRITICAL at 9.0, and for once the label fits. The CVSS vector (AV:N/AC:H/PR:N/UI:N/S:C) slightly overstates the 'no privileges required' angle — you need agent-level access or Agent/Connect permission — but AC:H correctly reflects the gadget-chain complexity, and S:C is dead-on because compromising the controller means you own every pipeline, every credential store, and every artifact that flows through the system. The scope change to supply-chain impact justifies the CRITICAL tag without inflating it further.

"Jenkins Remoting deser bypass gives agent-to-controller RCE — your build pipeline is the blast radius"
02 · The Attack Path

5 steps from start to impact.

STEP 01

Obtain agent-level access

The attacker either compromises an existing Jenkins agent node (via separate vuln, credential reuse, or lateral movement), deploys a rogue agent using stolen Agent/Connect credentials, or executes code through a pipeline running on an agent. In large enterprises, agents often run on less-hardened build nodes with broader network exposure than the controller.
Conditions required:
  • Compromised agent node, OR Agent/Connect permission, OR ability to run pipeline code on an agent
Where this breaks in practice:
  • Agents are internal-only in well-architected deployments
  • Agent/Connect permission is a non-default privilege that must be explicitly granted
  • Cloud-based ephemeral agents (e.g., Kubernetes pods) rotate frequently, limiting persistence
Detection/coverage: Jenkins audit log tracks agent connections; monitor for unexpected agent registrations or connections from unknown IPs.
STEP 02

Identify fallback deserialization path

The attacker crafts a serialized Java object that triggers the Remoting library's fallback class-resolution path, which skips the JEP-200 allowlist. This requires knowledge of which classes on the Jenkins core classpath have usable gadget chains. The vulnerability is limited to core classpath classes — plugin-contributed classes remain filtered.
Conditions required:
  • Knowledge of Jenkins core classpath gadget chains
  • Remoting version ≤ 3384.v60d89463d9e0
Where this breaks in practice:
  • Gadget chain discovery in core-only classpath is non-trivial (AC:H in the CVSS)
  • No public PoC or weaponized tooling available as of 2026-08-06
  • Plugin classes are NOT available, narrowing the gadget surface
STEP 03

Send malicious serialized payload over Remoting channel

The attacker sends the crafted serialized object over the established Remoting channel from agent to controller. The controller's Remoting layer deserializes it using the fallback path, bypassing JEP-200. Existing deserialization monitoring (if any) may not flag this because the channel itself is expected to carry serialized objects.
Conditions required:
  • Active Remoting channel between agent and controller
  • Unpatched controller running vulnerable Remoting version
Where this breaks in practice:
  • Network segmentation between agent and controller subnets may add detection opportunity
  • TLS on the Remoting channel prevents passive inspection but the channel is expected traffic
Detection/coverage: Network IDS signatures for known Java deserialization gadget patterns (ysoserial-style); however, Remoting traffic is binary-serialized and often encrypted, making signature-based detection unreliable.
STEP 04

Achieve RCE on Jenkins controller

The deserialized gadget chain executes arbitrary code in the Jenkins controller JVM process. The controller typically runs as a service account with access to all credentials stored in Jenkins, all pipeline definitions, artifact signing keys, and deployment targets. This is full controller takeover.
Conditions required:
  • Successful gadget chain execution
Where this breaks in practice:
  • Jenkins controller hardened with SecurityManager (rare in practice)
  • Controllers running in containers may limit post-exploitation blast radius slightly
Detection/coverage: EDR/HIDS on the controller node should detect anomalous child processes spawned by the Jenkins JVM. Runtime application security (RASP) tools can detect deserialization exploitation.
STEP 05

Pivot to supply-chain compromise

With controller access, the attacker can inject malicious steps into any pipeline, exfiltrate stored credentials (cloud keys, SSH keys, API tokens), tamper with build artifacts, or modify deployment configurations. This converts a single-host compromise into an organization-wide supply-chain event affecting every downstream consumer of the CI/CD output.
Conditions required:
  • Controller RCE achieved
  • Credentials and pipelines stored on the controller (default Jenkins behavior)
Where this breaks in practice:
  • External secret managers (HashiCorp Vault, AWS Secrets Manager) reduce credential exposure
  • Signed artifact verification downstream can detect tampering
Detection/coverage: Git-based pipeline definitions (Jenkinsfile in SCM) provide audit trail; credential access logging in Jenkins; artifact integrity checks downstream.
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNot observed yet. Disclosed 2026-08-05 (yesterday). No KEV listing. The related CVE-2026-53435 (config.xml deserialization, disclosed June 2026) IS being actively exploited, demonstrating attacker interest in Jenkins deser chains.
Proof-of-conceptNo public PoC as of 2026-08-06. No known weaponized tooling. Gadget-chain research against Jenkins core classpath is expected given prior work (ysoserial, Jenkins CLI deser history).
EPSS scoreNot yet scored (CVE reserved 2026-08-04, published 2026-08-05). Historically, Jenkins Remoting deser CVEs score in the top 5% EPSS within weeks of PoC release.
KEV statusNot listed as of 2026-08-06. Given Jenkins's history (CVE-2024-23897, CVE-2026-53435), KEV addition is plausible if exploitation is confirmed.
CVSS vectorCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H — 9.0 CRITICAL. Network-reachable, no user interaction, scope change to supply chain. AC:H reflects gadget-chain complexity. PR:N is debatable (agent access is required but not modeled as 'privileges' in CVSS).
Affected versionsJenkins weekly ≤ 2.575, LTS ≤ 2.568.1, Remoting ≤ 3384.v60d89463d9e0 (except backport 3355.3357.v931d3c992987)
Fixed versionsJenkins weekly 2.576, LTS 2.568.2, Remoting 3385.vf1123fb_515da_
Exposure dataShodan indexes 75,000+ internet-facing Jenkins instances globally. Many lack authentication. Internal deployments multiply this by 10–50×. Jenkins is among the most common CI/CD platforms in enterprise environments.
Disclosure date2026-08-05 (Jenkins Security Advisory 2026-08-05, SECURITY-3911)
Reporter / advisoryJenkins Security Team. Temporary workaround published at jenkinsci-cert/SECURITY-3911-3930.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to CRITICAL (9.0/10)

The single most decisive factor is role multiplier — Jenkins is a canonical CI/CD build server where controller RCE equals supply-chain compromise across every pipeline, credential, and artifact the organization ships. The deserialization filter bypass converts agent-level access into full controller takeover with scope change, and 100% of Jenkins installs occupy the high-value CI/CD role by definition.

HIGH Vulnerability existence and affected version range
MEDIUM Exploitability timeline (no public PoC yet, but Jenkins deser history suggests weeks not months)
HIGH Blast radius assessment (controller RCE → supply chain is well-documented)

Why this verdict

  • Supply-chain blast radius is fleet-scale by design. Jenkins controllers hold pipeline definitions, stored credentials (cloud keys, SSH keys, deploy tokens), and artifact-signing material. Controller RCE converts a single-host compromise into an organization-wide supply-chain event.
  • Role multiplier: CI/CD canonical component. 100% of Jenkins installations are CI/CD systems — this is not a niche deployment role. The affected component (Remoting) is the foundational communication layer between controller and every agent, making it the highest-leverage attack surface in the Jenkins architecture.
  • Historical precedent for rapid weaponization. Jenkins deserialization vulnerabilities have a strong track record of fast PoC development and in-the-wild exploitation. CVE-2026-53435 (disclosed June 2026) was weaponized within days and is now actively exploited. CVE-2024-23897 followed the same pattern.
  • 75,000+ internet-facing instances per Shodan, plus a massive internal deployment footprint. Even with AC:H friction from gadget-chain complexity, the target population is enormous.

Why not higher?

The score is already 9.0 CRITICAL, which is the vendor's rating. While one advisory source listed 9.9, the AC:H (gadget-chain complexity) and the practical requirement for agent-level access provide legitimate friction that keeps this from a perfect 10.0. There is no evidence of active exploitation or public PoC yet, so no urgency multiplier pushes this above 9.0 today.

Why not lower?

Downgrading below CRITICAL is blocked by the high-value-role floor rule: Jenkins is a canonical CI/CD platform, 100% of installs occupy the high-value role, and the documented chain (agent access → deser bypass → controller RCE → supply-chain pivot) succeeds in that role with fleet-scale / supply-chain-scale blast radius. The AC:H friction from gadget-chain complexity is real but does not overcome the role-multiplier floor — Jenkins deser gadgets have been found repeatedly in the core classpath (ysoserial, prior CVEs), and the restriction to core-only classes narrows but does not eliminate the gadget surface.

05 · Compensating Control

What to do — in priority order.

  1. Apply the jenkinsci-cert SECURITY-3911-3930 workaround plugin immediately — The Jenkins Security Team published a temporary workaround at https://github.com/jenkinsci-cert/SECURITY-3911-3930/ that patches the fallback deserialization path without a full upgrade. Deploy within the noisgate CRITICAL mitigation SLA of 3 days.
  2. Audit and restrict Agent/Connect permissions — Review the Jenkins authorization matrix and remove Agent/Connect permission from all users and roles that do not absolutely require it. This directly reduces the attacker population for this CVE.
  3. Enforce agent-to-controller access control — Enable and audit the Agent → Controller Access Control feature (jenkins.security.s2m.AdminWhitelistRule). This limits which Remoting commands agents can invoke on the controller, reducing the deserialization attack surface.
  4. Network-segment the controller from untrusted networks — Ensure the Jenkins controller is not directly internet-facing. Place it behind a reverse proxy with authentication. Restrict Remoting ports (TCP 50000/JNLP) to known agent subnets only via firewall rules.
  5. Rotate all credentials stored in Jenkins — Assume that if an attacker has already exploited this (pre-disclosure window), stored credentials are compromised. Rotate cloud keys, SSH keys, API tokens, and deployment credentials stored in Jenkins credential stores.
  6. Deploy EDR/RASP on the controller host — Runtime detection of anomalous process spawning from the Jenkins JVM (java spawning bash, cmd, powershell, curl, wget) provides a backstop if exploitation occurs before patching.
What doesn't work
  • WAF/reverse proxy in front of Jenkins web UI — this vulnerability is exploited over the Remoting binary channel (JNLP/TCP), not the HTTP interface. A WAF protecting the web UI does not inspect Remoting traffic.
  • Upgrading plugins only — the vulnerability is in the Remoting library bundled with Jenkins core, not in any plugin. Plugin updates alone do not remediate this.
  • Java SecurityManager — deprecated since Java 17 and removed in Java 24. Even when available, most Jenkins deployments do not configure it, and it provides incomplete protection against deserialization gadget chains.
06 · Verification

Crowdsourced verification payload.

Run this script on each Jenkins controller host (not agents). It checks the installed Jenkins version and Remoting library version against the patched thresholds. Requires read access to the Jenkins WAR/installation directory. Example: sudo bash check_cve_2026_70426.sh /usr/share/jenkins or bash check_cve_2026_70426.sh /opt/jenkins

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2026_70426.sh — Detect CVE-2026-70426 (Jenkins Remoting JEP-200 bypass)
# Usage: bash check_cve_2026_70426.sh [JENKINS_HOME_OR_WAR_DIR]
# Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN

set -euo pipefail

JENKINS_DIR="${1:-/usr/share/jenkins}"
RESULT="UNKNOWN"

# Try to get Jenkins version from the WAR manifest or version file
get_jenkins_version() {
  local ver=""
  # Check for version.txt or similar
  for f in "$JENKINS_DIR/jenkins.war" "$JENKINS_DIR/war/META-INF/MANIFEST.MF" "/var/lib/jenkins/config.xml"; do
    if [[ -f "$f" ]]; then
      if [[ "$f" == *.war ]]; then
        ver=$(unzip -p "$f" META-INF/MANIFEST.MF 2>/dev/null | grep -i 'Jenkins-Version' | head -1 | cut -d: -f2 | tr -d ' \r')
      elif [[ "$f" == *MANIFEST.MF ]]; then
        ver=$(grep -i 'Jenkins-Version' "$f" 2>/dev/null | head -1 | cut -d: -f2 | tr -d ' \r')
      fi
    fi
  done
  # Fallback: query the running instance
  if [[ -z "$ver" ]]; then
    ver=$(curl -sk -o /dev/null -w '' "http://localhost:8080" 2>/dev/null && \
          curl -sk "http://localhost:8080" 2>/dev/null | grep -oP 'Jenkins-Version[":]\s*\K[0-9.]+' | head -1 || true)
  fi
  if [[ -z "$ver" ]]; then
    ver=$(curl -sk -I "http://localhost:8080" 2>/dev/null | grep -i 'X-Jenkins:' | awk '{print $2}' | tr -d '\r' || true)
  fi
  echo "$ver"
}

version_compare() {
  # Returns 0 if $1 >= $2, 1 otherwise
  printf '%s\n%s' "$2" "$1" | sort -V -C
}

VERSION=$(get_jenkins_version)

if [[ -z "$VERSION" ]]; then
  echo "UNKNOWN — Could not determine Jenkins version. Check JENKINS_DIR path: $JENKINS_DIR"
  exit 2
fi

echo "Detected Jenkins version: $VERSION"

# Check if this is an LTS version (x.y.z format)
if [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+ ]]; then
  echo "Detected LTS release."
  if version_compare "$VERSION" "2.568.2"; then
    RESULT="PATCHED"
    echo "PATCHED — Jenkins LTS $VERSION >= 2.568.2. CVE-2026-70426 is remediated."
  else
    RESULT="VULNERABLE"
    echo "VULNERABLE — Jenkins LTS $VERSION < 2.568.2. Affected by CVE-2026-70426."
  fi
else
  echo "Detected weekly release."
  if version_compare "$VERSION" "2.576"; then
    RESULT="PATCHED"
    echo "PATCHED — Jenkins weekly $VERSION >= 2.576. CVE-2026-70426 is remediated."
  else
    RESULT="VULNERABLE"
    echo "VULNERABLE — Jenkins weekly $VERSION < 2.576. Affected by CVE-2026-70426."
  fi
fi

if [[ "$RESULT" == "VULNERABLE" ]]; then
  echo ""
  echo "ACTION: Upgrade to Jenkins 2.576+ (weekly) or 2.568.2+ (LTS)."
  echo "WORKAROUND: Install plugin from https://github.com/jenkinsci-cert/SECURITY-3911-3930/"
  exit 1
elif [[ "$RESULT" == "PATCHED" ]]; then
  exit 0
else
  exit 2
fi
07 · Bottom Line

If you remember one thing.

TL;DR
This is a day-one CRITICAL for any organization running Jenkins. CVE-2026-70426 bypasses the primary deserialization defense (JEP-200) on the Remoting channel, converting agent-level access into full controller RCE — and controller RCE in Jenkins means supply-chain compromise. Monday morning action plan: Within the noisgate mitigation SLA of 3 days (by 2026-08-09), apply the jenkinsci-cert SECURITY-3911-3930 workaround plugin, restrict Agent/Connect permissions to only essential service accounts, and firewall Remoting ports (TCP 50000) to known agent subnets. Rotate all credentials stored in Jenkins credential stores immediately — treat them as potentially compromised given the pre-disclosure exposure window. Within the noisgate remediation SLA of 90 days, upgrade all Jenkins controllers to 2.576 (weekly) or 2.568.2 (LTS). Given the active exploitation of the closely related CVE-2026-53435 and Jenkins's history of rapid PoC development for deser bugs, treat the 3-day mitigation deadline as a hard ceiling, not a suggestion.

Sources

  1. Jenkins Security Advisory 2026-08-05
  2. CVE-2026-70426 — THREATINT
  3. Jenkins CERT Workaround — SECURITY-3911-3930
  4. Canadian Centre for Cyber Security — Jenkins Advisory AV26-142
  5. Foresiet — CVE-2026-53435 Jenkins Controller Takeover Analysis
  6. Wiz — Jenkins Threat Risk Insights
  7. Shodan Jenkins Exposure Analysis (2026)
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.