Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege user
-
DeliverySend crafted OPC HistoryReadRequest
-
ExploitInject stacked SQL via NodeId.Id/StartTime/EndTime
-
ExecutionExecute statements on historian database
-
ImpactRead, modify, or delete historian data regardless of role
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Persistence The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an authenticated JSON-SCADA account (PR:L) with network access to the OPC HistoryRead API handled by opcApi() in src/server_realtime_auth/index.js; the attacker must be able to submit a HistoryReadRequest and control the NodeId.Id, StartTime, or EndTime values, which are concatenated into the backend SQL query and support stacked statements. The specific feature required is the OPC historian HistoryRead API. The main limiting factor is that valid credentials are needed (not unauthenticated), so an attacker must first obtain or possess an account; however, the flaw explicitly works 'regardless of role,' so no elevated privilege or special configuration is required beyond basic authenticated access, and default deployments appear affected. No user interaction is required. |
| Impact | This is a genuine high-severity issue but not a drop-everything emergency. The CVSS 4.0 base score of 8.7 is driven by network reachability (AV:N), low attack complexity (AC:L), no attack requirements (AT:N), no user interaction (UI:N), and full High impact to confidentiality, integrity and availability of the vulnerable system (VC:H/VI:H/VA:H). The key limiting signal is PR:L - exploitation requires an authenticated account, so this is not mass, unauthenticated internet exploitation. The notable amplifier is that the description states impact applies 'regardless of role,' meaning any authenticated low-privilege user can fully read, modify, or delete historian data, effectively bypassing the role model (a horizontal/privilege-impact escalation). SC/SI/SA are N, so there is no confirmed scope change to other systems. EXPLICIT DATA GAPS/CONFLICTS: No EPSS score is provided in the input, so exploitation probability cannot be quantified. The CVE is not listed in CISA KEV, and no public exploit code is identified; therefore active-exploitation claims cannot be made. The vuln.today Decision label is 'this_week', consistent with a serious, patch-available flaw that warrants prompt but not emergency remediation. Net assessment: a real priority for any JSON-SCADA operator because an ICS historian is a sensitive asset and even low-privilege accounts gain full data control, tempered by the authentication prerequisite and the absence of KEV/EPSS/PoC signals. |
| Exploit ScenarioDerived | An attacker holding any low-privilege authenticated JSON-SCADA account sends a crafted OPC HistoryRead API request to opcApi() with stacked SQL statements embedded in the NodeId.Id, StartTime, or EndTime values. Because these parameters are concatenated into the backend query, the attacker reads, alters, or deletes historian data across all locations irrespective of their assigned role. No public working exploit code is identified, though the vulnerable code region (index.js lines 2175-2224 in V0.64-alpha) is referenced publicly in the VulnCheck advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 22, 2026
SQL injection in JSON-SCADA releases before 0.65-alpha lets an authenticated user inject arbitrary SQL through the OPC historian HistoryRead API implemented by opcApi() in src/server_realtime_auth/index.js, by supplying crafted NodeId.Id, StartTime or EndTime values in a HistoryReadRequest. Because stacked statements are accepted, an attacker with any valid account can read, modify or delete historian data across all locations irrespective of their assigned role, giving high confidentiality, integrity and availability impact to the historian. Exploitation requires network reach to the HistoryRead endpoint plus valid credentials (CVSS 4.0 PR:L, aligned with an assessed CVSS 3.1 vector of AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H); no public exploit code is identified at time of analysis, the issue is not in CISA KEV, and VulnCheck reporting places remediation in the current weekly patch cycle rather than an emergency response.
RemediationAI
Apply the vendor fix by upgrading to JSON-SCADA 0.65-alpha or later; the release tag https://github.com/riclolsen/json-scada/releases/tag/V0.65-alpha contains commit 60b65bcd42d6ee21aa8587580ec778c3bb9b4755, which parameterizes or otherwise sanitizes the HistoryReadRequest values reaching the SQL layer, and is the authoritative patch reference alongside the VulnCheck advisory (https://www.vulncheck.com/advisories/json-scada-before-0.65-alpha-sql-injection-via-opc-historyread-api). Because exploitation requires a valid account with network access to the OPC HistoryRead API, reducing exposure in the interim means limiting which accounts can reach the realtime auth server, with the trade-off that legitimate operator and historian clients must be re-homed or given specific allowances, and that this does not remediate the underlying injection for users who do have accounts. No vendor-documented workaround beyond updating is provided in the available sources, and the priority label indicates this should be scheduled within the current weekly patch window rather than treated as an emergency.
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
JSON-SCADA is a Node.js SCADA/telemetry platform (CPE cpe:2.3:a:riclolsen:json-scada) that exposes OPC UA style services, including the historian HistoryRead service, through the realtime authentication server. The root cause is CWE-89: values taken from the HistoryReadRequest payload - specifically NodeId.Id, StartTime and EndTime - are concatenated directly into the backend SQL query in opcApi() rather than being bound as parameters. The database layer tolerates stacked statements, so injected SQL is not limited to altering the shape of a single SELECT and can append statements that read, modify or delete historian records. Authorization is enforced on the API entry point but not on the resulting query, which is why the flaw operates regardless of the caller's role once a session exists. The trigger path is the HistoryRead API; no other endpoint or deployment mode is described in the available sources, and the vendor fix is in commit 60b65bcd42d6ee21aa8587580ec778c3bb9b4755 shipped with the V0.65-alpha release.
Know when Json Scada 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:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Remote API reachable (AV:N), trivial injection (AC:L), requires an authenticated but any-role account (PR:L), no scope change to other systems (S:U), full read/modify/delete of historian data (C:H/I:H/A:H).
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
JSON-SCADA before 0.65-alpha contains an sql injection vulnerability in opcApi() in src/server_realtime_auth/index.js that allows authenticated users to inject SQL via HistoryReadRequest parameters. Attackers can inject stacked statements through NodeId.Id, StartTime, or EndTime values to read, modify, or delete historian data across all locations regardless of role.
Executive ViewAI
A high-severity SQL injection vulnerability in JSON-SCADA versions before 0.65-alpha allows any authenticated user, regardless of role, to fully compromise historian data-reading, modifying, or deleting records across all locations. This undermines the integrity of operational data and could disrupt critical industrial processes; leadership must prioritize remediation to prevent insider misuse or credential-based attacks that bypass role-based access controls.
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
SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.
EUVD-2026-108130
GHSA-6wf3-ww94-h8pr
NVD
CVE.org
VulDB
Exploit-DB