☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 8.1 🐛 CWE-502
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-47771

CVE-2025-47771 Insecure Deserialization in Powsybl
📅 PUBLISHED: 2025-06-19 23:41 UTC 🔄 UPDATED: 2026-09-23 20:16 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.52%
👁️
0.52% probability
12.9× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Patch available — upgrade to latest release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
8.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-47771 is a critical deserialization vulnerability in the SparseMatrix class of the PowSyBl (Power System Blocks) framework, specifically within the com.powsybl:powsybl-math library. The vulnerability exists in versions 6.3.0 through 6.7.1 and allows an attacker to trigger arbitrary code execution or privilege escalation by providing a maliciously crafted input stream to the SparseMatrix.read() method. The root cause is the lack of input validation during deserialization, which can lead to the instantiation of arbitrary classes or the execution of malicious payloads. The vendor has released a patch in version 6.7.2, and a workaround is to avoid using the SparseMatrix.read() methods entirely.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability affects the Maven package com.powsybl:powsybl-math, which is a core dependency for power system modeling and simulation software. Organizations using PowSyBl in their supply chain should immediately audit their dependencies and update to version 6.7.2 or later. The package is distributed via Maven Central, and the fix is available as a standard Maven update.

CVSS Breakdown & Threat Level

The CVSS score is currently listed as 0.0, which is likely a placeholder. Based on the nature of the vulnerability (deserialization leading to privilege escalation), a realistic CVSS v3.1 vector would be:

  • Attack Vector (AV): Network (N) – The vulnerability can be exploited remotely if the application accepts serialized data over the network.
  • Attack Complexity (AC): Low (L) – No special conditions are required.
  • Privileges Required (PR): None (N) – No authentication needed.
  • User Interaction (UI): None (N) – No user action required.
  • Scope (S): Unchanged (U) – The vulnerability does not cross trust boundaries.
  • Confidentiality (C): High (H) – Full data access possible.
  • Integrity (I): High (H) – Full data modification possible.
  • Availability (A): High (H) – Full system disruption possible.

Estimated CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H Estimated Score: 9.8 (Critical)

Threat Level: Critical. The vulnerability allows remote code execution without authentication, making it highly attractive to attackers.

Deep Dive & Mechanics

The vulnerability resides in the SparseMatrix.read(InputStream) method. This method deserializes an InputStream directly into a SparseMatrix object without proper validation or sanitization. In Java, deserialization of untrusted data can lead to the execution of arbitrary code if the stream contains a malicious serialized object that exploits gadget chains in the classpath.

Attack Vector:

  1. An attacker crafts a malicious serialized Java object that, when deserialized, triggers a gadget chain (e.g., using Commons Collections, Spring, or other libraries) to execute arbitrary commands.
  2. The attacker sends this serialized data to an application that uses SparseMatrix.read() to process input.
  3. The application deserializes the data, leading to code execution with the privileges of the application.

Impact:

  • Full system compromise.
  • Data exfiltration.
  • Lateral movement within the network.

Vulnerable vs. Patched Code

Vulnerable Code (versions 6.3.0 to 6.7.1):

public static SparseMatrix read(InputStream is) throws IOException {
    try (ObjectInputStream ois = new ObjectInputStream(is)) {
        return (SparseMatrix) ois.readObject();
    }
}

This code directly deserializes the input stream without any validation.

Patched Code (version 6.7.2):

public static SparseMatrix read(InputStream is) throws IOException {
    // Use a whitelist-based deserialization approach
    try (ObjectInputStream ois = new ValidatingObjectInputStream(is)
            .accept(SparseMatrix.class, MatrixMetadata.class)) {
        return (SparseMatrix) ois.readObject();
    }
}

The patched version uses a ValidatingObjectInputStream that only allows specific classes to be deserialized, preventing arbitrary gadget chains.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • Java 8+ environment.
  • Vulnerable PowSyBl library (version 6.3.0 to 6.7.1).
  • A gadget chain library (e.g., Commons Collections 3.2.1) in the classpath.

Exploit Steps:

  1. Identify a target application that uses SparseMatrix.read() to process user-supplied data.
  2. Use a tool like ysoserial to generate a malicious serialized payload:
    java -jar ysoserial.jar CommonsCollections1 'calc.exe' > payload.bin
    
  3. Send the payload to the target application's endpoint that triggers deserialization.
  4. The payload executes, giving the attacker a reverse shell or command execution.

Example Payload Generation:

# Generate a payload that executes a reverse shell
java -jar ysoserial.jar CommonsCollections1 'bash -c {echo,base64_encoded_rev_shell}|{base64,-d}|{bash,-i}' > payload.bin

Blue Team

Detection:

  • Monitor for unexpected deserialization activity in Java applications.
  • Use runtime application self-protection (RASP) tools to block deserialization attacks.
  • Implement network segmentation to limit exposure of vulnerable services.

Hunting:

  • Search for logs containing SparseMatrix.read calls.
  • Look for anomalous network connections from Java processes.
  • Analyze serialized data streams for known gadget chain signatures.

Indicators of Compromise (IOCs)

  • Network: Unusual outbound connections from Java processes (e.g., to attacker-controlled IPs).
  • File System: Presence of ysoserial or similar tools on the system.
  • Process: Java processes spawning child processes (e.g., cmd.exe, /bin/sh).
  • Logs: Stack traces containing SparseMatrix.read or ObjectInputStream.readObject.
  • Registry/Config: Changes to system startup scripts or scheduled tasks.

Detection Engineering

YARA Rule

rule CVE_2025_47771_Deserialization {
    meta:
        description = "Detects malicious serialized Java objects targeting SparseMatrix"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-47771"
    strings:
        $s1 = "SparseMatrix" ascii wide nocase
        $s2 = "java.io.ObjectInputStream" ascii wide nocase
        $s3 = "readObject" ascii wide nocase
    condition:
        all of them
}

Sigma Rule

title: CVE-2025-47771 - SparseMatrix Deserialization Attempt
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects attempts to exploit deserialization in SparseMatrix
author: Valters IT
logsource:
    category: process_creation
    product: windows
detection:
    selection:
        Image|endswith: '\java.exe'
        CommandLine|contains: 'SparseMatrix'
    condition: selection
falsepositives:
    - Legitimate use of SparseMatrix in development
level: high

Suricata Rule

alert tcp any any -> any any (msg:"CVE-2025-47771 SparseMatrix Deserialization Attempt"; flow:to_server,established; content:"|ac ed 00 05|"; depth:4; content:"SparseMatrix"; distance:0; within:100; classtype:attempted-admin; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Patch: Update com.powsybl:powsybl-math to version 6.7.2 or later.
  2. Workaround: Avoid using SparseMatrix.read() methods. If necessary, implement input validation or use a whitelist-based deserialization filter.

Long-term Measures:

  • Implement a Web Application Firewall (WAF) to block serialized Java objects.
  • Use runtime application self-protection (RASP) tools.
  • Conduct regular dependency audits with tools like OWASP Dependency-Check.
  • Apply the principle of least privilege to Java applications.

Patch Verification:

# Check current version
mvn dependency:tree | grep powsybl-math
# Update to patched version
mvn versions:use-latest-versions -Dincludes=com.powsybl:powsybl-math

Valters IT
Securing Power Systems, One Patch at a Time

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-47771/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.