Back to Intelligence

CVE-2026-63017 & CVE-2026-63774: Critical SQL Injection and Authorization Bypass in Subnet Solutions PowerSYSTEM Center — ICS Defense Guide

SA
Security Arsenal Team
November 4, 2026
16 min read

On November 3, 2026, CISA published ICS Advisory ICSA-26-307-01 disclosing two critical vulnerabilities in Subnet Solutions PowerSYSTEM Center, a widely deployed substation automation and monitoring platform used across the Critical Manufacturing and Energy sectors worldwide. The advisory is blunt: successful exploitation of these flaws allows an attacker to execute unauthorized SQL commands and gain access to unauthorized resources. In an operational technology (OT) context, that means an adversary with network access to the PowerSYSTEM Center application could tamper with historical data, alter configurations, pivot deeper into the control network, or establish persistent access to critical grid infrastructure.

These are not low-severity misconfigurations. The combined CVSS v3 score of 9.0 places these vulnerabilities in the critical range, and their presence in software that sits at the boundary between IT and OT networks makes them a prime target for both opportunistic attackers and nation-state actors conducting pre-positioning operations against energy infrastructure. If your organization operates substations, generation facilities, or industrial control systems that rely on PowerSYSTEM Center for monitoring or data aggregation, this advisory demands immediate attention. This is a technical threat with direct, actionable detection and remediation steps.

Technical Analysis

Affected Products and Versions

The advisory identifies three release trains of PowerSYSTEM Center as vulnerable, each with a specific set of CVEs:

Product VersionAffected RangeCVEs
PowerSYSTEM Center 2020<= 5.29.xCVE-2026-63017
PowerSYSTEM Center 2024>= 6.0.x and <= 6.2.xCVE-2026-63017, CVE-2026-63774
PowerSYSTEM Center 2026>= 7.0.x and <= 7.1.xCVE-2026-63017, CVE-2026-63774

Subnet Solutions, headquartered in Canada, develops PowerSYSTEM Center as a centralized platform for managing substation Intelligent Electronic Devices (IEDs), collecting operational data, and providing engineering access to protection relays and meters. The product is deployed globally in energy utilities and critical manufacturing environments.

Vulnerability Details

CISA classifies the two CVEs under CWE-89 (Improper Neutralization of Special Elements used in an SQL Command) and CWE-862 (Incorrect Authorization). The advisory notes that PowerSYSTEM Center fails to properly sanitize user-supplied input before incorporating it into SQL queries. This is a classic injection flaw, but the impact is magnified in an OT setting.

From a defender's perspective, the attack chain is straightforward:

  1. Reconnaissance: The attacker identifies an exposed PowerSYSTEM Center web interface or API endpoint. This could be on the corporate IT network, a DMZ, or—if segmentation is poor—directly reachable from the OT network.
  2. Injection: The attacker submits crafted input containing SQL metacharacters to a vulnerable form field, API parameter, or search function. Because the application concatenates this input directly into a database query without parameterized statements or adequate escaping, the injected SQL is executed with the privileges of the application's service account.
  3. Exploitation: With successful SQL injection, the attacker can read sensitive data (usernames, password hashes, network topology, substation configurations), modify or delete historical data, insert malicious records, or—if the database supports it—execute operating system commands via stored procedures like xp_cmdshell (on Microsoft SQL Server) or user-defined functions.
  4. Authorization Bypass (CVE-2026-63774): In the 2024 and 2026 versions, an additional flaw allows an authenticated or unauthenticated attacker to access resources or perform actions that should be restricted. This could mean escalating from a low-privilege viewer account to an engineering or administrative role, or accessing configuration endpoints without proper session validation.

The CVSS v3 base score of 9.0 reflects the low attack complexity, network vector, and high impact on confidentiality, integrity, and availability. No authentication is required for the SQL injection component, and the incorrect authorization issue further lowers the barrier for full system compromise.

Exploitation Status

As of the publication of this analysis, CISA has not added CVE-2026-63017 or CVE-2026-63774 to the Known Exploited Vulnerabilities (KEV) catalog, and there are no confirmed reports of in-the-wild exploitation. However, the disclosure of a critical, remotely exploitable SQL injection in a high-value ICS target typically triggers rapid reverse engineering and proof-of-concept development. Given the product's footprint in the energy sector, organizations should assume that scanning and exploitation attempts will begin within days, if they haven't already.

