# Arcane 未认证代理访问漏洞
## 概述
Arcane 是一个用于管理 Docker 容器、镜像、网络和卷的接口。在版本 1.13.2 之前,存在一个认证绕过漏洞,允许未经身份验证的请求被代理到远程环境代理,从而导致未授权访问远程资源。
## 影响版本
- 受影响版本:低于 1.13.2 的所有版本
- 修复版本:1.13.2
## 细节
环境代理中间件在处理 `/api/environments/{id}/...` 请求时,对非本地环境 ID 的请求会在认证检查之前执行代理操作。当中间件识别到环境 ID 不属于本地时,会自动将管理器持有的代理令牌附加到请求中并转发请求,即使原始请求者未经过身份验证。这使得攻击者可在无认证的情况下访问远程环境的 Docker 操作接口。
## 影响
未经身份验证的攻击者可利用该漏洞访问远程环境中的敏感操作,包括但不限于:
- 列出容器
- 流式传输容器日志
- 调用其他代理暴露的 API 端点
可能导致数据泄露、未经授权的配置更改或服务中断。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: fix: apply auth check before proxying request to environments by kmendell · Pull Request #1532 · getarcaneapp/arcane · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
**关键信息:**
- **漏洞类型:** 认证绕过
- **影响:** 未授权访问远程环境资源
- **修复措施:**
- 添加`AuthValidator`函数类型并集成到`EnvironmentMiddleware`中,在代理请求之前验证认证
- 在`router_bootstrap.go`中创建`createAuthValidator`函数,用于验证API密钥和Bearer令牌/cookie认证
- 在确定请求应被代理后进行认证检查,但在解析远程环境和转发请求之前进行
- 提取辅助函数(`shouldLogRequest`, `createAuthValidator`)以改进代码组织和可测试性
- 改进代理错误处理,使用switch语句优雅处理`StatusUnauthorized`和`StatusBadRequest`情况
- **安全影响:** 代理中间件将代理令牌附加到转发的请求中,授予远程代理上的完全访问权限。如果没有认证验证,这可能导致未经授权访问远程环境资源。此修复确保只有经过认证的用户可以代理请求到远程环境。
- **置信度评分: 5/5**
- 此PR合并安全 - 修复了关键的安全漏洞并改进了代码组织
- 变更结构良好,解决了真正的安全问题。认证验证逻辑适当地检查了API密钥和令牌认证,满足了现有认证中间件模式
- 代码遵循Go最佳实践,具有清晰的函数分离、恰当的错误处理和说明性注释。未发现逻辑错误或安全问题
- 无需文件需要特别关注
**其他信息:**
- 该PR中更改的文件已获验证
- kmendell标记此PR为准备审核状态,并请求团队进行审核
- 使用Graphite管理此PR堆栈
- Docker镜像已为此PR成功构建,manager和agent镜像均成功构建
- PR已合并到main分支,所有检查均通过
标题: Release v1.13.2 · getarcaneapp/arcane · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
从这个网页截图中获取到的关于漏洞的关键信息如下:
- **漏洞ID**: GHSA-2jv8-39rp-cqqr
- **报告者**: @PvtSec
- **漏洞影响**: 该漏洞需要用户尽快升级到最新版本(v1.13.2)以修复该问题。
- **相关部分**: 该漏洞及其修复信息列在“重要”部分,强调其紧急性。
这个信息来源于软件发行版的更新日志,提示用户升级以解决已知的安全问题。
标题: Unauthenticated proxy access to remote environments · Advisory · getarcaneapp/arcane · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
## 关键信息总结
- **漏洞概述**:
- **标题**: 未授权对远程环境的代理访问
- **严重性**: 严重(Critical)
- **漏洞ID**: CVE-2026-23944
- **弱点类型**: CWE-306 (未授权代理的访问控制)
- **影响范围**:
- **受影响版本**: 小于等于 v1.13.1
- **已修复版本**: v1.13.2
- **漏洞细节**:
- **摘要**: 未认证的请求能够通过代理访问远程环境代理,允许未经验证的情况下访问远程环境资源。
- **描述**: 环境代理中间件在应用认证之前处理了对远程环境`/api/environments/{id}/...`的请求。当环境ID不是本地的时,中间件将请求代理并附带了管理者持有的代理令牌,即使发起请求的实体未认证。这造成了远程环境操作无认证的访问(如列出容器、流日志等代理节点)。
- **影响**: 未认证的攻击者可以通过代理访问和操控远程环境资源,可能造成数据泄露、未授权更改或服务中断。
- **修复措施**:
- **修复版本**: v1.13.2
- **修复补丁**: #1532
- **报告贡献者**: PvtSec
标题: fix(GHSA-2jv8-39rp-cqqr): apply auth check before proxying request to… · getarcaneapp/arcane@2008e1b · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
### 关键漏洞信息
- **漏洞ID**: GHSA-2jv8-39rp-cqqr
- **修复提交**: `2008e1b`
- **提交信息**: `fix(GHSA-2jv8-39rp-cqqr): apply auth check before proxying request to environments`
- **涉及到的文件**:
- `backend/internal/bootstrap/bootstrap.go`
- `backend/internal/bootstrap/router_bootstrap.go`
- `backend/internal/middleware/environment_middleware.go`
### 修复内容
- **新增认证检查**: 在将请求代理到环境之前,加入了认证检查,以防止未授权访问。
- 检查 API key 和 Bearer token 的认证。
- 检查用户的认证状态。
### 安全改进
- **认证验证**: 增加了 `createAuthValidator` 函数,用于在请求到达环境服务前验证用户的认证状态。
- **日志记录**: 更新了日志记录,以便更好地跟踪和调试认证问题。
- **中间件更新**: `EnvironmentMiddleware` 结构体中加入了 `authValidator` 字段,用于验证请求的认证状态。
### 影响范围
- 此修复影响所有与环境代理相关的请求,确保只有通过认证的请求才能访问远程环境资源。
暂无评论