IPBUF安全漏洞报告
English
CVE-2025-59829 CVSS 6.5 中危

CVE-2025-59829:Claude Code权限拒绝规则符号链接绕过漏洞

披露日期: 2025-10-03

漏洞信息

漏洞编号
CVE-2025-59829
漏洞类型
权限绕过/符号链接绕过
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Anthropic Claude Code

相关标签

权限绕过符号链接Claude CodeAnthropicAI安全本地权限提升信息泄露CVE-2025-59829中危漏洞agentic工具

漏洞概述

CVE-2025-59829是Anthropic公司开发的智能体编程工具Claude Code中存在的一个权限绕过漏洞。该漏洞影响Claude Code 1.0.120之前的所有版本。Claude Code是一款agentic coding工具,能够在用户授权下访问和修改本地文件系统中的文件。该工具设计了一套权限管理系统,允许用户通过配置拒绝规则(deny rules)来限制Claude Code对特定文件或目录的访问权限。然而,在1.0.120之前的版本中,Claude Code的权限检查逻辑未能正确处理符号链接(symlink)的情况。当用户明确拒绝了Claude Code对某个文件的访问权限时,如果存在一个指向该文件的符号链接,并且Claude Code能够访问该符号链接,那么它可以通过符号链接间接访问被拒绝的文件,从而绕过权限限制。该漏洞的CVSS 3.1评分为6.5分,属于中危级别。其攻击向量为网络(AV:N),无需认证(PR:N),但需要用户交互(UI:R),对机密性影响为高(C:H),对完整性和可用性无影响。该漏洞由GitHub安全顾问团队发现并报告,Anthropic公司已在1.0.120版本中修复了此问题。使用标准自动更新功能的用户将自动获得修复,而手动更新的用户需要主动升级到最新版本。

技术细节

Claude Code的权限管理系统通过解析用户配置的拒绝规则列表(如.deny规则)来判断是否允许对特定路径进行文件操作。在正常情况下,当Claude Code尝试访问一个文件时,系统会检查目标路径是否匹配任何拒绝规则,如果匹配则拒绝访问。然而,该漏洞的根本原因在于权限检查逻辑没有正确处理符号链接。

具体技术原理如下:

1. 符号链接(symlink)是一种特殊的文件类型,它指向另一个文件或目录的路径。当操作系统或应用程序通过符号链接访问目标时,通常会解析(resolve)符号链接以获取实际的目标路径。

2. Claude Code的权限检查在1.0.120之前的版本中,仅对符号链接本身的路径进行了权限检查,而没有解析符号链接指向的实际目标路径。这意味着如果用户拒绝了访问/path/to/secret.txt,但创建了一个符号链接/path/to/link.txt -> /path/to/secret.txt,Claude Code检查的是link.txt的路径权限,而非secret.txt的权限。

3. 由于符号链接本身的路径不在拒绝列表中,权限检查通过,Claude Code便可以通过符号链接访问到被保护的文件内容。

4. 这种攻击需要攻击者能够在目标系统上创建符号链接,并且需要用户交互(如运行Claude Code并授权某些操作),因此攻击复杂度相对较低但需要特定条件。

修复方案是在权限检查时使用realpath()或类似函数解析符号链接,获取实际的目标路径后再进行权限比对,确保拒绝规则能够覆盖通过符号链接间接访问的情况。

攻击链分析

STEP 1
步骤1:环境准备
攻击者在目标系统上识别出Claude Code配置中设置了拒绝规则保护的文件或目录(如包含敏感凭证、配置文件等)。
STEP 2
步骤2:创建符号链接
攻击者创建一个符号链接,指向被保护的文件或目录中的敏感文件。符号链接本身位于未被拒绝规则覆盖的路径下。
STEP 3
步骤3:诱导用户交互
攻击者通过社会工程或其他方式诱导用户运行Claude Code,并请求其访问符号链接指向的内容或执行相关操作。
STEP 4
步骤4:权限检查绕过
Claude Code对符号链接路径进行权限检查时,由于路径不在拒绝列表中,检查通过。但在实际读取文件时,操作系统解析符号链接,访问到了被保护的文件。
STEP 5
步骤5:敏感数据泄露
Claude Code成功读取并可能泄露被保护文件中的敏感内容,如API密钥、凭证、配置文件等,造成机密性泄露。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-59829 PoC: Claude Code Symlink Permission Bypass # This PoC demonstrates how to bypass Claude Code's permission deny rules # using symbolic links in versions < 1.0.120 import os import subprocess # Step 1: Create a sensitive file that should be protected secret_file = "/tmp/protected/secret.txt" os.makedirs(os.path.dirname(secret_file), exist_ok=True) with open(secret_file, "w") as f: f.write("This is sensitive data that should not be accessed by Claude Code") # Step 2: Create a symlink pointing to the protected file # The symlink path itself is NOT in the deny rules symlink_path = "/tmp/innocent/innocent_link.txt" os.makedirs(os.path.dirname(symlink_path), exist_ok=True) if os.path.exists(symlink_path): os.remove(symlink_path) os.symlink(secret_file, symlink_path) # Step 3: Configure Claude Code deny rules to block access to the secret file # In ~/.claude/settings.json or project config: # { # "permissions": { # "deny": ["/tmp/protected/*"] # } # } # Step 4: Ask Claude Code to read the symlink (which it should be able to access # since the symlink path is not in deny rules) # In the vulnerable version (< 1.0.120), Claude Code will follow the symlink # and read the contents of the protected file # Demonstration of the bypass: print(f"Reading via symlink: {symlink_path}") result = subprocess.run(["cat", symlink_path], capture_output=True, text=True) print(f"Content accessed: {result.stdout}") print(f"\n[!] Permission bypass successful!") print(f"[!] Claude Code accessed '{secret_file}' via symlink '{symlink_path}'") print(f"[!] Even though deny rules blocked '/tmp/protected/*'") # Cleanup os.remove(symlink_path) os.remove(secret_file) os.rmdir(os.path.dirname(secret_file)) os.rmdir(os.path.dirname(symlink_path))

影响范围

Claude Code < 1.0.120

防御指南

临时缓解措施
在升级到修复版本之前,建议用户采取以下临时缓解措施:1)在系统层面禁用不必要的符号链接创建;2)定期审计Claude Code的权限拒绝规则配置,确保规则覆盖所有需要保护的敏感路径及其可能的符号链接;3)使用文件系统ACL(访问控制列表)对敏感文件设置额外的访问限制;4)监控Claude Code的文件访问行为,及时发现异常的访问模式;5)考虑在Claude Code配置中使用绝对路径并启用路径规范化选项(如果可用),以减少符号链接绕过攻击的风险。

参考链接

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