The lack of confirmed exploitation is not a reason to delay. In OT environments, the dwell time between initial compromise and operational impact can be months. Defenders must close the window before adversaries establish persistence.

Detection & Response

Sigma Rules

The following Sigma rules are designed to detect exploitation attempts against PowerSYSTEM Center. They focus on web server logs, process creation, and database activity. Deploy these rules on your SIEM or log analysis platform, ensuring that web access logs from the PowerSYSTEM Center host and database audit logs are being collected.

YAML
---
title: PowerSYSTEM Center SQL Injection Attempt in URI
description: Detects common SQL injection patterns in HTTP requests targeting PowerSYSTEM Center web interface
references:
  - https://www.cisa.gov/news-events/ics-advisories/icsa-26-307-01
author: Security Arsenal
date: 2026/11/04
logsource:
  category: webserver
detection:
  selection:
    cs-uri-query|contains:
      - "'"
      - "--"
      - "/*"
      - "@@"
      - "char("
      - "nchar("
      - "varchar("
      - "alter table"
      - "begin"
      - "cast("
      - "create"
      - "cursor"
      - "declare"
      - "delete"
      - "drop"
      - "end"
      - "exec"
      - "execute"
      - "fetch"
      - "insert"
      - "kill"
      - "open"
      - "select"
      - "sys"
      - "sysobjects"
      - "syscolumns"
      - "table"
      - "update"
  condition: selection
falsepositives:
  - Legitimate application use of special characters in search or filter functions
level: high
---
title: Suspicious Process Spawned by Web Server
description: Detects web server or application pool processes spawning command shells or scripting engines, indicative of SQL injection leading to command execution
references:
  - https://www.cisa.gov/news-events/ics-advisories/icsa-26-307-01
author: Security Arsenal
date: 2026/11/04
logsource:
  category: process_creation
  product: windows
detection:
  selection_parent:
    ParentImage|endswith:
      - '\w3wp.exe'
      - '\httpd.exe'
      - '\nginx.exe'
  selection_child:
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\cscript.exe'
      - '\wscript.exe'
      - '\mshta.exe'
      - '\rundll32.exe'
      - '\regsvr32.exe'
      - '\certutil.exe'
      - '\bitsadmin.exe'
  condition: selection_parent and selection_child
falsepositives:
  - Legitimate administrative scripts or maintenance tasks executed by system administrators
level: high
---
title: Database Service Account Executing Suspicious Commands
description: Detects database service accounts executing operating system commands or accessing sensitive database objects, which may indicate post-exploitation activity following SQL injection
references:
  - https://www.cisa.gov/news-events/ics-advisories/icsa-26-307-01
author: Security Arsenal
date: 2026/11/04
logsource:
  category: process_creation
  product: windows
detection:
  selection_user:
    User|contains:
      - 'MSSQL'
      - 'SQLSERVER'
      - 'NT SERVICE\MSSQL'
      - 'NT SERVICE\SQL'
  selection_command:
    CommandLine|contains:
      - 'xp_cmdshell'
      - 'sp_oacreate'
      - 'sp_oamethod'
      - 'cmd.exe'
      - 'powershell'
      - 'whoami'
      - 'net user'
      - 'net localgroup'
      - 'ipconfig'
      - 'systeminfo'
  condition: selection_user and selection_command
falsepositives:
  - Database administrators performing legitimate maintenance
level: high

KQL for Microsoft Sentinel / Defender

The following KQL queries are designed for Microsoft Sentinel or Microsoft 365 Defender. They hunt for indicators of SQL injection and post-exploitation activity related to PowerSYSTEM Center. Ensure you have web logs (via CommonSecurityLog or a custom table), process creation events (SecurityEvent or DeviceProcessEvents), and network connection data ingested.

KQL — Microsoft Sentinel / Defender
// Hunt for SQL injection patterns in web requests to PowerSYSTEM Center
let timeRange = 24h;
let sqlPatterns = dynamic(["'", "--", "/*", "@@", "char(", "nchar(", "varchar(", "alter table", "cast(", "declare", "delete", "drop", "exec", "execute", "insert", "select", "sys", "sysobjects", "syscolumns", "update"]);
CommonSecurityLog
| where TimeGenerated > ago(timeRange)
| where DeviceProduct contains "PowerSYSTEM" or RequestURL contains "PowerSYSTEM" or RequestURL contains "psc"
| extend UriQuery = tostring(RequestURL)
| where UriQuery has_any (sqlPatterns)
| project TimeGenerated, SourceIP, DestinationIP, RequestURL, RequestMethod, DeviceAction, DeviceProduct
| order by TimeGenerated desc

// Hunt for suspicious processes spawned by web server or database service accounts
let timeRange = 24h;
let webServerProcesses = dynamic(["w3wp.exe", "httpd.exe", "nginx.exe"]);
let suspiciousChildren = dynamic(["cmd.exe", "powershell.exe", "pwsh.exe", "cscript.exe", "wscript.exe", "mshta.exe", "rundll32.exe", "regsvr32.exe", "certutil.exe", "bitsadmin.exe"]);
DeviceProcessEvents
| where TimeGenerated > ago(timeRange)
| where InitiatingProcessFileName has_any (webServerProcesses)
| where FileName has_any (suspiciousChildren)
| project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, FileName, ProcessCommandLine, AccountName, AccountDomain
| order by TimeGenerated desc

// Hunt for database service accounts executing OS commands
let timeRange = 24h;
let suspiciousCommands = dynamic(["xp_cmdshell", "sp_oacreate", "cmd.exe", "powershell", "whoami", "net user", "net localgroup", "ipconfig", "systeminfo"]);
SecurityEvent
| where TimeGenerated > ago(timeRange)
| where EventID == 4688
| where SubjectUserName contains "MSSQL" or SubjectUserName contains "SQLSERVER" or SubjectUserName contains "NT SERVICE"
| where CommandLine has_any (suspiciousCommands)
| project TimeGenerated, Computer, SubjectUserName, NewProcessName, CommandLine, ParentProcessName
| order by TimeGenerated desc

// Correlate web injection attempts with subsequent process execution on the same host
let timeRange = 24h;
let webEvents = CommonSecurityLog
| where TimeGenerated > ago(timeRange)
| where RequestURL has_any ("'", "--", "select", "union", "exec")
| project WebTime=TimeGenerated, WebHost=DestinationHostName, SourceIP, RequestURL;
let processEvents = DeviceProcessEvents
| where TimeGenerated > ago(timeRange)
| where InitiatingProcessFileName =~ "w3wp.exe"
| project ProcessTime=TimeGenerated, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine;
webEvents
| join kind=inner (processEvents) on $left.WebHost == $right.DeviceName
| where ProcessTime > WebTime and ProcessTime < WebTime + 10m
| project WebTime, WebHost, SourceIP, RequestURL, ProcessTime, FileName, ProcessCommandLine
| order by WebTime desc

Velociraptor VQL

For organizations running Velociraptor for endpoint detection and response, the following VQL artifact hunts for evidence of exploitation on the PowerSYSTEM Center host. It looks for suspicious processes, recent file modifications in web directories, and network connections.

