JFrog Artifactory CVE-2026-82329
Executive Summary
What happened: JFrog disclosed CVE-2026-82329 on 28 August 2026 as a Critical authentication weakness in self-managed Artifactory, and the Canadian Centre for Cyber Security and Tenable subsequently reported exploitation in the wild. Under the affected default behavior, a network-reachable unauthenticated caller may gain administrative privileges. JFrog lists vulnerable ranges across the 7.111, 7.117, 7.125, 7.133, 7.146, and 7.161 release branches and published a first-fixed release for each; affected cloud environments were already fortified by the vendor.
How the technical chain works: independent reproduction against Artifactory JCR 7.146.25 reached unauthenticated JFrog Access registry-join routes and received a service-level administrative token. The reproduced sequence then enumerated users, reset the built-in administrator, created an additional administrative token, and read system information. The researchers attribute the behavior to acceptance of a blank additional join key and report that fixed 7.146.38 rejects it. Those mechanics are laboratory evidence, not a claim that every observed attacker followed the same sequence; no public victim record, actor, payload, or atomic indicator was available during this run.
Why detection must span the application and host: the two registry-join paths, service-token scope, user changes, and token creation live in reverse-proxy and JFrog Access logs, not portable Falcon endpoint events. The four CQL queries therefore do not pretend to detect the HTTP exploit itself. Q01 inventories likely Artifactory servers for version-owner review. Q02 and Q04 hunt for unusual service-child execution and execution from Artifactory-writable paths. Q03 builds a noisy Java egress baseline that becomes useful only after it is restricted to confirmed Artifactory hosts and approved destinations. IPv6, wrapper depth, application-log schemas, artifact provenance, and legitimate cluster joins remain explicit coverage limits.
Operational consequence: Artifactory sits inside build and release trust. Administrative takeover can expose identities, alter permissions or tokens, and undermine repository integrity even when no host malware is visible. Detection is therefore secondary to immediate fixed-version verification, controlled exposure reduction, preservation of request and security-audit logs, review of administrative identities, and artifact integrity checks before normal release activity resumes.
| Priority | Why now | Coverage delivered | Key limitation |
|---|---|---|---|
| Verify fixed version and preserve audit evidence | Critical authentication bypass with reported exploitation | 4 CQL queries: 1 inventory and 3 analyst-led hunts; 2 application-log gaps | Static review only; exploit-specific HTTP and token semantics require JFrog/proxy logs |
Source and Claim Review
Eight current-run sanitized snapshots preserve vendor, government, independent reproduction, detection, logging, network, token, and software-supply-chain guidance. Source text was treated as untrusted data and no executable proof material was retained.
| ID | Publisher | Tier | Independence group | Accessed | Status |
|---|---|---|---|---|---|
| S01 | JFrog | primary-vendor-advisory | jfrog | 2026-09-02T11:03:01Z | complete-sanitized |
| S02 | Canadian Centre for Cyber Security | government-advisory | canadian-centre-cyber-security | 2026-09-02T11:03:01Z | complete-sanitized |
| S03 | Pruva | independent-technical-reproduction | pruva | 2026-09-02T11:03:01Z | complete-sanitized |
| S04 | Tenable Research | independent-vendor-alert | tenable | 2026-09-02T11:03:01Z | complete-sanitized |
| S05 | JFrog | primary-vendor-guidance | jfrog | 2026-09-02T11:03:01Z | complete-sanitized |
| S06 | JFrog | primary-vendor-guidance | jfrog | 2026-09-02T11:03:01Z | complete-sanitized |
| S07 | NIST | government-standard | nist | 2026-09-02T11:03:01Z | complete-sanitized |
| S08 | JFrog | primary-vendor-guidance | jfrog | 2026-09-02T11:03:01Z | complete-sanitized |
Claim ledger
| Claim | Statement | Sources | Confidence | Contradiction / caveat |
|---|---|---|---|---|
| C01 | CVE-2026-82329 is a Critical CWE-287 authentication weakness in JFrog Artifactory. | S01 | high | none |
| C02 | Under default configuration, an unauthenticated network attacker may obtain administrative privileges in a vulnerable self-managed deployment. | S01 | high | none |
| C03 | Six maintained Artifactory release branches were affected and JFrog published first-fixed versions for each branch on 2026-08-28. | S01, S02 | high | none |
| C04 | JFrog states that affected cloud environments were already fortified and require no customer action for this issue. | S01 | high | none |
| C05 | Government and security-vendor reporting state that CVE-2026-82329 has reportedly been exploited in the wild. | S02, S04 | medium | no public victim, actor, or payload details |
| C06 | Independent researchers reproduced zero-credential administrative takeover on Artifactory JCR 7.146.25 and confirmed the same technique was rejected on fixed 7.146.38. | S03 | medium | independent reproduction, not vendor validation |
| C07 | The reproduced chain begins with unauthenticated registry join API requests and returns a service-level administrative token. | S03 | medium | independent reproduction, not confirmed incident telemetry |
| C08 | Follow-on reproduced actions included user enumeration, built-in administrator reset, administrative token creation, and system-information access. | S03 | medium | demonstrated in a lab, not asserted as observed attacker behavior |
| C09 | The reproduction identifies both /access/api/v1/registry/join and /access/api/v1/registry/join/router as defensive review points. | S03 | medium | endpoint use may include legitimate cluster operations |
| C10 | The fixed behavior rejects blank join keys that were accepted by vulnerable builds in the independent reproduction. | S03 | medium | implementation detail derived from third-party analysis |
Hunt Brief and Attack Chain
The hunt model separates vulnerable-product inventory, exploit-specific application evidence, administrative identity changes, and post-compromise endpoint behavior. Important missing telemetry remains a named gap rather than an invented Falcon field.
| Step | Claims | Behavior | Platform | Detection goal |
|---|---|---|---|---|
| 1 | C02, C07, C09 | unauthenticated request reaches a vulnerable Artifactory registry-join path | network | review reverse-proxy and JFrog Access logs for unapproved registry joins |
| 2 | C07 | service-level administrative token is issued | identity | review JFrog Access audit records for unexpected service-token issuance |
| 3 | C08 | administrative APIs enumerate users, reset an administrator, or mint tokens | identity | identify unapproved administrative changes and preserve audit evidence |
| 4 | C08 | administrative control can alter repositories or enable host-level follow-on activity | cross-platform | hunt Artifactory service children, unusual egress, and execution from service data paths |
Hypotheses
| ID | Behavior | Telemetry | Use | Lookback | Validation |
|---|---|---|---|---|---|
| H01 | Artifactory server inventory and version lead | ProcessRollup2 | inventory | 7d — current inventory with bounded process volume | Run against a known Artifactory host and confirm process-path/command-line markers; verify the actual version with the application owner rather than trusting the query alone. |
| H02 | unusual shell or interpreter child of the Artifactory service | ProcessRollup2 | hunt | 30d — supports incident scoping around the disclosure window | Execute a harmless child-process marker from an isolated test service account and baseline 30 days of legitimate Artifactory child processes before escalation. |
| H03 | unusual outbound IPv4 connection from the Artifactory service | NetworkConnectIP4 | hunt | 14d — recent egress baseline with manageable aggregation cost | Confirm NetworkConnectIP4 attribution for a known benign Artifactory request, then compare two weeks of destinations with the application-owner allowlist. |
| H04 | execution from Artifactory-managed or service-writable directories | ProcessRollup2 | hunt | 30d — covers disclosure and retrospective scoping | Place and run a harmless signed test binary in a disposable lab path matching the pattern; verify expected detection and baseline authorized hooks. |
| H05 | unapproved registry-join request | reverse-proxy or JFrog Access logs | gap | 30d — spans public disclosure and reported exploitation | Map actual proxy/Access log fields and replay a vendor-approved benign cluster join in a lab; do not replay exploit material. |
| H06 | unexpected JFrog administrative identity sequence | JFrog Access audit logs | gap | 30d — covers the disclosure window and durable token risk | Export a known-good token and administrator-change baseline, then compare JFrog audit records with owner-approved service identities. |
Affected surface and telemetry
The affected surface is self-managed JFrog Artifactory and its Access service, reverse proxy, administrative identity plane, repository storage, and downstream CI/CD consumers. Portable coverage assumes process and IPv4 network events where populated. HTTP URI, token scope, user/permission changes, artifact promotion, IPv6, wrapper lineage, and deployment-specific paths require owner and tenant validation.
Consolidated IOC Table
No atomic IOCs were published by the accessible primary, government, or independent technical sources as of 2026-09-02. CVE-2026-82329 is not an IOC, and the registry-join URI paths are defensive application-log pivots rather than attacker infrastructure. No IP address, domain, payload hash, certificate, username, or token value is included.
| Evidence class | Result | Defensive use | Source basis |
|---|---|---|---|
| Atomic network indicators | None published as of 2026-09-02 | No blocklist generated | S01-S04 |
| Payload hashes | None published as of 2026-09-02 | No hash detection generated | S01-S04 |
| Application pivots | /access/api/v1/registry/join and /access/api/v1/registry/join/router | Review only in JFrog/proxy logs with approved-node context | S03 |
ATT&CK Mapping
Mappings are analyst inferences from source-backed behavior. Product inventory and patching are intentionally unmapped, and the laboratory sequence is not represented as universal in-the-wild tradecraft.
| Tactic | Technique | Name | Behavior | Basis | Sources | Claims |
|---|---|---|---|---|---|---|
| Initial Access | T1190 | Exploit Public-Facing Application | an unauthenticated network request reaches a vulnerable Artifactory authentication path | analyst inference | S01, S03 | C02, C07 |
| Privilege Escalation | T1068 | Exploitation for Privilege Escalation | the reproduced flow elevates an unauthenticated caller to administrative service-token privileges | analyst inference | S01, S03 | C02, C07 |
| Account Access Removal | T1531 | Account Access Removal | resetting the built-in administrator can deny legitimate administrative access | analyst inference | S03 | C08 |
| Persistence | T1136 | Create Account | minted administrative identities or tokens can provide durable platform access | analyst inference | S03 | C08 |
| Discovery | T1087 | Account Discovery | the reproduced chain enumerates Artifactory users | analyst inference | S03 | C08 |
Native / Non-CQL Hunts
The exploit-specific review belongs in JFrog and reverse-proxy records. These native hunts should be completed before interpreting generic Java or file-path endpoint results.
| Hunt | Log source | Logic | Response |
|---|---|---|---|
| Registry-join review | Reverse-proxy access log and JFrog Access request log | Find POST requests to the two registry-join paths; compare source address, trace ID, response, node identity, and timing with the approved cluster-node ledger. | Preserve raw records and configuration; escalate unknown successful joins before changing nodes or credentials. |
| Administrative identity sequence | JFrog access-security-audit.log and access audit records | Review creation/update/deletion of users, groups, permissions, access tokens, and Access configuration; correlate unexpected service-admin scope with follow-on administrative APIs. | Preserve token metadata and trace IDs; revoke only after owner/dependency review and replacement readiness. |
| Repository integrity | Artifactory repository, promotion, download, and build provenance records | Diff artifact digests, metadata, permissions, promotions, and downloads against signed manifests and trusted build records for the incident window. | Quarantine unexplained changes and rebuild from reviewed source when integrity cannot be established. |
| Server host follow-on | Falcon ProcessRollup2 and NetworkConnectIP4 event views | On confirmed Artifactory hosts, review service children, execution from writable paths, new files, Java destinations, user context, signer/hash, and prevalence. | Preserve process trees and files; correlate with application evidence before host isolation. |
CrowdStrike LogScale CQL Hunt Queries
All queries are STATIC-ONLY. Start with a one-hour manual window in the intended repository, confirm fields and result semantics, then expand to each card's lookback.
Looks for: Java and service-wrapper processes whose path or command line contains JFrog or Artifactory markers. Accomplishes: identifies likely self-managed servers for urgent owner verification without treating software presence as malicious activity.
// HUNT: Artifactory service inventory and version leads // HYPOTHESIS: H01 // USE: inventory // MITRE: N/A — inventory // CONF: high // FP: low // COST: low // TIMEFRAME: 7d — current server inventory with bounded process volume // REQUIRES: Falcon endpoint event repository; ProcessRollup2; FileName, ImageFileName, CommandLine, ParentBaseFileName, aid, ComputerName, @timestamp // FALSE POSITIVES: Every legitimate self-managed Artifactory service is an expected result // TUNING: Add approved Artifactory host groups and packaging-specific service paths after owner verification // VALIDATION: STATIC-ONLY #event_simpleName = ProcessRollup2 | (ImageFileName = /(?:jfrog|artifactory)/i OR CommandLine = /(?:jfrog|artifactory)/i) | groupBy([aid, ComputerName, FileName, ImageFileName, CommandLine, ParentBaseFileName], function=[count(as=Executions), min(@timestamp, as=FirstSeen), max(@timestamp, as=LastSeen)], limit=1000) | sort(LastSeen, order=desc, limit=1000)
Looks for: shells, scripting engines, and transfer utilities launched directly by Java or an Artifactory/JFrog service wrapper. Accomplishes: surfaces a durable host-level takeover lead while preserving command line and user context for plugin and maintenance exclusions.
// HUNT: Shell or interpreter launched by an Artifactory service // HYPOTHESIS: H02 // USE: hunt // MITRE: T1059 // CONF: medium // FP: medium // COST: low // TIMEFRAME: 30d — retrospective window spanning disclosure and reported exploitation // REQUIRES: Falcon endpoint event repository; ProcessRollup2; FileName, ImageFileName, CommandLine, ParentBaseFileName, ParentCommandLine, aid, ComputerName, UserName, TargetProcessId, @timestamp // FALSE POSITIVES: Approved plugins, backup hooks, repository maintenance, upgrades, and support diagnostics // TUNING: Exclude only owner-approved wrapper, account, path, and command combinations after a 30-day baseline // VALIDATION: STATIC-ONLY #event_simpleName = ProcessRollup2 | ParentBaseFileName = /^(?:java|javaw|artifactory|jfrog)(?:\.exe)?$/i | FileName = /^(?:cmd|powershell|pwsh|sh|bash|dash|zsh|python|python3|perl|curl|wget|certutil|bitsadmin)(?:\.exe)?$/i | table([@timestamp, aid, ComputerName, UserName, FileName, ImageFileName, ParentBaseFileName, ParentCommandLine, CommandLine, TargetProcessId]) | sort(@timestamp, order=desc, limit=1000)
Looks for: IPv4 destinations and ports contacted by Java, grouped per host for application-owner review. Accomplishes: provides a post-compromise egress baseline, but means little until approved registries, proxies, webhooks, replication, and internal ranges are excluded.
// HUNT: Java egress baseline for Artifactory hosts // HYPOTHESIS: H03 // USE: hunt // MITRE: T1071 // CONF: low // FP: high // COST: medium // TIMEFRAME: 14d — recent destination baseline with bounded aggregation // REQUIRES: Falcon endpoint event repository; NetworkConnectIP4; ContextBaseFileName, RemoteAddressIP4, RemotePort, LocalAddressIP4, aid, ComputerName, @timestamp; restrict results to confirmed Artifactory hosts // FALSE POSITIVES: Remote package repositories, proxies, license checks, webhooks, replication, backups, and monitoring // TUNING: Restrict to confirmed Artifactory host groups and exclude owner-approved destinations, internal ranges, and proxies // VALIDATION: STATIC-ONLY #event_simpleName = NetworkConnectIP4 | ContextBaseFileName = /^(?:java|javaw)(?:\.exe)?$/i | groupBy([aid, ComputerName, ContextBaseFileName, RemoteAddressIP4, RemotePort], function=[count(as=Connections), min(@timestamp, as=FirstSeen), max(@timestamp, as=LastSeen)], limit=1000) | sort(Connections, order=desc, limit=1000)
Looks for: non-Java processes executing from common JFrog, Artifactory, Access, data, work, cache, or temp path combinations. Accomplishes: catches a plausible payload-staging boundary while keeping authorized hooks and upgrades as explicit review items.
// HUNT: Execution from Artifactory service-writable paths // HYPOTHESIS: H04 // USE: hunt // MITRE: T1204 — analyst-inferred post-compromise execution // CONF: medium // FP: medium // COST: medium // TIMEFRAME: 30d — retrospective window spanning disclosure and reported exploitation // REQUIRES: Falcon endpoint event repository; ProcessRollup2; FileName, ImageFileName, CommandLine, ParentBaseFileName, aid, ComputerName, UserName, TargetProcessId, @timestamp // FALSE POSITIVES: Approved maintenance scripts, repository hooks, support bundles, and upgrade tooling // TUNING: Replace generic path terms with verified Artifactory service-writable paths and exclude signed owner-approved hooks // VALIDATION: STATIC-ONLY #event_simpleName = ProcessRollup2 | ImageFileName = /(?:jfrog|artifactory|access).{1,2}(?:var|data|work|cache|temp|tmp|run).{1,2}/i | FileName != /^(?:java|javaw)(?:\.exe)?$/i | table([@timestamp, aid, ComputerName, UserName, FileName, ImageFileName, ParentBaseFileName, CommandLine, TargetProcessId]) | sort(@timestamp, order=desc, limit=1000)
Operationalization and IOA Candidates
Every query remains hunt-only. No alert package or Custom IOA is produced because tenant parsing, positive tests, benign baselines, prevalence, scheduling, suppression, routing, ownership, and SLA evidence are absent.
| Alert | Query | Stage 3 use | Decision | Readiness | Rationale |
|---|---|---|---|---|---|
| A01 | Q01 | inventory | hunt-only | design-only | Inventory identifies likely servers but cannot establish vulnerable version or malicious activity. |
| A02 | Q02 | hunt | hunt-only | design-only | Shell-child behavior is meaningful only after the Artifactory role, plugins, wrappers, maintenance accounts, and benign baseline are confirmed. |
| A03 | Q03 | hunt | hunt-only | design-only | Java egress is intrinsically noisy and aggregated results require a confirmed Artifactory host set plus owner-maintained destination allowlist. |
| A04 | Q04 | hunt | hunt-only | design-only | Execution from service-writable paths can indicate staging but requires installation-specific paths and authorized-hook exclusions. |
Operational gate
Before scheduling anything, confirm the intended repo, execute safe positive and representative benign tests, define grouping and deduplication, measure result volume, preserve event-level triage fields, assign an owner and SLA, and record a disable/rollback procedure.
Machine-Readable IOC Appendix
The appendix deliberately contains no operational indicator values. The three cards make the absence machine-copyable without fabricating hashes, addresses, or actor infrastructure.
No atomic IOCs were published by accessible sources as of 2026-09-02. No payload hashes are available.
No atomic IOCs were published by accessible sources as of 2026-09-02. No attacker IP addresses or domains are available.
POST /access/api/v1/registry/join POST /access/api/v1/registry/join/router Source: S03; defensive log pivots, not IOCs.
Hardening — Tiered and Deployable
- Upgrade every affected Artifactory branch to a fixed release (CTRL01; MITRE M1051/M1030 as applicable) — Upgrade each affected instance to 7.111.21, 7.117.28, 7.125.20, 7.133.29, 7.146.38, 7.161.20, or a later supported release for its branch. deployable-design Verify: Read the running version from the supported administration interface, run health/readiness checks, authenticate with approved test identities, and complete controlled upload/download checks. Expected: Every production node reports a fixed or later supported release and all defined health and artifact checks pass. Rollback: If a stop condition occurs, isolate external access, restore the tested pre-change snapshot and database using the approved recovery plan, verify repository consistency, and keep the restored vulnerable service restricted until a corrected upgrade succeeds. Authority: S01 · JFrog CVE-2026-82329 advisory, 2026-08-28.
- Restrict Artifactory and Access APIs to approved paths and nodes (CTRL02; MITRE M1051/M1030 as applicable) — Place the service behind the approved reverse proxy, bind backend services only to the proxy or management network, deny direct public/backend access, and allow registry-join paths only from documented cluster-management sources where the proxy supports path controls. deployable-design Verify: From approved and unapproved test networks, verify frontend availability, backend denial, authorized node communication, and reverse-proxy request logging. Expected: Only approved proxy/management paths reach backend services; normal client and cluster health checks pass. Rollback: Restore the previous reviewed proxy and network policy, confirm service recovery, then apply an emergency perimeter restriction that does not re-expose backend services broadly. Authority: S06 · JFrog Artifactory HTTP Settings, accessed 2026-09-02.
- Centralize and alert on JFrog request and security-audit records (CTRL03; MITRE M1051/M1030 as applicable) — Forward protected copies of reverse-proxy request logs plus JFrog request, Access, and access-security-audit logs; alert on registry-join requests from unapproved sources and on unexpected user, permission, token, or Access-configuration changes. deployable-design Verify: Generate owner-approved benign user and short-lived token changes plus a legitimate join test; verify exact records, trace IDs, actor/source fields, timestamps, and alerts arrive. Expected: Every test is attributable end to end and source-health monitoring detects an intentional test pause. Rollback: Disable the new forwarding/parser path, restore the prior logging configuration and retention, and confirm the original logs remain locally available and complete. Authority: S05 · JFrog Audit Trail Log, accessed 2026-09-02.
- Inventory and revoke untrusted administrative tokens after evidence capture (CTRL04; MITRE M1051/M1030 as applicable) — After preservation and approval, revoke unknown or exposed administrative/service tokens, reset affected administrators through supported controls, issue least-privilege short-lived replacements, and update dependent automation through the secret-management system. deployable-design Verify: Confirm revoked token rejection, replacement token scope and expiry, dependent job health, and absence of unexplained active administrative tokens. Expected: Untrusted credentials fail, approved replacements work only for intended resources, and all dependent services remain healthy. Rollback: Re-enable access only with a new approved least-privilege token; never restore a suspected compromised token. If a dependency fails, issue a time-bounded emergency credential and document its expiry and owner. Authority: S08 · JFrog Access Tokens documentation, accessed 2026-09-02.
- Verify artifact provenance and quarantine unexplained repository changes (CTRL05; MITRE M1051/M1030 as applicable) — Require signature/provenance verification before promotion, compare repository metadata and artifact hashes with trusted build records, quarantine unexplained changes, and rebuild affected artifacts from reviewed source when integrity cannot be proven. deployable-design Verify: Promote a signed test artifact and reject a deliberately untrusted test artifact; compare recorded digest and provenance through the consuming pipeline. Expected: Trusted artifact promotion succeeds, untrusted promotion is denied or quarantined, and downstream digest matches the approved record. Rollback: Return the pilot repository to the prior promotion policy while preserving quarantine and audit evidence; use an approved exception only for a named digest, owner, and expiry. Authority: S07 · NIST SP 800-204D, February 2024.
- Separate artifact administration, build consumption, and service egress (CTRL06; MITRE M1051/M1030 as applicable) — Permit administrators only through managed privileged paths, allow build clients only the required repository operations, route Artifactory egress through approved proxies, and deny arbitrary service-to-workload lateral movement. deployable-design Verify: Test approved administrator, build download/upload, remote repository, webhook, replication, denied lateral-movement, and recovery paths. Expected: Only documented identities and flows succeed; denied paths produce attributable logs without disrupting the pilot. Rollback: Restore the previous reviewed segmentation policy, confirm all critical paths recover, and retain emergency perimeter restrictions plus denied-flow evidence. Authority: S07 · NIST SP 800-204D, February 2024.
Deployable playbook · CTRL01 + CTRL02
- Confirm owners, fixed-version target, backups, flow inventory, emergency access, maintenance window, and stop conditions.
- Capture current versions, node topology, proxy/network policy, health, repository test hashes, and audit logs.
- Upgrade the nonproduction pilot and apply reviewed proxy/backend restrictions.
- Verify version, readiness, authentication, upload/download, replication/federation, approved/denied network paths, and log arrival.
- Expand node by node only after the pilot remains healthy through the defined observation window.
- On a stop condition, restrict external access, follow the approved restore procedure, verify repository consistency, and keep any vulnerable restored node isolated.
- Retain approvals, hashes, health checks, network tests, and rollback evidence with named owners.
Deployable playbook · CTRL03 + CTRL04
- Preserve request, Access, security-audit, proxy, identity, and repository records before credential changes.
- Build a known-good inventory of administrators, service identities, token IDs/scopes/expiry, cluster nodes, and dependent jobs.
- Validate log parsing with benign owner-approved changes and establish source-health monitoring.
- Revoke one confirmed stale noncritical token and issue a least-privilege short-lived replacement through the secret manager.
- Verify revoked-token denial, replacement scope, dependent job health, and complete audit trace.
- Expand only for confirmed unknown, exposed, or unnecessary tokens under change authority.
- Never restore a suspected token; use a time-bounded emergency replacement if rollback is required and retain full evidence.
Containment Runbook
| Phase | Trigger | Authority | Owner | Evidence | Recovery |
|---|---|---|---|---|---|
| Activate and preserve | affected unpatched version plus suspicious join/token/admin activity, or corroborated Q02/Q04 host behavior | Incident Commander | SOC and Artifact Platform Engineering | raw query exports; proxy/JFrog request and audit logs; process tree; files/hashes; network/DNS; token/user metadata; repository manifests; configuration and change history | no destructive change until evidence custody and service criticality are recorded |
| Constrain access | credible unauthorized registry join, administrative token, or host execution | Incident Commander with Application Owner | Network Security | pre/post ACL and proxy policy, active sessions, cluster health, denied connections | restore only documented required flows after fixed-version and integrity gates pass |
| Contain identity | unknown administrative/service identity, token, password reset, or permission change | Identity Lead and Incident Commander | Identity Security and Artifact Platform Engineering | token IDs/scopes/expiry, user and permission diffs, trace IDs, dependent job map | issue new least-privilege short-lived credentials; never re-enable suspected tokens |
| Protect artifacts | unexplained repository mutation, signature mismatch, or downstream digest drift | Software Supply Chain Lead | Repository and CI/CD Owners | artifact hashes, signatures, manifests, promotion/download logs, affected build/release inventory | quarantine affected artifacts and rebuild/re-promote only from verified source and provenance |
| Recover and re-hunt | all nodes fixed, access constrained, identity remediated, artifacts verified, and health tests passed | Incident Commander and Business Owner | Platform Engineering and SOC | fixed-version inventory, access tests, credential evidence, artifact integrity results, health checks, re-hunt exports | restore service in stages; re-hunt at 24 hours and 7 days; close only after no unexplained activity remains |
Continuity rule: preserve evidence before revocation or repository changes. Do not isolate a critical artifact service, revoke every token, reset all administrators, delete artifacts, or restore snapshots without the incident commander, application owner, dependency map, and tested recovery path.
Detection Coverage and Validation Evidence
Validation state: STATIC REVIEW PASSED after local structure/safety, maintained-field, CQL heuristic, provenance, and duplicate gates. This is not Falcon parsing, canary testing, or evidence of deployment.
| Technique | Coverage | Queries / handoff | Evidence | Limitation |
|---|---|---|---|---|
| T1190 | Gap | H05; native registry-join review | Application-log design | Proxy/JFrog fields and approved node list are not tenant-mapped |
| T1068 | Gap | H06; native token/admin review | Application-log design | No portable endpoint visibility into JFrog token scope |
| T1531 | Gap | H06; administrator-change review | Application-log design | No public incident evidence or tenant audit mapping |
| T1136 | Gap | H06; token/identity review | Application-log design | Legitimate service enrollment needs an owner baseline |
| T1087 | Gap | H06; user-enumeration review | Application-log design | Endpoint queries do not expose administrative API semantics |
| T1059 | Static | Q02 | Local structure/field/syntax review | Direct-parent only; tenant parsing and baseline absent |
| T1071 | Static | Q03 | Local structure/field/syntax review | IPv4 Java baseline is noisy; IPv6 and allowlist absent |
| T1204 | Static | Q04 | Local structure/field/syntax review | Analyst-inferred post-compromise path; deployment paths vary |
Recorded evidence and gaps
- All four queries remain tenant-unverified and were not executed against Falcon.
- The offline tenant-validation dry run records extraction and budget/profile readiness only; it does not contact a tenant or prove parsing.
- H05 and H06 carry the strongest exploit-specific detections but require JFrog Access and reverse-proxy schemas.
- No atomic IOC provenance was applicable because no atomic indicators were published.
- Next step: validate Q01 on an owner-confirmed server, then run Q02 and Q04 manually for one hour and map the JFrog audit fields before any alert design.
Hunt Summary Ticket
TITLE: JFrog Artifactory CVE-2026-82329 hunt — v0.3 Draft SEVERITY: critical — unauthenticated administrative access is possible and exploitation is reportedly occurring SCOPE: self-managed Artifactory; Falcon process/IPv4 telemetry; JFrog Access and reverse-proxy logs HYPOTHESIS: H01 server inventory; H02 service-child execution; H03 Java egress; H04 writable-path execution; H05 registry-join gap; H06 administrative-token gap QUERIES RUN: Q01 inventory; Q02/Q03/Q04 hunt; no alert-candidate query DO FIRST: Q01 over 7 days, verify exact versions with owners, then review native registry-join and token audit records FINDINGS: GAPS: no atomic IOCs; tenant parsing absent; HTTP URI, token scope, IPv6, wrapper depth, and artifact provenance are not mapped in CQL ACTIONS: Platform Engineering patches and restricts exposure; SOC preserves logs and runs Q02-Q04; Supply Chain Security verifies artifacts OWNER: Artifact Platform Engineering / SOC / Network Security / Software Supply Chain Security VERSION: v0.3 Draft · 2026-09-04 · STATIC REVIEW PASSED
Changelog
References
| ID | Publisher | Version/date | Accessed | Use | URL |
|---|---|---|---|---|---|
| S01 | JFrog | 2026-08-28 | 2026-09-02T11:03:01Z | Affected versions, impact, and fixed releases | https://docs.jfrog.com/releases/docs/jfrog-security-advisories |
| S02 | Canadian Centre for Cyber Security | current cited edition | 2026-09-02T11:03:01Z | Government exploitation-status corroboration | https://www.cyber.gc.ca/en/alerts-advisories/jfrog-security-advisory-av26-867 |
| S03 | Pruva | current cited edition | 2026-09-02T11:03:01Z | Independent root-cause and laboratory sequence | https://www.pruva.dev/reproductions/REPRO-2026-00341 |
| S04 | Tenable Research | current cited edition | 2026-09-02T11:03:01Z | Independent exploitation-status corroboration | https://www.tenable.com/research |
| S05 | JFrog | current cited edition | 2026-09-02T11:03:01Z | Security-audit logging authority | https://docs.jfrog.com/administration/docs/audit-trail-log |
| S06 | JFrog | current cited edition | 2026-09-02T11:03:01Z | Reverse-proxy and backend exposure guidance | https://docs.jfrog.com/installation/docs/http-settings |
| S07 | NIST | current cited edition | 2026-09-02T11:03:01Z | Artifact and CI/CD integrity authority | https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-204D.pdf |
| S08 | JFrog | current cited edition | 2026-09-02T11:03:01Z | Access-token administration authority | https://docs.jfrog.com/administration/docs/access-tokens |