First Seen: August 15, 2026
Malware: Unnamed custom Rust-based backdoor and uploaded webshells
Affected Products: JFrog Artifactory Self-Hosted (Self-Managed)
Impact: Attackers have exploited three JFrog Artifactory Self-Hosted flaws in the wild to gain full administrative control of internet-reachable repositories. CVE-2026-42018 leaks an internal anonymous-user JWT to unauthenticated callers, CVE-2026-42016 lets that token be swapped for administrator scope, and the two chained together produce a persistent admin account. Exploitation ran from August 15 to September 8, 2026, peaking near 406,000 attempts in a single day, with attackers creating rogue admin accounts, stealing configuration and join keys, installing malicious Groovy plugins, and deploying a Rust backdoor. Critically, patching does not revoke tokens already minted, so upgrading alone leaves compromised instances compromised.
Timeline
| Date | Event |
|---|---|
| Jul 27, 2026 | JFrog ships the first CVE-2026-42018 fix on the 7.133.11 branch |
| Aug 15, 2026 | Attackers begin chaining CVE-2026-42018 and CVE-2026-42016 to access the admin account |
| Aug 28, 2026 | CVE-2026-82329 was disclosed and patched |
| Sep 1, 2026 | Public exploit released, CVE-2026-82329 mass exploitation begins |
| Sep 2, 2026 | CVE-2026-82329 exploitation attempts volume peaks at 406,000 |
| Sep 8, 2026 | Minted admin tokens confirmed to survive patching |
| Sep 13, 2026 | Rust-based backdoor C2 observed |
CVEs
| CVE | Name | Affected Product | Zero-Day | CISA KEV | Patch |
|---|---|---|---|---|---|
CVE-2026-42016 | JFrog Artifactory Incorrect Authorization Vulnerability | JFrog Artifactory Self-Hosted | No | No | Yes |
CVE-2026-42018 | JFrog Artifactory Improper Authentication Vulnerability | JFrog Artifactory Self-Hosted | No | No | Yes |
CVE-2026-82329 | JFrog Artifactory Improper Authentication Vulnerability | JFrog Artifactory Self-Hosted | No | Yes | Yes |
Vulnerability Details
CVE-2026-42018 causes Artifactory to return an internal anonymous-user JSON Web Token to a caller who has never authenticated, even when anonymous access has been explicitly disabled. CVE-2026-42016 then allows that low-privilege token to be exchanged for one carrying administrator scope, because Artifactory validates a token’s signature and issuer without properly enforcing its intended scope. Chained together, these two flaws move an unauthenticated attacker to a persistent administrator account.CVE-2026-82329 is a separate and more severe defect in the JFrog Access service that requires no chaining at all. On default installations, the trusted cluster join key list is built by splitting a configuration string on commas without filtering empty entries, so an empty string is registered as a live join key with a deterministic signing secret. An attacker can forge an HS256 JWT whose key identifier is the SHA-256 hash of the empty string, present it to the unauthenticated cluster join endpoint, and receive a service-scoped administrator token that is immediately exchangeable for a non-expiring full administrator platform token./dev/shm, /tmp, and /var/tmp, addition of SSH keys to newly created accounts, and deployment of a custom Rust-based backdoor with command-and-control capability that beacons to attacker infrastructure on non-standard ports.Vulnerability
| CVE ID | Affected Products | Affected CPE | CWE ID |
|---|---|---|---|
CVE-2026-42016 | JFrog Artifactory Self-Hosted Before 7.133.11 | cpe:2.3:a:jfrog:artifactory:*:*:*:*:self_hosted:*:*:* | CWE-863 |
CVE-2026-42018 | JFrog Artifactory Self-Hosted Before 7.111.20; 7.117.0–7.117.27; 7.125.0–7.125.19; 7.133.0–7.133.28; 7.146.0–7.146.8 | cpe:2.3:a:jfrog:artifactory:*:*:*:*:self_hosted:*:*:* | CWE-287 |
CVE-2026-82329 | JFrog Artifactory Self-Hosted 7.111.4–7.111.20; 7.117.0–7.117.27; 7.125.0–7.125.19; 7.133.0–7.133.28; 7.146.0–7.146.37; 7.161.0–7.161.19 | cpe:2.3:a:jfrog:artifactory:*:*:*:*:self_hosted:*:*:* | CWE-287 |
Recommendations
Move every self-hosted Artifactory instance to 7.111.21, 7.117.28, 7.125.20, 7.133.29, 7.146.38 or 7.161.20, whichever is the correct target for your release branch, or later. JFrog Cloud instances are unaffected and require no action, but any self-managed deployment reachable from the internet should be treated as urgent.
Patching alone does not remediate this incident, because tokens minted through CVE-2026-82329 carry administrator scope with no expiration claim and survive the upgrade untouched. Enumerate all access tokens, identify every admin-scoped token that lacks an expiry claim, and revoke each one individually. Allow for token caching, since revocation is not an instantaneous eviction.
Search the Access service startup logs for the key identifier prefix kid: e3b0c442, which indicates the empty-string join key was registered. Then hunt for HTTP 201 responses from /access/api/v1/registry/join and its /router variants, particularly from a node that is not a recognised cluster member.
Look for an HTTP 401 on a bare Access API path followed shortly by an HTTP 200 on a trailing-slash or otherwise altered variant of the same path from the same client — the signature of CVE-2026-42018. Correlate with a subsequent POST to /access/api/v1/tokens and administrator accounts created under the “token:anonymous” actor identity.
Potential MITRE ATT&CK TTPs
Indicators of Compromise (IOCs)
| Type | Value |
|---|---|
| SHA1 | 513a907b69edffc3cb77a494da395178d21ef9bd |
| IPv4 (26 total) | 149[.]102[.]229[.]150,186[.]247[.]79[.]240,182[.]62[.]201[.]69,146[.]19[.]216[.]120,155[.]254[.]120[.]23,137[.]184[.]111[.]69,45[.]61[.]176[.]88,185[.]190[.]58[.]172,103[.]124[.]165[.]42,176[.]88[.]121[.]152,105[.]188[.]75[.]16,223[.]144[.]227[.]110,129[.]121[.]56[.]234,104[.]28[.]251[.]139,15[.]157[.]64[.]113,16[.]54[.]250[.]190,220[.]246[.]124[.]92,213[.]136[.]72[.]87,89[.]117[.]49[.]147,45[.]33[.]75[.]219,23[.]92[.]20[.]11,173[.]255[.]226[.]148,195[.]154[.]157[.]234,62[.]210[.]87[.]212,45[.]79[.]190[.]169,163[.]172[.]132[.]245 |
| IPv4:Port | 64[.]207[.]232[.]6[:]8443 |
| Domain | log[.]gitclone[.]org |
| URLs | hxxp[:]//log[.]gitclone[.]org[:]45678/smtp, hxxp[:]//3[.]88[.]162[.]79[:]36789/smtp |
| File Path | /tmp/.z, /dev/shm, /tmp, /var/tmp |
| HTTP Request | POST /access/api/v1/registry/join, POST /access/api/v1/registry/join/router, POST /access/api/v1/registry/join/router?override=true, POST /access/api/v1/aws/token/, POST /access/api/v1/tokens, PUT /api/security/users/, GET /api/system/configuration, GET /access/api/security/tokens, GET /access/api/security/users, GET /access/api/v1/users |
| JWT Key ID | e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 |
Patch Link
References
- wiz.io — Artifactory under attack in the wild
- fastly.com — CVE-2026-82329 exploitation activity
- mine2.io — Artifactory 82329: tokens outlive the patch
What Next?
At Hive Pro, it is our mission to detect the most likely threats to your organization and to help you prevent them from happening.
