Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach realtime WebSocket/SSE endpoint
-
DeliverySign ticket with published JWT constant
-
ExploitSet arbitrary tenant_id in ticket
-
ExecutionConnect and subscribe as victim tenant
-
ImpactExfiltrate cross-tenant alerts, cases, graph events
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Key management, no hard-coded keys
|
| Exploitation Conditions | Exploitable only when the AISOC_REALTIME_JWT_SECRET environment variable is unset, which per the patch commit was the case in every shipped deployment because no docker-compose or make manifest ever passed the variable - so the realtime service fell back to the constant published in the repository. The attacker must be able to reach the realtime WebSocket/SSE endpoint and forge an HS256 ticket signed with that known constant. Fixed configurations that explicitly set a real AISOC_REALTIME_JWT_SECRET (v12.0.0 generates one via 'make up') are not vulnerable, and the ticket endpoint now fails closed (503) when the secret is empty. No user interaction or authentication is required against affected versions (7.5.0 before 12.0.0). |
| Impact | This is a genuine, high-confidence authentication bypass rather than an inflated high-CVSS finding, but its real-world priority is dampened by an extremely small deployment footprint. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N, VC:H) describes exactly what the source diff confirms: the realtime service verified HS256 ticket signatures against a fallback constant ('aisoc-dev-realtime-ticket-secret-not-for-production') that was committed to the public repository, and no deployment manifest ever supplied the real AISOC_REALTIME_JWT_SECRET - so that published constant was the effective key in every deployment. That makes unauthenticated cross-tenant forgery trivially reproducible for anyone who can read the repo. The 8.7 score is confidentiality-only (VI:N/VA:N); despite the 'RCE' tag, there is no code-execution or integrity/availability impact in the described vector. No EPSS score, no CISA KEV listing, and no explicit public exploit are provided - exploitation status is 'no public exploit identified,' though the leaked constant lowers the barrier to weaponization considerably. Net: technically serious and easy to trigger, but the affected product is an obscure open-source project, so this is a targeted-risk item for the small population running it, not a widespread threat. |
| Exploit ScenarioDerived | An unauthenticated attacker who can reach the AiSOC realtime WebSocket/SSE endpoint signs a subscription ticket using the well-known JWT secret hard-coded in the public repository, setting an arbitrary tenant_id. They connect to the realtime edge and receive another tenant's live security alerts, case data, agent events, and graph updates. No public exploit is identified at time of analysis, but the required signing key is published in the project's own git history, making forgery straightforward. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 30, 2026
Authentication bypass in AiSOC 7.5.0 through 11.x lets unauthenticated remote attackers subscribe to realtime WebSocket/SSE channels belonging to any tenant, exposing live alerts, cases, agent events, and graph updates. The realtime edge verifies subscription tickets with a hard-coded HS256 key committed to the repository, and per the patch commit that constant was the effective key in every shipped deployment because no docker-compose or make manifest ever passed AISOC_REALTIME_JWT_SECRET to either the API or the realtime service. Version 12.0.0 removes the fallback entirely and generates a real secret, so only deployments that explicitly set the variable are unaffected; no public exploit code identified at time of analysis, and the assessed impact is confidentiality-only against a very small deployment footprint.
RemediationAI
Vendor-released patch: 12.0.0 (https://github.com/beenuar/AiSOC/releases/tag/v12.0.0); the fixing change is commit 2f0e954f2febecb3720e6eadb017546c5d121c43, which can also be applied directly if upgrading is not immediately possible. After upgrading, run 'make up' (or generate the value manually with python -c "import secrets; print(secrets.token_hex(32))") and set AISOC_REALTIME_JWT_SECRET on both the API and realtime services so a strong per-deployment key is used; never reuse the historical constant aisoc-dev-realtime-ticket-secret-not-for-production, which is permanently exposed in git history, and treat any deployment that previously ran on that key as compromised for cross-tenant data disclosure. Also set REALTIME_INTERNAL_TOKEN for the realtime /internal/* fan-out routes, since the pre-12.0.0 guard treated an unset token as authorized. If patching must be deferred, explicitly setting AISOC_REALTIME_JWT_SECRET to a strong random value restores ticket verification integrity; leaving it unset is fail-closed in the patched code (ticket endpoint returns 503 and realtime rejects all connections) but on unpatched code it is fail-open. As a compensating control with a functional trade-off, restrict network access to the realtime WebSocket/SSE port to trusted clients only, since the forgery requires reaching that endpoint and these controls do not remediate the underlying key exposure. See https://github.com/beenuar/AiSOC/security/advisories/GHSA-4m55-xhcm-wjcr and the VulnCheck advisory for further detail.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
AiSOC's realtime layer issues short-lived subscription tickets that clients present on WebSocket and Server-Sent Events connections; the API mints them and the Node realtime service verifies them with an HMAC-SHA256 (HS256) key supplied via the AISOC_REALTIME_JWT_SECRET environment variable. CWE-321 (Use of Hard-coded Cryptographic Key) is the root cause: when the variable was unset, services/realtime/src/auth.ts (lines 51-59 in v11.2.0) and the Python settings helper fell back to a development constant published in the repository, so the signing/verification key was identical and publicly known. The ticket carries a tenant identifier claim, so an attacker who knows the key can mint a valid ticket for any tenant_id and read cross-tenant live data. The upstream fix also closes a related defect in the same code path: the /internal/* fan-out routes used a guard that treated an unset REALTIME_INTERNAL_TOKEN as authorized, allowing any caller that could reach the port to request arbitrary tenant_id data; the new REALTIME_INTERNAL_TOKEN (sent as x-internal-token) is generated alongside the JWT secret. Both sides now fail closed when the secret is empty, and the old constant is explicitly rejected if copied from an older checkout.
Know when Aisoc gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Remote, unauthenticated ticket forgery using a published constant (AV:N/AC:L/PR:N/UI:N); impact is cross-tenant read access only, so C:H with I:N/A:N.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
AiSOC versions 7.5.0 before 12.0.0 use a hard-coded constant for JWT verification in the realtime WebSocket and SSE service when the AISOC_REALTIME_JWT_SECRET environment variable is not set. Unauthenticated attackers can forge subscription tickets with arbitrary tenant identifiers to access cross-tenant live alerts, cases, agent events and graph updates through the realtime endpoints.
Technical POC Analysis
The flaw is a hard-coded cryptographic key used as the JWT verification key for realtime subscription tickets (CWE-321; the advisory also assigns CWE-798 and CWE-287).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
AiSOC deployments running versions 7.5.0 through 11.x can expose live security operations data - realtime alerts, cases, agent events, and graph updates - to remote parties able to reach the realtime WebSocket/SSE edge, and because subscription tickets are validated against a hard-coded key that shipped as the effective secret in every default deployment, exposure can cross tenant boundaries. Leadership should care because the data at risk is the sensitive operational telemetry security teams depend on, and confirmed cross-tenant access could trigger contractual, privacy, and customer-notification obligations. Remediation is available and low-effort: upgrade to 12.0.0, which removes the fallback key entirely, or explicitly set the realtime secret so affected deployments are no longer reliant on the committed constant.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
EUVD-2026-89539
GHSA-j6w5-vmvx-vgrp
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB