CVE-2025-0418
Executive Summary
CVE-2025-0418 exposes a critical security flaw in Valmet DNA, an industrial Distributed Control System (DCS) used in critical infrastructure sectors such as energy, pulp & paper, and chemical processing. The vulnerability stems from the storage of user passwords in plaintext within local project data files. An attacker who gains unauthorized access to the local file system (e.g., via a compromised engineering workstation, insider threat, or lateral movement) can trivially extract all stored credentials. This enables privilege escalation, persistent access, and potential manipulation of industrial processes.
Impact:
- Confidentiality: Complete compromise of all user credentials stored in the project.
- Integrity: Attacker can use stolen credentials to modify control logic, setpoints, or alarm thresholds.
- Availability: Malicious actions could lead to process shutdowns or unsafe conditions.
Affected Ecosystem: This is an Industrial Control System (ICS) vulnerability, not a web application or open-source package. No supply chain package data is available.
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.
No signup required
Supply Chain & Package Security
Not applicable – Valmet DNA is a proprietary industrial control system, not an open-source package.
CVSS Breakdown & Threat Level
While no official CVSS vector is provided, a reasonable assessment based on the description is:
- Attack Vector (AV): Local (L) – requires file system access.
- Attack Complexity (AC): Low (L) – plaintext files are trivial to read.
- Privileges Required (PR): Low (L) – any user with read access to project files.
- User Interaction (UI): None (N).
- Scope (S): Unchanged (U).
- Confidentiality (C): High (H) – all passwords exposed.
- Integrity (I): High (H) – credentials can be reused to alter system.
- Availability (A): High (H) – potential for process disruption.
Estimated CVSS Score: 7.8 (High) – CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Threat Level: High – due to critical infrastructure exposure and ease of exploitation once local access is achieved.
Deep Dive & Mechanics
Valmet DNA stores user authentication data in local project configuration files (e.g., .ini, .xml, or proprietary binary formats). The vulnerability is that these files contain passwords in cleartext (plaintext) rather than being hashed or encrypted.
Attack Scenario:
- An attacker gains initial access to a Valmet engineering workstation (e.g., via phishing, USB drop, or remote exploit).
- The attacker locates the project data directory (commonly
C:\Valmet\Projects\*or similar). - Using a simple text editor or
grep, the attacker extracts all usernames and passwords. - The attacker then uses these credentials to log into the Valmet DNA system with elevated privileges (e.g., Engineer or Administrator).
- With access, the attacker can modify control logic, disable alarms, or cause unsafe process conditions.
Why This Happens:
- Legacy design choices prioritizing simplicity over security.
- Lack of encryption at rest for configuration files.
- No mandatory password hashing or salting.
Vulnerable vs. Patched Code
Since no patch is available, we compare the vulnerable behavior to a hypothetical secure implementation.
Vulnerable (Current):
[User_Admin]
Username=admin
Password=SuperSecret123
Role=Engineer
Patched (Hypothetical):
[User_Admin]
Username=admin
PasswordHash=5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
Salt=abc123
Role=Engineer
The patched version uses SHA-256 with a salt, making password extraction computationally infeasible.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- Local file system access to a Valmet DNA project directory.
- Basic command-line skills.
Step-by-Step Exploitation:
- Locate project files:
find /c/Valmet/Projects -type f -name "*.ini" -o -name "*.xml" -o -name "*.cfg" - Extract passwords (Windows):
Get-ChildItem -Path C:\Valmet\Projects -Recurse -Include *.ini,*.xml,*.cfg | Select-String -Pattern "Password=" - Extract passwords (Linux):
grep -r "Password=" /mnt/valmet_projects/ - Use stolen credentials:
- Connect to Valmet DNA OPC server or engineering interface.
- Authenticate with extracted credentials.
- Modify control logic or disable safety interlocks.
No public exploit code is available.
Blue Team (Defensive)
Detection:
- Monitor for unusual file reads on Valmet project directories.
- Alert on
greporSelect-Stringprocesses accessing.ini/.xmlfiles. - Enable Windows Event Logging for file access (Audit Object Access).
Hunting Queries:
- Windows Event ID 4663 (An attempt was made to access an object) with Object Name containing
Valmet\Projects. - Sysmon Event ID 11 (FileCreate) for new files in project directories.
- Process creation of
cmd.exe,powershell.exe, orgrep.exewith command-line arguments containingPassword=.
Mitigation (until patch):
- Restrict file system permissions to only authorized engineering accounts.
- Use Windows EFS or BitLocker to encrypt project directories.
- Implement application whitelisting to block unauthorized tools.
- Monitor for lateral movement from IT to OT networks.
Indicators of Compromise (IOCs)
| Type | Indicator | Description |
|---|---|---|
| File Path | C:\Valmet\Projects\*.ini |
Common location for plaintext passwords |
| File Path | C:\Valmet\Projects\*.xml |
Alternative configuration files |
| Process | grep.exe or findstr.exe with Password= |
Unauthorized password extraction |
| Process | powershell.exe with Select-String -Pattern "Password=" |
PowerShell-based extraction |
| Network | Unusual RDP or OPC connections to Valmet servers | Lateral movement after credential theft |
| Registry | HKLM\SOFTWARE\Valmet\DNA\Projects |
Registry keys pointing to project paths |
Detection Engineering
YARA Rule
rule Valmet_DNA_Plaintext_Password
{
meta:
description = "Detects plaintext passwords in Valmet DNA project files"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-0418"
strings:
$password = /Password\s*=\s*.{1,100}/ nocase
$username = /Username\s*=\s*.{1,100}/ nocase
$role = /Role\s*=\s*.{1,100}/ nocase
condition:
all of them
}
Sigma Rule
title: Valmet DNA Plaintext Password Extraction
id: 8a9b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects attempts to extract plaintext passwords from Valmet DNA project files
author: Valters IT
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\grep.exe'
- '\findstr.exe'
CommandLine|contains:
- 'Password='
- 'Select-String -Pattern "Password="'
condition: selection
falsepositives:
- Legitimate administrative scripts
level: high
tags:
- attack.credential_access
- attack.t1552
Suricata Rule
alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-0418 Valmet DNA Credential Exfiltration"; flow:to_server,established; content:"Password="; nocase; classtype:attempted-user; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Restrict file system permissions – Only allow authorized engineering accounts to read project directories.
- Enable encryption at rest – Use BitLocker or EFS on all Valmet workstations.
- Monitor for credential extraction – Deploy the YARA/Sigma rules above.
- Change all passwords – After securing file access, force password resets for all Valmet DNA users.
Long-Term Fix:
- Valmet must release a patch that stores passwords using a strong hashing algorithm (e.g., bcrypt, Argon2) with a unique salt per user.
- Implement secure key management for any required reversible encryption.
Workaround:
- Use Windows Credential Manager or a hardware security module (HSM) to store credentials outside of plaintext files.
- Isolate Valmet engineering workstations on a separate VLAN with strict firewall rules.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Analyst