Someone left the master key under the doormat of the warehouse that ships every package your company builds
CVE-2026-82329 is an authentication bypass in JFrog Artifactory's Access component — the subsystem responsible for issuing and validating credentials. In default, out-of-the-box configurations of self-hosted Artifactory, the join key used to bootstrap trust between platform services is either absent or predictable (a so-called "phantom" join key). An unauthenticated attacker with network access can abuse this to forge administrator-level access tokens. Affected versions span multiple release branches prior to patched versions 7.111.21, 7.117.28, 7.125.20, 7.133.29, 7.146.38, and 7.161.20. JFrog SaaS (cloud-hosted) instances are not affected — only self-managed deployments.
The vendor rated this CVSS 9.8 CRITICAL, and for once the vendor score is exactly right. The attack is unauthenticated, remote, low-complexity, requires no user interaction, and targets the default configuration. The blast radius isn't just the Artifactory host — it's every downstream build pipeline, container image, AI model artifact, and release binary that trusts that repository. Active exploitation was observed by watchTowr within 72 hours of disclosure. CISA added it to the KEV catalog. There is nothing to downgrade here.
5 steps from start to impact.
Identify internet-facing or network-reachable Artifactory
- Target runs self-hosted JFrog Artifactory on a vulnerable version
- Instance is network-reachable (internet or internal network)
- Instances behind VPN or zero-trust overlay are not directly reachable from the internet
X-Artifactory-Id header or /artifactory/ path. GreyNoise tags may track scanning for Artifactory endpoints.Exploit phantom join key to forge admin token
fankh/vulnerability-poc on GitHub) automate this in a single command.- Artifactory uses default configuration (join key not manually rotated or hardened)
- Organizations that followed JFrog hardening guides and set a custom join key are not vulnerable — but this is a minority of deployments
/access/api/v1/ endpoints for token-creation payloads. Audit logs showing token creation events without a preceding valid authentication session.Enumerate environment via admin API
- Valid admin token from Step 2
- None — this is normal admin API usage, difficult to distinguish from legitimate activity without behavioral baselining
Poison artifacts or exfiltrate secrets
- Admin access to Artifactory (achieved in Step 2)
- Downstream CI/CD pipelines pull from this Artifactory instance
- Artifact integrity verification (e.g., Sigstore/cosign, GPG-signed packages) would detect tampering — but adoption remains low
- Immutable repository policies, if enabled, prevent overwrites of existing artifacts
Persist via additional tokens and backdoor accounts
- Admin access (from Step 2)
- Defenders who rotate all tokens and audit accounts post-patch will catch this — but many will miss it
The supporting signals.
| In-the-wild exploitation | YES — confirmed active. watchTowr reported exploitation by Sep 1, 2026, just 3 days after disclosure. Attackers observed minting admin tokens and enumerating federated access topologies. Covered by BleepingComputer, The Hacker News, Dark Reading. |
|---|---|
| KEV status | Listed. Added to CISA Known Exploited Vulnerabilities catalog. |
| Proof-of-concept | Public. PoC available at fankh/vulnerability-poc on GitHub. Trivially reproducible per multiple researchers. Single HTTP request to forge token. |
| EPSS | 0.01242 (top ~5% activity probability). Expect this to climb rapidly given active exploitation and public PoC. |
| CVSS vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — Network-attackable, low complexity, no privileges, no interaction. Full CIA impact. This vector is accurate. |
| Affected versions | All self-hosted JFrog Artifactory versions across branches prior to 7.111.21, 7.117.28, 7.125.20, 7.133.29, 7.146.38, 7.161.20. JFrog SaaS/Cloud is not affected. |
| Fixed versions | 7.111.21, 7.117.28, 7.125.20, 7.133.29, 7.146.38, 7.161.20 (select the patch matching your release branch). |
| Exposure data | JFrog Artifactory is used by 5,000+ organizations globally, 58% large enterprise (10,000+ employees). Many expose Artifactory externally for developer artifact pulls. Exact Shodan/Censys counts not yet published but scanning activity is confirmed. |
| Disclosure date | 2026-08-28 (JFrog advisory + patch release simultaneous). |
| Reporting researcher | Credited to watchTowr for in-the-wild discovery; JFrog internal security team for advisory. |
noisgate verdict.
The single most decisive factor is supply-chain pivot via artifact repository — Artifactory is, by definition, the trusted source for every binary artifact downstream CI/CD pipelines consume, and unauthenticated admin access means an attacker can silently poison builds at fleet scale. Active exploitation within 72 hours of disclosure with a public PoC and KEV listing eliminates any theoretical friction discount.
Why this verdict
- Unauthenticated remote, default config: The attack requires zero credentials, zero user interaction, and targets the out-of-the-box configuration. There is no friction from authentication requirements — PR:N is as bad as it gets.
- Role multiplier: JFrog Artifactory is a canonical supply-chain artifact store — it sits in the CI/CD + artifact stores high-value role category. ≥90% of Artifactory installations serve exactly this role (that's the product's entire purpose). A compromised Artifactory instance yields supply-chain-scale blast radius: poisoned artifacts propagate to every downstream build, container deployment, and release pipeline that pulls from it. The chain succeeds in the high-value role by definition — verdict floor is CRITICAL.
- Active exploitation + KEV: CISA KEV-listed with observed in-the-wild exploitation within 72 hours of disclosure. watchTowr confirmed attackers forging admin tokens and enumerating environments. Public PoC available. This is not theoretical.
- Patch does not revoke tokens: Even after upgrading, previously minted attacker tokens remain valid. This extends the exploitation window and increases the blast radius for organizations that patch without auditing tokens.
- No meaningful friction: The only friction point — network reachability — is weak. Many Artifactory instances are intentionally internet-facing for developer and CI/CD access. Even internal-only instances are reachable post-initial-access, and the supply-chain poisoning impact magnifies any internal compromise.
Why not higher?
The score is already at 9.8 CRITICAL, the maximum practical severity. There is no higher bucket. The only nuance preventing a theoretical 10.0 is Scope:Unchanged in the CVSS vector — the vulnerability itself doesn't change authorization scope, though the real-world supply-chain impact clearly crosses trust boundaries.
Why not lower?
Downgrading would require evidence that the attack needs authentication, unusual configuration, or that the affected component occupies a low-value role. None of these apply. Artifactory IS the artifact store — it's not occasionally deployed in a high-value role, it IS the high-value role. The default config is vulnerable. Active exploitation is confirmed. Lowering this below CRITICAL would be indefensible.
What to do — in priority order.
- Block unauthenticated access to JFrog Access API endpoints immediately — Apply WAF or reverse-proxy rules to deny unauthenticated requests to
/access/api/v1/token-creation endpoints. This is a same-day action — deploy within the noisgate CRITICAL mitigation SLA of 3 days, but ideally within hours given active exploitation. - Restrict network exposure of Artifactory to trusted CIDR ranges — If Artifactory is internet-facing, place it behind VPN, ZTNA, or IP allowlist immediately. Only CI/CD runners and authenticated developers should reach it. Deploy within 3 days.
- Rotate the join key to a strong, manually-set value — Even before patching, setting a custom join key in
$JFROG_HOME/artifactory/var/etc/access/access.config.latest.ymleliminates the phantom join key attack vector. This is the most targeted compensating control. - Audit and revoke all access tokens created after Aug 28, 2026 — Patching does NOT invalidate attacker-minted tokens. Use the Artifactory admin API to list all tokens, identify any created between Aug 28 and your patch date from unexpected sources, and revoke them. This is mandatory post-patch hygiene.
- Enable immutable repository policies on critical release repos — Prevents overwrites of existing artifacts, limiting the supply-chain poisoning vector even if admin access is obtained. Deploy within 3 days for production release repositories.
- Standard network IDS/IPS signatures alone — the exploit uses legitimate HTTP POST requests to standard API endpoints; without Artifactory-specific payload inspection, generic IDS will not flag it.
- Patching without token revocation — the patch closes the door but does not kick out intruders already inside. Previously minted admin tokens remain valid indefinitely until manually revoked.
- JFrog SaaS migration as an emergency response — while SaaS is not affected, migrating a production artifact repository is a multi-week project, not a viable compensating control for an actively exploited CVE.
Crowdsourced verification payload.
Run this script on the Artifactory host or any machine with curl and network access to the Artifactory instance. Invoke as: bash check_cve_2026_82329.sh https://artifactory.example.com:8082. No authentication required (it checks the version endpoint which is typically unauthenticated).
#!/usr/bin/env bash
# check_cve_2026_82329.sh — Detect CVE-2026-82329 vulnerable JFrog Artifactory
# Usage: bash check_cve_2026_82329.sh <ARTIFACTORY_BASE_URL>
# Example: bash check_cve_2026_82329.sh https://artifactory.example.com:8082
# Requires: curl, grep, sort (standard coreutils)
# Exit codes: 0=VULNERABLE, 1=PATCHED, 2=UNKNOWN
set -euo pipefail
if [ $# -lt 1 ]; then
echo "Usage: $0 <ARTIFACTORY_BASE_URL>"
exit 2
fi
BASE_URL="${1%/}"
# Patched versions per branch
PATCHED_VERSIONS="7.111.21 7.117.28 7.125.20 7.133.29 7.146.38 7.161.20"
# Fetch version from system info endpoint
VERSION=$(curl -sk --max-time 10 "${BASE_URL}/artifactory/api/system/version" 2>/dev/null | grep -oP '"version"\s*:\s*"\K[0-9.]+' || true)
if [ -z "$VERSION" ]; then
# Try alternative endpoint
VERSION=$(curl -sk --max-time 10 "${BASE_URL}/router/api/v1/system/health" 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 "Verify the URL and ensure the system info endpoint is accessible."
exit 2
fi
echo "Detected Artifactory version: ${VERSION}"
# Extract major.minor branch (first two octets of 3-part version)
IFS='.' read -r V_MAJ V_MIN V_PATCH <<< "$VERSION"
BRANCH="${V_MAJ}.${V_MIN}"
# Find the patched version for this branch
PATCHED=""
for PV in $PATCHED_VERSIONS; do
IFS='.' read -r P_MAJ P_MIN P_PATCH <<< "$PV"
if [ "$V_MAJ" = "$P_MAJ" ] && [ "$V_MIN" = "$P_MIN" ]; then
PATCHED="$PV"
break
fi
done
if [ -z "$PATCHED" ]; then
# Version branch not in known patched list — could be older unsupported or newer
if [ "$V_MAJ" -lt 7 ]; then
echo "VULNERABLE — Version ${VERSION} is on an unsupported major branch (pre-7.x), likely affected."
exit 0
fi
if [ "$V_MAJ" -eq 7 ] && [ "$V_MIN" -gt 161 ]; then
echo "PATCHED — Version ${VERSION} is on a branch newer than all known affected branches."
exit 1
fi
echo "UNKNOWN — Version ${VERSION} (branch ${BRANCH}) not in known affected/patched matrix."
echo "Manually verify against JFrog advisory."
exit 2
fi
# Compare patch level
if [ "$V_PATCH" -ge "$P_PATCH" ]; then
echo "PATCHED — Version ${VERSION} meets or exceeds patched version ${PATCHED}."
exit 1
else
echo "VULNERABLE — Version ${VERSION} is below patched version ${PATCHED} for branch ${BRANCH}."
echo "Upgrade immediately. CVE-2026-82329 is actively exploited (KEV-listed)."
exit 0
fiIf you remember one thing.
Sources
- BleepingComputer — Hackers exploit critical JFrog Artifactory flaw
- The Hacker News — Attackers exploit critical JFrog Artifactory flaw
- Dark Reading — Attackers jump on critical Artifactory flaw
- SecurityWeek — Critical JFrog Artifactory vulnerability exploited in the wild
- SOC Prime — CVE-2026-82329 analysis
- dev.to — Exploitation of JFrog Artifactory CVE-2026-82329
- JFrog Security Advisories
- CISA KEV Catalog
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.