Skip to main content

openPDC CVE-2026-104629

| EUVDEUVD-2026-95783 HIGH
Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection') (CWE-470)
2026-10-09 icscert GHSA-68jv-q5j2-rgqm
7.7
CVSS 4.0 · Vendor: icscert
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate with valid user account
  2. Delivery
    Place malicious file on host filesystem
  3. Exploit
    Specify attacker-controlled component type
  4. Execution
    Service constructs and runs type
  5. Impact
    Execute arbitrary code as service account

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V15 - Secure Coding and Architecture Reflection safety, class allowlisting
Exploitation Conditions

Exploitation requires two concrete prerequisites stated in the description: (1) an authenticated user account on the openPDC/openHistorian instance (matching CVSS PR:L), and (2) the ability to place a file on the host filesystem (matching CVSS AT:P). The vulnerable mechanism is the component-loading feature, which constructs and runs any specified type (CWE-470 unsafe reflection) without validating that the type is a legitimate component, so the attacker's constructor code executes with the service account's privileges. Limiting factors that reduce realistic risk: the attacker cannot be fully unauthenticated, must already have (or obtain) filesystem write access on the host, and the resulting code runs only at the privilege level of the affected service account rather than automatically as system/root.

Impact

This is a genuine but conditional risk rather than a drop-everything emergency. The input CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H) scores 7.7 (High) and the AT:P (attack requirements present) metric correctly captures the real-world precondition stated in the description: the attacker must already hold an authenticated account AND be able to place a file on the host filesystem. PR:L confirms authentication is required, so this is not a remote-unauthenticated RCE despite the network attack vector. No EPSS score, no CISA KEV listing, and no public POC were provided in the input, so exploitation probability signals are entirely absent; per precision rules this is 'no public exploit identified at time of analysis.' The high VC/VI/VA (full code execution as the service account via CWE-470 unsafe reflection) means impact is severe once the preconditions are met, but the dual requirement of an authenticated account plus filesystem write access materially reduces the realistic attacker population to insiders or already-partially-compromised environments. The network attack vector (AV:N) is somewhat in tension with the description's emphasis on local filesystem file placement - AV:N is defensible because the component-loading request itself can be triggered over the network by an authenticated user, but defenders should note the filesystem-write dependency, which behaves more like a local/adjacent precondition. Net: a real patch-soon priority for electric-sector ICS operators, not a wormable internet-facing crisis.

Exploit ScenarioDerived

An authenticated low-privilege user of an openPDC or openHistorian deployment places a malicious assembly or file on the host filesystem, then uses the component-loading mechanism to specify that arbitrary type for instantiation. When the service constructs the specified type, the attacker's constructor code runs with the privileges of the affected service account, yielding code execution on the ICS host. No public exploit code was identified in the provided data.

This Week Schedule remediation this week. Why: Active threat signals + CRITICAL/HIGH severity.
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 09, 2026

Arbitrary constructor code execution in Grid Protection Alliance openPDC and openHistorian is reachable by an authenticated user who is also able to place a file on the host filesystem, because the component-loading routine instantiates any type name it is given without validating that the type is a legitimate component (CWE-470, unsafe reflection). Successful abuse executes attacker-supplied constructor code with the privileges of the affected service account, giving high confidentiality, integrity and availability impact on the affected instance. Exploitation is conditional rather than trivial - CVSS 4.0 scores it 7.7 with attack requirements present (AT:P) and low privileges required (PR:L), an independent assessment agrees on AV:N/AC:H/PR:L with high C/I/A impact, and no public exploit was identified at time of analysis (no CISA KEV listing, no PoC reported).

RemediationAI

