☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
OpenCTI-Platform logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 7.1 🐛 CWE-639
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-35210

CVE-2026-35210 Authorization Bypass in Opencti
📅 PUBLISHED: 2026-07-08 21:16 UTC 🔄 UPDATED: 2026-09-23 20:23 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.35%
👁️
0.35% probability
8.8× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1548
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: France License: Open Source
Patch available — upgrade to latest release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
7.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-35210 is an authorization bypass vulnerability in OpenCTI, an open-source platform for managing cyber threat intelligence (CTI) knowledge and observables. The flaw allows any authenticated user with the KNOWLEDGE_KNUPDATE permission to bypass Confidence Level validation and Object Marking restrictions by injecting a synchronized-upsert: true HTTP header. This enables attackers to downgrade confidence levels, remove security markings (e.g., TLP:RED), manipulate relationships, and affect STIX object types including Indicators, ThreatActors, Malware, and Reports. The vulnerability has a CVSS score of 7.1 (High) and is fixed in version 7.260326.0. No public proof-of-concept (PoC) or exploit code is available at this time.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

OpenCTI is distributed as a Docker image and via GitHub releases. The vulnerability is in the core application logic, not in a specific package manager (NPM, PyPI, Go, Ruby). However, organizations using OpenCTI should verify the integrity of their deployment and ensure they are not running a forked or modified version that may not have the patch.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N
  • Base Score: 7.1 (High)
  • Attack Vector: Network (AV:N)
  • Attack Complexity: Low (AC:L)
  • Privileges Required: Low (PR:L) – requires authenticated user with KNOWLEDGE_KNUPDATE permission
  • User Interaction: None (UI:N)
  • Scope: Unchanged (S:U)
  • Confidentiality Impact: Low (C:L) – limited information disclosure via manipulated markings
  • Integrity Impact: High (I:H) – ability to downgrade confidence, remove markings, and manipulate relationships
  • Availability Impact: None (A:N)

Threat Level: High. The vulnerability allows an authenticated attacker to bypass critical security controls, potentially undermining the trustworthiness of CTI data.

Deep Dive & Mechanics

The vulnerability resides in the STIX entity upsert (insert or update) mechanism. OpenCTI uses a synchronized-upsert HTTP header to indicate that an incoming STIX object should be processed as a bulk synchronization operation, which historically had relaxed validation for performance reasons. The flaw is that the server does not properly re-validate the user's permissions and object marking constraints when this header is present.

Attack Flow:

  1. An attacker authenticates to OpenCTI with a user account that has KNOWLEDGE_KNUPDATE permission.
  2. The attacker crafts a POST/PUT request to the STIX entity endpoint (e.g., /api/stix/upsert) with the header synchronized-upsert: true.
  3. The request body contains a STIX object (e.g., an Indicator) with modified confidence level (e.g., set to 0) and/or removed object markings (e.g., no TLP:RED).
  4. The server processes the request without enforcing the usual confidence level validation or object marking restrictions, allowing the attacker to downgrade the data.

Impacted STIX Types: Indicators, ThreatActors, Malware, Reports, and any other STIX 2.1 object type that supports confidence and markings.

Vulnerable vs. Patched Code

Vulnerable Code (before 7.260326.0): The vulnerable code likely exists in the STIX upsert handler, where the synchronized-upsert header bypasses the permission and marking checks. A simplified pseudocode representation:

def handle_stix_upsert(request):
    if request.headers.get('synchronized-upsert') == 'true':
        # Bypass validation for performance
        stix_object = parse_stix(request.body)
        upsert_stix_object(stix_object)
    else:
        # Normal validation
        validate_user_permissions(request.user)
        validate_confidence(request.user, request.body)
        validate_markings(request.user, request.body)
        stix_object = parse_stix(request.body)
        upsert_stix_object(stix_object)

Patched Code (7.260326.0): The patched version removes the bypass or adds explicit permission checks even when the header is present:

def handle_stix_upsert(request):
    stix_object = parse_stix(request.body)
    # Always validate regardless of header
    validate_user_permissions(request.user)
    validate_confidence(request.user, stix_object)
    validate_markings(request.user, stix_object)
    upsert_stix_object(stix_object)

Exploitation & Lab Setup

Red Team

Prerequisites:

  • Access to an OpenCTI instance (version < 7.260326.0)
  • Valid credentials for a user with KNOWLEDGE_KNUPDATE permission

