CVE-2025-9384
Executive Summary
CVE-2025-9384 is a locally exploitable null pointer dereference vulnerability in Appneta tcpreplay up to version 4.5.1. The flaw resides in the tcpedit_post_args function within /src/tcpedit/parse_args.c. Successful exploitation requires local access and can lead to a denial of service (DoS) condition by crashing the application. The vulnerability has a CVSS score of 3.3 (Low), and a public exploit is available. The vendor has released a fix in version 4.5.2-beta2.
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
This vulnerability affects the tcpreplay package, which is commonly distributed via package managers (e.g., apt, yum, brew) and source code repositories. Users should verify the integrity of their tcpreplay installation and ensure they are using a patched version. The open-source nature of the project means that supply chain attacks could introduce malicious code, but no such incidents have been reported for this specific CVE.
CVSS Breakdown & Threat Level
- CVSS Score: 3.3 (Low)
- Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
- Attack Vector (AV): Local (L) – The attacker must have local access to the system.
- Attack Complexity (AC): Low (L) – No special conditions are required.
- Privileges Required (PR): None (N) – No privileges are needed to trigger the vulnerability.
- User Interaction (UI): None (N) – No user action is required.
- Scope (S): Unchanged (U) – The vulnerability does not affect other components.
- Confidentiality (C): None (N) – No data is exposed.
- Integrity (I): None (N) – No data is modified.
- Availability (A): Low (L) – The application crashes, causing a denial of service.
Threat Level: Low. The requirement for local access significantly reduces the attack surface. However, the public availability of the exploit increases the risk for environments where untrusted users have local access.
Deep Dive & Mechanics
The vulnerability is a null pointer dereference in the tcpedit_post_args function. This function is responsible for processing command-line arguments after they have been parsed. The manipulation of arguments leads to a situation where a pointer is not properly initialized or validated before being dereferenced, causing the application to crash.
Root Cause: The tcpedit_post_args function in /src/tcpedit/parse_args.c does not properly check for null pointers when processing certain argument combinations. An attacker can craft a specific set of arguments that cause a pointer to remain null, and when the function attempts to use this pointer, a segmentation fault occurs.
Attack Vector: The attack is performed locally. An attacker with access to the system can run tcpreplay with specially crafted arguments to trigger the null pointer dereference.
Impact: The primary impact is a denial of service (DoS) condition. The tcpreplay process crashes, potentially disrupting network testing or replay operations. There is no evidence of code execution or privilege escalation.
Vulnerable vs. Patched Code
The vulnerable code is in the tcpedit_post_args function. The patch ensures that pointers are properly checked before dereferencing.
Vulnerable Code (Conceptual):
// In tcpedit_post_args
void tcpedit_post_args(tcpedit_t *tcpedit) {
// ... some processing ...
// Assume 'ptr' is a pointer that may be NULL
if (some_condition) {
// ptr is not set, remains NULL
}
// Vulnerable: dereferencing ptr without NULL check
ptr->some_field = value; // NULL pointer dereference
}
Patched Code (Conceptual):
// In tcpedit_post_args
void tcpedit_post_args(tcpedit_t *tcpedit) {
// ... some processing ...
// Assume 'ptr' is a pointer that may be NULL
if (some_condition) {
// ptr is not set, remains NULL
}
// Patched: check for NULL before dereferencing
if (ptr != NULL) {
ptr->some_field = value;
} else {
// Handle the error gracefully
return;
}
}
The exact patch is available in the tcpreplay repository. The vendor confirmed the fix in commit 6fcbf03 and version 4.5.2-beta2.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Local access to a system with
tcpreplayversion <= 4.5.1 installed. - Ability to run commands.
Exploit Steps:
Identify the vulnerable version:
tcpreplay --versionCraft a command with specific arguments that trigger the null pointer dereference. The exact arguments are not publicly documented, but the exploit is known to be public. A typical approach is to provide an invalid or conflicting combination of options.
tcpreplay --intf1=eth0 --intf2=eth0 --cachefile=/dev/null /dev/null(Note: This is a hypothetical example. The actual exploit may require different arguments.)
Run the command. The
tcpreplayprocess should crash with a segmentation fault.
Expected Outcome: The tcpreplay process terminates abnormally, causing a denial of service.
Blue Team (Detection & Response)
Detection:
- Monitor for crashes of the
tcpreplayprocess. - Look for unusual command-line arguments being passed to
tcpreplay. - Use the detection rules provided in the Detection Engineering section.
Response:
- Isolate the affected system.
- Verify the version of
tcpreplayinstalled. - Upgrade to version 4.5.2-beta2 or later.
- Review logs for any other suspicious activity.
- If the system is compromised, perform a full forensic analysis.
Indicators of Compromise (IOCs)
- File:
/src/tcpedit/parse_args.c(source code indicator) - Process:
tcpreplaycrashing with a segmentation fault. - Logs: System logs showing
tcpreplayterminated with signal SIGSEGV. - Command: Execution of
tcpreplaywith unusual or malformed arguments.
Detection Engineering
YARA Rule
rule CVE_2025_9384_Null_Pointer_Dereference {
meta:
description = "Detects potential exploitation of CVE-2025-9384 in tcpreplay"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-9384"
strings:
$s1 = "tcpedit_post_args" ascii wide nocase
$s2 = "parse_args.c" ascii wide nocase
condition:
$s1 or $s2
}
Sigma Rule
title: CVE-2025-9384 - tcpreplay Null Pointer Dereference
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects potential exploitation of CVE-2025-9384 in tcpreplay
author: Valters IT
date: 2025-04-10
references:
- https://nvd.nist.gov/vuln/detail/CVE-2025-9384
logsource:
category: process_creation
product: linux
detection:
selection:
Image|endswith: '/tcpreplay'
CommandLine|contains: '--intf1'
condition: selection
falsepositives:
- Legitimate use of tcpreplay with multiple interfaces
level: low
Suricata Rule
alert tcp any any -> any any (msg:"CVE-2025-9384 - tcpreplay Null Pointer Dereference"; flow:to_server; content:"tcpreplay"; nocase; content:"--intf1"; nocase; classtype:attempted-dos; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
Upgrade tcpreplay: Update to version 4.5.2-beta2 or later.
# For systems using apt sudo apt update && sudo apt install tcpreplay # For systems using yum sudo yum update tcpreplay # For source installations git clone https://github.com/appneta/tcpreplay.git cd tcpreplay git checkout 4.5.2-beta2 ./configure && make && sudo make installRestrict Local Access: Limit local user access to systems running
tcpreplayto trusted users only.Monitor for Exploitation: Implement the detection rules provided in this report.
Long-Term Mitigations:
- Principle of Least Privilege: Ensure that users have only the minimum necessary permissions.
- Regular Updates: Keep all software up to date with the latest security patches.
- Security Audits: Regularly audit systems for vulnerable software versions.
Valters IT