VQL — Velociraptor
-- Hunt for PowerSYSTEM Center exploitation artifacts
SELECT * FROM foreach(
  row={
    SELECT Pid, Name, CommandLine, Exe, Username, CreateTime
    FROM pslist()
    WHERE CommandLine =~ "(cmd|powershell|pwsh|cscript|wscript|mshta|rundll32|regsvr32|certutil|bitsadmin)"
      AND (Username =~ "(MSSQL|SQLSERVER|IIS|NETWORK SERVICE|SYSTEM)" OR Exe =~ "(w3wp|httpd|nginx)")
  },
  query={
    SELECT Pid, Name, CommandLine, Exe, Username, CreateTime,
           "Suspicious Process" AS ArtifactType
    FROM scope()
  }
)
UNION ALL
SELECT * FROM foreach(
  row={
    SELECT FullPath, Size, Mtime, Atime, Ctime
    FROM glob(globs="C:\\inetpub\\wwwroot\\**", accessor="file")
    WHERE Mtime > now() - 86400  -- Last 24 hours
      AND (FullPath =~ "\\.(aspx|asp|php|jsp|config|xml|json)$")
  },
  query={
    SELECT NULL AS Pid, NULL AS Name, NULL AS CommandLine, NULL AS Exe, NULL AS Username, NULL AS CreateTime,
           "Recently Modified Web File" AS ArtifactType, FullPath, Size, Mtime
    FROM scope()
  }
)
UNION ALL
SELECT * FROM foreach(
  row={
    SELECT Pid, Name, RemoteAddr, RemotePort, State
    FROM netstat()
    WHERE RemotePort IN (80, 443, 1433, 1434)  -- HTTP, HTTPS, MS SQL
      AND State =~ "ESTABLISHED"
  },
  query={
    SELECT Pid, Name, NULL AS CommandLine, NULL AS Exe, NULL AS Username, NULL AS CreateTime,
           "Network Connection" AS ArtifactType, RemoteAddr, RemotePort, State
    FROM scope()
  }
)

Remediation Script

The following PowerShell script helps defenders identify the installed version of PowerSYSTEM Center, check for exposure, and apply network-level mitigations while awaiting patching. Run this on the PowerSYSTEM Center host or from a management station with appropriate credentials.

PowerShell
# PowerSYSTEM Center Vulnerability Assessment and Mitigation Script
# Run with elevated privileges on the PowerSYSTEM Center host or a management server

param(
    [string]$InstallPath = "C:\Program Files\Subnet Solutions\PowerSYSTEM Center",
    [string]$LogPath = "C:\Logs\PSC_Security_Check_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"
)

# Create log directory
New-Item -ItemType Directory -Path (Split-Path $LogPath) -Force | Out-Null

function Write-Log {
    param([string]$Message, [string]$Level = "INFO")
    $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    $logEntry = "[$timestamp] [$Level] $Message"
    Add-Content -Path $LogPath -Value $logEntry
    Write-Host $logEntry
}

Write-Log "Starting PowerSYSTEM Center security assessment"

# 1. Identify installed version
Write-Log "Checking for PowerSYSTEM Center installation..."
$installInfo = Get-ChildItem -Path $InstallPath -Filter "*.exe" -Recurse -ErrorAction SilentlyContinue | 
    Select-Object -First 1 -Property Name, @{N='Version';E={$_.VersionInfo.ProductVersion}}, FullName

if ($installInfo) {
    Write-Log "Found PowerSYSTEM Center: $($installInfo.Name) Version $($installInfo.Version)" "INFO"
    
    # Check if version is vulnerable
    $version = [version]$installInfo.Version
    $isVulnerable = $false
    $vulnerableCVEs = @()
    
    if ($version.Major -eq 5 -and $version.Minor -le 29) {
        $isVulnerable = $true
        $vulnerableCVEs += "CVE-2026-63017"
    }
    elseif ($version.Major -eq 6 -and $version.Minor -ge 0 -and $version.Minor -le 2) {
        $isVulnerable = $true
        $vulnerableCVEs += "CVE-2026-63017", "CVE-2026-63774"
    }
    elseif ($version.Major -eq 7 -and $version.Minor -ge 0 -and $version.Minor -le 1) {
        $isVulnerable = $true
        $vulnerableCVEs += "CVE-2026-63017", "CVE-2026-63774"
    }
    
    if ($isVulnerable) {
        Write-Log "VULNERABLE VERSION DETECTED: $($installInfo.Version)" "WARNING"
        Write-Log "Associated CVEs: $($vulnerableCVEs -join ', ')" "WARNING"
    } else {
        Write-Log "Installed version appears to be patched or not in the affected range." "INFO"
    }
} else {
    Write-Log "PowerSYSTEM Center not found at $InstallPath" "WARNING"
}

# 2. Check for network exposure
Write-Log "Checking network listening ports..."
$listeningPorts = Get-NetTCPConnection -State Listen -ErrorAction SilentlyContinue | 
    Where-Object { $_.LocalPort -in @(80, 443, 1433, 1434, 8080, 8443) } | 
    Select-Object LocalAddress, LocalPort, OwningProcess

