Someone handed the janitor a master key because the building only checked his badge photo, not which doors he could open
CVE-2026-42016 is a privilege-escalation flaw in JFrog Artifactory Self Hosted versions prior to 7.133.11. When Artifactory validates an access token (JWT), it correctly verifies the cryptographic signature and the issuer claim but fails to validate the token's scope claim — the field that defines what the bearer is actually allowed to do. An authenticated user with any valid low-privilege token can exchange it at the /access/api/v1/tokens endpoint for a new token carrying admin scope, granting full control over the Artifactory instance: user management, repository configuration, plugin deployment, and cluster-key extraction. In the wild, this bug is chained with CVE-2026-42018 (which leaks an anonymous-user JWT to an unauthenticated caller), collapsing the entire path from zero access to full admin in two HTTP requests.
JFrog rated this HIGH at 8.1 — that score is dangerously low for the real-world situation. Artifactory is, by definition, a supply-chain artifact store: every CI/CD pipeline pulling packages through it trusts its integrity. Admin takeover means an attacker can inject poisoned artifacts into every downstream build. CISA agrees — they added it to the KEV catalog on September 2, 2026 with a September 25 remediation deadline. Wiz Research documented active exploitation from August 15 through September 8 with Rust-based backdoors, persistent admin accounts, and malicious Groovy plugins dropped post-compromise. Fastly logged 406,000 exploitation attempts on September 2 alone. The vendor's 8.1 dramatically underweights the blast radius of owning a package registry.
6 steps from start to impact.
Obtain a low-privilege JWT (or chain CVE-2026-42018 for free)
POST /access/api/v1/aws/token/ returns an anonymous-user JWT even when anonymous access is disabled. This eliminates the authentication prerequisite entirely.- Network access to the Artifactory HTTP(S) port
- Either a valid low-privilege account OR an unpatched instance also vulnerable to CVE-2026-42018
- If CVE-2026-42018 is already patched, attacker needs credentials — reduces opportunity to insiders or credential-stuffing
- WAF rules blocking
/access/api/v1/aws/token/would stop the free-token path
POST /access/api/v1/aws/token/ returning HTTP 200 from unauthenticated sources. GreyNoise and Fastly have tagged scanning for this endpoint.Exchange token for admin-scoped JWT
POST /access/api/v1/tokens with a request body specifying scope: applied-permissions/admin. Because Artifactory validates the token's signature and issuer but not its scope, the server mints a fresh JWT with full administrator privileges and returns it in the response body. The entire escalation is a single HTTP POST.- A valid (any-scope) JWT from Step 1
- Patched instances (≥ 7.133.11) now validate scope on token exchange
- Network segmentation preventing direct access to
/access/API paths would block this
token:anonymous or low-privilege identity calling /access/api/v1/tokens and receiving HTTP 200. Correlate with subsequent privileged API calls within seconds.Create persistent admin accounts
PUT /api/security/users/<username> to create new administrator accounts. Observed account names include svc_[a-zA-Z0-9]{8}, Nxploited_*, labadmin_*, 0xTerror, and names designed to blend in like jfrog-distribution, repo-service, backup-service, and ldap_admin.- Admin-scoped JWT from Step 2
- None — this is a native Artifactory admin operation
Deploy malicious Groovy plugins for code execution
POST /api/plugins/execute/<plugin>, achieving arbitrary code execution on the Artifactory server with the privileges of the Artifactory process. This provides OS-level access to the host.- Admin access from Step 3
- Groovy plugin framework enabled (default in many deployments)
- Organizations that have disabled the Groovy plugin framework are protected from this specific post-exploitation path
- File integrity monitoring on the plugin directory could detect the write
POST /api/plugins/execute/* and filesystem writes to the Artifactory plugins directory. Hash all deployed plugins against a known-good baseline.Supply-chain poisoning and lateral movement
/access/api/v1/system/security/join_key and dropped Rust-based backdoors to /tmp, /dev/shm, and /var/tmp for C2 communication to 64.207.232[.]6:8443.- OS-level or admin-level access from Steps 3-4
- Artifact signing and verification (e.g., Sigstore/cosign) would catch tampered artifacts at consumption time
- Network egress controls could block C2 callbacks
/tmp, /dev/shm, /var/tmp for new ELF binaries.Persistence via Rust backdoor
hxxp://log.gitclone[.]org:45678/smtp for payload download, 64.207.232[.]6:8443 for C2). The backdoor survives Artifactory restarts and provides persistent access to the underlying host. SHA1: 513a907b69edffc3cb77a494da395178d21ef9bd.- OS-level code execution from Step 4
- EDR/AV on the Artifactory host should detect the binary drop and C2 beacon
- Container-based Artifactory deployments with read-only filesystems limit persistence locations
The supporting signals.
| In-the-Wild Exploitation | Active. Wiz Research documented campaigns from Aug 15 – Sep 8, 2026 by multiple actors. Fastly logged 406,000 exploitation attempts on Sep 2 alone. Post-exploitation includes Rust backdoors, Groovy plugins, and persistent admin accounts. |
|---|---|
| CISA KEV Status | Listed. Added September 2, 2026. Federal remediation deadline: September 25, 2026. |
| Proof-of-Concept | Public. PoC appeared September 1, 2026. The exploit is trivial — two HTTP POST requests. Multiple PoC repos indexed on GitHub (SecureWithUmer/CVE-2026-PoCs). |
| EPSS Score | 0.00266 (low percentile). EPSS has not yet caught up to the active exploitation reality — this is a known lag for newly weaponized CVEs. |
| CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N — Network-accessible, low complexity, low privilege required, no user interaction. Scope unchanged but Confidentiality and Integrity both HIGH. The PR:L is effectively neutralized when chained with CVE-2026-42018. |
| Affected Versions | JFrog Artifactory Self Hosted all versions prior to 7.133.11. The companion CVE-2026-42018 affects < 7.111.20, 7.117.x < 7.117.27, 7.125.x < 7.125.19, 7.133.x < 7.133.28, 7.146.x < 7.146.8. |
| Fixed Version | 7.133.11 (for CVE-2026-42016 specifically). To address the full chain including CVE-2026-42018: 7.111.20, 7.117.27, 7.125.19, 7.133.28, 7.146.8. JFrog Cloud customers are not affected. |
| Exposure Data | Wiz reports 67-69% of organizations running Artifactory had vulnerable instances at disclosure. Six weeks later, 59% remain vulnerable to CVE-2026-42016. Artifactory instances are commonly exposed on ports 8081/8082 or behind reverse proxies on 443. |
| Disclosure Date | July 27, 2026 (CVE-2026-42016 published). |
| Researchers | Wiz Research: Shahar Dorfman, Sean Johnstone, Zohar Kaplan, Kurt Giacchino. Active exploitation documented in their September 10, 2026 blog post. |
noisgate verdict.
The single most decisive factor is the role multiplier: JFrog Artifactory is canonically a supply-chain artifact store — 100% of its installs serve this high-value role — and admin takeover enables poisoning every artifact consumed by downstream CI/CD pipelines, making the blast radius supply-chain-scale. Active KEV-listed exploitation with a trivial two-request chain and 59% of instances still unpatched cements this as a CRITICAL that JFrog's HIGH 8.1 dangerously underrates.
Why this verdict
- Active exploitation removes all theoretical friction. This is not a hypothetical chain — Wiz documented multiple actors exploiting it from Aug 15 through Sep 8, 2026, with Fastly logging 406K attempts in a single day. CISA KEV-listed it on September 2.
- PR:L prerequisite is nullified in practice. CVE-2026-42018, which is present in overlapping version ranges, hands an anonymous JWT to any unauthenticated caller. The real-world chain is unauth → admin in two HTTP requests, not the PR:L the CVSS vector suggests.
- Role multiplier: Artifactory IS the supply chain. Unlike a bug in a component that *might* be deployed in a high-value role, Artifactory's sole purpose is serving as a software artifact repository. 100% of installs occupy the 'CI/CD + artifact store' high-value role. Admin takeover → artifact poisoning → every downstream build is compromised. Blast radius is supply-chain-scale by definition.
- Trivial exploit complexity. The attack is two POST requests with no memory corruption, no race conditions, no special tooling. Public PoC has been available since September 1. The bar for exploitation is script-kiddie level.
- Remediation stall amplifies risk. Six weeks post-disclosure, 59% of Artifactory instances remain vulnerable per Wiz telemetry. The patch gap is widening the exploitation window.
Why not higher?
A 9.6 is already near the ceiling. The only factor preventing a 10.0 is that the Availability impact is None (the CVSS vector shows A:N) — the attacker gains read/write control but the vulnerability itself does not directly cause denial of service. Additionally, JFrog Cloud customers are unaffected, meaning a portion of the Artifactory user base is inherently protected.
Why not lower?
Downgrading below CRITICAL is impossible here. The affected component is canonically a supply-chain artifact store (100% of installs serve this role), the chain ends in full admin takeover enabling supply-chain poisoning, it is actively exploited in the wild with a trivial two-request chain, and CISA has KEV-listed it. Every floor condition is met: high-value role ≥10% of install base, blast radius at supply-chain scale, active exploitation. Even if we considered the PR:L in isolation, the companion CVE-2026-42018 eliminates it in overlapping version ranges. There is no friction factor that could pull this below the CRITICAL floor.
What to do — in priority order.
- Block /access/api/v1/ paths from untrusted networks immediately — The entire attack chain flows through Artifactory's Access API. Deploy WAF or reverse-proxy rules to restrict
/access/api/v1/tokens,/access/api/v1/aws/token/, and/access/api/v1/registry/jointo trusted management IPs only. This is your fastest mitigation — deploy within the 3-day noisgate mitigation SLA for CRITICAL. - Audit all Artifactory admin accounts NOW — Search for the known IoC account patterns:
svc_[a-zA-Z0-9]{8},Nxploited_*,labadmin_*,0xTerror,jfrog-distribution,repo-service,backup-service,ldap_admin. Any admin account created after August 15 that was not provisioned through your IAM workflow should be treated as compromise evidence. Do this today. - Rotate all Artifactory tokens and the cluster join key — If you were vulnerable at any point during the Aug 15 – Sep 8 exploitation window, assume tokens may have been minted by attackers. Rotate all access tokens, revoke any you cannot account for, and regenerate the cluster join key (
/access/api/v1/system/security/join_key). Do this within 3 days. - Disable the Groovy plugin framework if not in use — Post-exploitation relies on Groovy plugins for code execution. If your deployment does not use custom plugins, disable the framework entirely to eliminate this lateral-movement path. This reduces blast radius even if the initial escalation succeeds.
- Deploy network egress controls on Artifactory hosts — Block outbound connections from Artifactory servers except to explicitly allowed destinations. This prevents C2 callback to attacker infrastructure (observed:
64.207.232[.]6:8443,log.gitclone[.]org:45678). Essential for limiting post-exploitation impact. - Verify artifact integrity across all repositories — If compromise is suspected, audit artifact checksums against known-good baselines or upstream source checksums. Any artifact modified outside your CI/CD workflow during the exploitation window should be treated as potentially poisoned. Prioritize container images and internal library packages.
- Disabling anonymous access does not help. CVE-2026-42018 leaks an anonymous-user JWT *even when anonymous access is disabled* — that is the entire point of the companion vulnerability.
- Network-level authentication (VPN/SSO) in front of Artifactory does not block the chain if any authenticated user can reach the Access API. The escalation works with *any* valid token, including read-only. Your SSO-authenticated read-only developer can be the unwitting token source.
- Artifactory's built-in audit logging alone is insufficient for detection. The token exchange looks like a normal API call. You need *correlation* rules (low-priv identity → token mint → admin action) rather than simple log review.
Crowdsourced verification payload.
Run this script on the Artifactory host or any machine with curl and network access to your Artifactory instance. Invoke as: bash check_cve_2026_42016.sh https://your-artifactory.example.com:8082. No authentication required — it checks the version endpoint which is typically unauthenticated.
#!/usr/bin/env bash
# check_cve_2026_42016.sh — Detect CVE-2026-42016 (JFrog Artifactory token scope escalation)
# Usage: bash check_cve_2026_42016.sh <ARTIFACTORY_BASE_URL>
# Exit codes: 1=VULNERABLE, 0=PATCHED, 2=UNKNOWN
set -euo pipefail
if [ $# -lt 1 ]; then
echo "Usage: $0 <ARTIFACTORY_BASE_URL>"
echo "Example: $0 https://artifactory.corp.example.com:8082"
exit 2
fi
BASE_URL="${1%/}"
# Attempt to get version from system info endpoint
VERSION=$(curl -sf --connect-timeout 10 "${BASE_URL}/api/system/version" 2>/dev/null | grep -oP '"version"\s*:\s*"\K[0-9.]+' || true)
if [ -z "$VERSION" ]; then
# Try alternative endpoint
VERSION=$(curl -sf --connect-timeout 10 "${BASE_URL}/api/system" 2>/dev/null | grep -oP '"version"\s*:\s*"\K[0-9.]+' || true)
fi
if [ -z "$VERSION" ]; then
echo "UNKNOWN — Could not retrieve Artifactory version from ${BASE_URL}"
echo "Ensure the URL is correct and the version endpoint is accessible."
exit 2
fi
echo "Detected Artifactory version: ${VERSION}"
# Parse version components
IFS='.' read -ra PARTS <<< "$VERSION"
MAJOR=${PARTS[0]:-0}
MINOR=${PARTS[1]:-0}
PATCH=${PARTS[2]:-0}
# CVE-2026-42016 is fixed in 7.133.11
# All versions prior to 7.133.11 are vulnerable
if [ "$MAJOR" -lt 7 ]; then
echo "VULNERABLE — Version ${VERSION} is below the 7.133.11 fix for CVE-2026-42016."
exit 1
elif [ "$MAJOR" -eq 7 ]; then
if [ "$MINOR" -lt 133 ]; then
echo "VULNERABLE — Version ${VERSION} is below 7.133.11. Token scope validation is missing."
exit 1
elif [ "$MINOR" -eq 133 ] && [ "$PATCH" -lt 11 ]; then
echo "VULNERABLE — Version ${VERSION} is below 7.133.11. Token scope validation is missing."
exit 1
elif [ "$MINOR" -eq 133 ] && [ "$PATCH" -ge 11 ]; then
echo "PATCHED — Version ${VERSION} includes the CVE-2026-42016 fix."
echo "NOTE: Also verify patches for CVE-2026-42018 and CVE-2026-82329 which affect different version branches."
exit 0
else
# Versions on higher minor branches (7.146, 7.161, etc)
# These branches have separate fix versions for the companion CVEs
echo "PATCHED — Version ${VERSION} is on a branch above 7.133 (CVE-2026-42016 fix baseline)."
echo "WARNING: Verify CVE-2026-42018 and CVE-2026-82329 patches for your specific branch."
exit 0
fi
else
echo "PATCHED — Version ${VERSION} is above the affected major version."
exit 0
fiIf you remember one thing.
/access/api/v1/ from untrusted networks, audit admin accounts, rotate tokens) within 3 days — meaning by September 15, 2026. Per the noisgate remediation SLA, apply the vendor patch (upgrade to 7.133.11+) within 90 days (by December 11, 2026), but given active exploitation you should push the actual patch into your next emergency maintenance window, ideally this weekend. If you were running a vulnerable version at any point between August 15 and today, assume compromise until you can prove otherwise: hunt for the IoC account patterns, check for rogue Groovy plugins, and inspect /tmp, /dev/shm, /var/tmp for unexpected ELF binaries. Do not wait for Monday — this is a Saturday-morning page.Sources
- Wiz Research — Artifactory Under Attack: In-the-Wild Exploitation
- The Hacker News — Attackers Chain JFrog Artifactory Flaws
- The Register — More JFrog Artifactory bugs under attack
- CybersecurityNews — JFrog Artifactory Vulnerabilities Actively Exploited
- GBHackers — Hackers Exploit JFrog Artifactory Flaws
- OpenCVE — CVE-2026-42016 Details
- CISA Known Exploited Vulnerabilities Catalog
- SecurityOnline — JFrog Artifactory Vulnerabilities Exploited in the Wild
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.