Exploitation Steps:

  1. Identify the STIX upsert endpoint (typically /api/stix/upsert or similar).
  2. Craft a request to modify an existing Indicator:
    curl -X POST "https://target.opencti.local/api/stix/upsert" \
      -H "Authorization: Bearer <token>" \
      -H "Content-Type: application/json" \
      -H "synchronized-upsert: true" \
      -d '{
        "type": "indicator",
        "id": "indicator--<existing-id>",
        "confidence": 0,
        "object_marking_refs": [],
        "pattern": "[file:hashes.MD5 = 'd41d8cd98f00b204e9800998ecf8427e']"
      }'
    
  3. Verify the change by querying the indicator via the API or UI.

Expected Outcome: The indicator's confidence is set to 0 and all object markings are removed, potentially causing it to be ignored by downstream systems or analysts.

Blue Team

Detection:

  • Monitor API logs for requests containing the synchronized-upsert: true header from non-admin users.
  • Alert on any upsert operations that modify confidence levels or object markings on existing entities without proper authorization.

Hunting:

  • Search for STIX objects with confidence = 0 or missing object markings that previously had them.
  • Review audit logs for bulk upsert operations performed by users with only KNOWLEDGE_KNUPDATE permission.

Mitigation:

  • Immediately upgrade to OpenCTI 7.260326.0 or later.
  • If upgrade is not possible, restrict the KNOWLEDGE_KNUPDATE permission to trusted users only.
  • Implement a WAF rule to block requests with the synchronized-upsert header from non-whitelisted IPs.

Indicators of Compromise (IOCs)

  • HTTP Header: synchronized-upsert: true in requests to STIX upsert endpoints.
  • API Endpoint: /api/stix/upsert or similar upsert paths.
  • Modified STIX Objects: Indicators, ThreatActors, Malware, Reports with confidence = 0 or missing object markings.
  • Audit Log Entries: Bulk upsert operations from users with KNOWLEDGE_KNUPDATE permission.

Detection Engineering

YARA Rule

rule detect_opencti_synchronized_upsert_bypass {
    meta:
        description = "Detects HTTP requests with synchronized-upsert header targeting OpenCTI"
        author = "Valters IT"
        date = "2026-03-26"
        reference = "CVE-2026-35210"
        hash = "d41d8cd98f00b204e9800998ecf8427e"
    strings:
        $header = "synchronized-upsert: true" nocase
        $endpoint = "/api/stix/upsert" nocase
    condition:
        $header and $endpoint
}

Sigma Rule

title: OpenCTI Authorization Bypass via synchronized-upsert Header
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP requests with the synchronized-upsert header targeting OpenCTI STIX upsert endpoints, indicating potential exploitation of CVE-2026-35210.
author: Valters IT
date: 2026-03-26
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2026-35210
logsource:
    category: webserver
    product: opencti
detection:
    selection:
        http.request.headers|contains: 'synchronized-upsert: true'
        http.request.uri|contains: '/api/stix/upsert'
    condition: selection
falsepositives:
    - Legitimate synchronization operations from trusted sources
level: high
tags:
    - attack.t1190
    - cve.2026.35210

Suricata Rule

alert http any any -> any any (
    msg:"CVE-2026-35210 - OpenCTI Authorization Bypass via synchronized-upsert Header";
    flow:to_server;
    content:"synchronized-upsert: true"; http_header;
    content:"/api/stix/upsert"; http_uri;
    classtype:attempted-admin;
    sid:1000001;
    rev:1;
    reference:cve,2026-35210;
    priority:1;
)

Remediation & Mitigation

Immediate Actions:

  1. Upgrade OpenCTI to version 7.260326.0 or later.
  2. If upgrade is not possible, restrict KNOWLEDGE_KNUPDATE permission to only highly trusted users.
  3. Implement network-level controls to block the synchronized-upsert header from untrusted sources.

Long-term Measures:

  • Conduct a security review of all upsert and bulk operations in OpenCTI.
  • Implement additional logging and monitoring for STIX object modifications.
  • Regularly audit user permissions and remove unnecessary privileges.

Workaround:

  • Use a reverse proxy (e.g., Nginx) to strip the synchronized-upsert header from incoming requests:
    location /api/stix/upsert {
        proxy_set_header synchronized-upsert "";
        proxy_pass http://backend;
    }
    

Valters IT
Securing your digital frontier.

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-35210/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.