foreach ($port in $listeningPorts) {
    $process = Get-Process -Id $port.OwningProcess -ErrorAction SilentlyContinue
    Write-Log "Port $($port.LocalPort) listening on $($port.LocalAddress) - Process: $($process.Name)" "INFO"
    
    if ($port.LocalAddress -eq "0.0.0.0" -or $port.LocalAddress -eq "::") {
        Write-Log "WARNING: Service is listening on all interfaces. Consider restricting to localhost or management VLAN." "WARNING"
    }
}

# 3. Check Windows Firewall rules for PowerSYSTEM Center
Write-Log "Checking Windows Firewall rules..."
$fwRules = Get-NetFirewallRule -DisplayName "*PowerSYSTEM*" -ErrorAction SilentlyContinue
if ($fwRules) {
    foreach ($rule in $fwRules) {
        Write-Log "Firewall Rule: $($rule.DisplayName) - Enabled: $($rule.Enabled) - Direction: $($rule.Direction) - Action: $($rule.Action)" "INFO"
    }
} else {
    Write-Log "No specific firewall rules found for PowerSYSTEM Center." "INFO"
}

# 4. Apply temporary network-level mitigations (optional)
Write-Log "Applying temporary mitigations..." "INFO"
Write-Log "NOTE: These are temporary measures. Apply the vendor patch as soon as possible." "WARNING"

# Block external access to web interface (allow only from management network)
$managementNetwork = "10.0.0.0/8"  # Modify to your actual management network
$ruleName = "PSC_Block_External_Web_Access"

if (-not (Get-NetFirewallRule -DisplayName $ruleName -ErrorAction SilentlyContinue)) {
    try {
        New-NetFirewallRule -DisplayName $ruleName -Direction Inbound -Protocol TCP -LocalPort 80,443 -RemoteAddress Any -Action Block -ErrorAction Stop
        Write-Log "Created firewall rule: $ruleName (Blocks external web access)" "INFO"
        
        # Allow from management network
        $allowRule = "PSC_Allow_Mgmt_Web_Access"
        New-NetFirewallRule -DisplayName $allowRule -Direction Inbound -Protocol TCP -LocalPort 80,443 -RemoteAddress $managementNetwork -Action Allow -ErrorAction Stop
        Write-Log "Created firewall rule: $allowRule (Allows from $managementNetwork)" "INFO"
    } catch {
        Write-Log "Failed to create firewall rules: $_" "ERROR"
    }
} else {
    Write-Log "Firewall mitigation rules already exist." "INFO"
}

# 5. Enable detailed logging for IIS (if applicable)
Write-Log "Checking IIS logging configuration..."
$iisSites = Get-Website -ErrorAction SilentlyContinue
if ($iisSites) {
    foreach ($site in $iisSites) {
        $logFile = Get-WebConfigurationProperty -Filter "system.applicationHost/sites/site[@name='$($site.Name)']/logFile" -Name "enabled" -ErrorAction SilentlyContinue
        if ($logFile.Value -eq $false) {
            Write-Log "Enabling detailed logging for site: $($site.Name)" "INFO"
            Set-WebConfigurationProperty -Filter "system.applicationHost/sites/site[@name='$($site.Name)']/logFile" -Name "enabled" -Value $true
        }
    }
}

# 6. Recommendations
Write-Log "`n=== RECOMMENDATIONS ===" "INFO"
Write-Log "1. Apply the vendor patch immediately. Contact Subnet Solutions for updated versions." "INFO"
Write-Log "2. If patching is not immediately possible, isolate PowerSYSTEM Center from untrusted networks." "INFO"
Write-Log "3. Implement strict network segmentation between IT and OT networks." "INFO"
Write-Log "4. Review web and database logs for indicators of compromise (see Sigma/KQL rules in associated blog post)." "INFO"
Write-Log "5. Change all database and application service account passwords if compromise is suspected." "INFO"
Write-Log "6. Monitor for unauthorized configuration changes or new user accounts in PowerSYSTEM Center." "INFO"

Write-Log "Assessment complete. Log saved to: $LogPath"

Remediation

Immediate Actions

  1. Patch to a Non-Vulnerable Version: Contact Subnet Solutions support immediately to obtain the patched release for your version train. The vendor has acknowledged the vulnerabilities and released updates. Do not rely on the version numbers in the advisory alone; confirm the exact fixed version with the vendor. Reference CISA ICS Advisory ICSA-26-307-01 in your support request.

  2. Isolate and Segment: If patching cannot be performed immediately, isolate the PowerSYSTEM Center host from all untrusted networks. Place it behind a firewall that restricts access to only authorized engineering workstations and management systems. Block inbound traffic from the internet and from general corporate user segments.

  3. Restrict Database Access: Ensure the PowerSYSTEM Center application database is not directly accessible from the network. Use host-based firewalls or network ACLs to restrict SQL Server (or equivalent) ports to localhost or a dedicated application tier.

  4. Review Authentication: Audit all user accounts in PowerSYSTEM Center. Disable or remove any unnecessary accounts. Enforce strong, unique passwords and consider implementing multi-factor authentication (MFA) for web interface access if the product supports it.

  5. Hunt for Compromise: Deploy the detection content provided in this article. Review historical web logs, database logs, and process execution records for signs of exploitation dating back to at least the public disclosure date. Look for SQL injection patterns, unexpected child processes of web server or database services, and unauthorized configuration changes.

Long-Term Defensive Measures

  • Network Segmentation: Enforce strict segmentation between IT and OT networks using firewalls, VLANs, and unidirectional gateways where appropriate. PowerSYSTEM Center should reside in a DMZ or a dedicated OT management zone with tightly controlled access paths.
  • Application Whitelisting: On the PowerSYSTEM Center host, implement application whitelisting (e.g., Windows Defender Application Control or AppLocker) to prevent unauthorized executables from running, even if an attacker gains code execution.
  • Database Hardening: If using Microsoft SQL Server, disable xp_cmdshell and other dangerous extended stored procedures. Use a dedicated, low-privilege service account for the application's database connection. Enable database audit logging and forward logs to your SIEM.
  • Web Application Firewall (WAF): If PowerSYSTEM Center must be exposed to a broader network, place it behind a WAF configured to block common SQL injection patterns. Ensure the WAF is tuned to avoid false positives that could disrupt legitimate operations.
  • Regular Vulnerability Scanning: Include PowerSYSTEM Center and other OT applications in your regular vulnerability scanning and patch management program. Coordinate with operations teams to schedule patching during maintenance windows.
  • Vendor Coordination: Establish a direct line of communication with Subnet Solutions for security advisories. Subscribe to CISA ICS-CERT alerts and ensure your organization receives timely notifications for all deployed ICS products.

CISA Recommendations

CISA recommends that organizations take the following defensive measures to minimize the risk of exploitation:

  • Minimize network exposure for all control system devices and ensure they are not accessible from the internet.
  • Locate control system networks and remote devices behind firewalls and isolate them from business networks.
  • When remote access is required, use secure methods such as Virtual Private Networks (VPNs), and ensure VPNs are updated to the most current version.
  • Perform proper impact analysis and risk assessment prior to deploying defensive measures.

CISA also reminds organizations to observe recommended cybersecurity best practices, including defense-in-depth strategies, and to report any suspected malicious activity to CISA for correlation and potential inclusion in future advisories.

Conclusion

The disclosure of CVE-2026-63017 and CVE-2026-63774 in Subnet Solutions PowerSYSTEM Center is a stark reminder of the persistent threat facing industrial control systems. A CVSS 9.0 SQL injection flaw in a platform that manages critical energy infrastructure is not a theoretical risk—it is an open door for adversaries seeking to disrupt operations, steal sensitive data, or pre-position for future attacks.

Defenders must act now. Patch immediately if possible. If not, isolate the system and deploy the detection content provided here. Hunt for signs of compromise in your logs and on your endpoints. And most importantly, treat this as a catalyst for broader OT security improvements: segment your networks, harden your applications, and build the visibility you need to detect and respond to threats before they impact operations.

The energy sector depends on the reliability and integrity of systems like PowerSYSTEM Center. Do not let a preventable vulnerability be the cause of the next major incident.

Related Resources

Security Arsenal Managed SOC Services AlertMonitor Platform Book a SOC Assessment soc-mdr Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.