No vendor-released patch version is confirmed by the available data; consult the CISA ICS advisory ICSA-26-281-02 (https://www.cisa.gov/news-events/ics-advisories/icsa-26-281-02) and its CSAF record for the vendor's current fixed build and upgrade instructions, and apply the vendor-supplied update as soon as it is published. Where an upgrade cannot be performed immediately, address the two exploitation prerequisites directly: eliminate the filesystem-placement requirement by removing write access to application, plugin, and bin directories from any non-administrative or application-level account (tightening ACLs on the service installation path has the side effect of blocking legitimate operator file drops and should be coordinated with the operations team); and restrict who holds an account on the openPDC/openHistorian instance, enforcing strong unique credentials and disabling dormant or shared accounts, since a valid session is required before the loader can be invoked. Because the payload executes with the service account's rights, reconfigure the service to run under a dedicated least-privilege account with no local administrative membership, which caps the damage but will break any legitimate functionality that depends on elevated access. Additionally, restrict network exposure of the instance's management and configuration interfaces to trusted management subnets via firewall rules or reverse-proxy ACLs (removing remote reachability of the loader endpoint trades away remote administration convenience), and monitor host and application logs for unexpected assembly or type-loading events, new DLLs appearing in application directories, and component-loading calls originating from accounts that do not normally configure plugins - the same telemetry doubles as detections if the compensating controls are bypassed. Do not treat PAT (Purdue) perimeter segmentation alone as a fix; it reduces reachability but does not remediate the unsafe-reflection flaw itself.

Affected VersionsENISA

openPDC 0 <2.9.482
openPDC 0 <2.9.477
openHistorian 0 <2.8.585
openHistorian 0 <2.8.580
openPDC (Docker image) 0 <2.9.482
openPDC (Docker image) 0 <2.9.477

Affected Packages

euvd openhistorian fix: 2.8.580, 2.8.585
euvd openpdc fix: 2.9.477, 2.9.482
euvd openpdc_docker_image fix: 2.9.477, 2.9.482

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 3 packages in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The root cause is CWE-470 (use of externally-controlled input to select classes or code, i.e. 'unsafe reflection'). openPDC and openHistorian are .NET-based phasor data concentrator and historian applications used in electric utility / ICS environments for synchrophasor and time-series telemetry. Their component-loading mechanism accepts a caller-supplied type identifier, constructs that type at runtime, and runs its constructor code; because there is no allowlist or type-validation step, any type resolvable by the runtime - not just sanctioned plugin components - can be selected and instantiated. The attacker therefore does not need a memory-safety bug or a malformed packet: they need (1) a valid account on the instance and (2) the ability to land a file on the host filesystem so that the assembly/type they specify is resolvable. The CISA ICS advisory (ICSA-26-281-02) and its accompanying CSAF document attribute the issue to Grid Protection Alliance; CPE data identifies the affected platforms as openPDC, the openPDC Docker image, and openHistorian across all currently catalogued versions. Impact is bounded by the privilege of the service account under which the vulnerable service runs, so deployments running the service as a low-privilege account limit the blast radius, while those running it with elevated rights expand it.

Know when Openpdc 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

Vendor (icscert) PRIMARY 7.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

Authenticated user triggers it over the network (AV:N, PR:L), but the required filesystem file-placement precondition folds into AC:H since 3.1 lacks an attack-requirements metric; full code execution gives C/I/A:H.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (icscert).

CVSS VectorVendor: icscert

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

3
Patch available
Oct 09, 2026 - 15:17 EUVD
CVSS changed
Oct 09, 2026 - 14:22 NVD
8.8 (HIGH) 7.7 (HIGH)
CVE Published
Oct 09, 2026 - 13:58 cve.org
HIGH 7.7

DescriptionCVE.org

A component loading mechanism in openPDC and openHistorian will construct and run any specified type, which may be an invalid component to load. An attacker with an authenticated user account and the ability to place a file on the host filesystem can use this to run arbitrary constructor code, and this code runs with the privileges of the affected service account.

Executive ViewAI

Why It Matters

Grid Protection Alliance openPDC and openHistorian contain a high-severity arbitrary code execution flaw that requires an authenticated user with the ability to write a file to the host, allowing code to run as the service account and potentially causing major confidentiality, integrity, and availability impact on the affected instance. These platforms are commonly used in electric utility and critical-infrastructure telemetry, so a compromised deployment could disrupt operational visibility or undermine trust in grid data, and no vendor-released patch is currently available. Leadership should prioritize inventory, least-privilege enforcement, and monitoring for these systems; no public exploit was identified at time of analysis, but the absence of a patch raises the urgency of interim controls.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include restricting filesystem write access to trusted administrators, enforcing least privilege for the openPDC/openHistorian service account, enabling application allowlisting and file-integrity monitoring, disabling unnecessary file-upload or component-loading paths, segmenting affected hosts from general IT/OT networks, and monitoring authentication and component-loading logs for suspicious type names.

Threat Intelligence Overview

EPSS Score
0.3%
Top 75% exploitable
Prevalence
Low
niche electric-grid ICS phasor/historian software, utility-sector deployment only
Threat Intel
1
1 sources
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat Yes
Deciding rule
Active threat signals + CRITICAL/HIGH severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

48
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: +10
Gov advisory: 0

Attack Technique

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

Threat IntelligenceMISP

CISA Advisories
Sources: CISA Vulnrichment, CISA (public domain)

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy