# Arcane Updater 命令注入漏洞
## 概述
Arcane 的更新服务存在命令注入漏洞,允许经过身份验证的用户通过特制的生命周期标签执行任意命令。
## 影响版本
1.13.0 之前版本
## 细节
Arcane 的更新服务支持容器标签 `com.getarcaneapp.arcane.lifecycle.pre-update` 和 `com.getarcaneapp.arcane.lifecycle.post-update`,用于在容器更新前后执行指定命令。这些标签的值被直接传递给 `/bin/sh -c` 执行,且未进行任何输入验证或转义处理。由于所有经过身份验证的用户均可通过 API 创建项目并设置此类标签,攻击者可构造恶意命令并绑定到生命周期标签。当管理员触发容器更新时,系统将自动执行该恶意命令。
## 影响
经过身份验证的攻击者可利用此漏洞在容器上下文中执行任意命令,可能导致权限提升、数据泄露或系统被完全控制。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: fix: remove updater lifecycle hooks by kmendell · Pull Request #1468 · getarcaneapp/arcane · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
## 关键漏洞信息
### 修复内容
- **漏洞描述**: 移除了更新器生命周期挂钩功能(Lifecycle Hooks),以消除在容器更新前后执行自定义命令的能力。
- **更改细节**:
- 移除了预更新、后更新、预检查和后检查生命周期钩子的执行。
- 删除了`lifecycle.go`文件及其相关逻辑。
- 删除了与生命周期挂钩相关的标签常量、超时配置和允许容器跳过更新的常量。
- 移除了`GetLifecycleCommand`辅助函数及相关测试覆盖。
### 安全性与风险
- **置信度评分**: 5/5,表示此修复安全无风险。
- **完整性**: 完全清理了相关代码、常量和测试,确保没有遗留或孤儿引用。
### 细节验证
- **代码分析确认**:
- 成功检测到并移除了后端的一个不可达函数。
- Docker镜像成功构建,包括Manager和Agent版本。
### 潜在关注点
- **提及的漏洞**: 存在与后端相关的Go语言潜在漏洞,标记为GHSA-jigq-6r35-w3r8及vulndb#4320,需进一步查阅并确认是否影响当前修复。
标题: Release v1.13.0 · getarcaneapp/arcane · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
### 关键漏洞信息
- **漏洞编号**: GHSA-gjqg-6r35-w3r8
- **发现者**: @DenizParlak
- **描述**: 本次更新修复了与该漏洞相关的攻击表面。
标题: Command Injection in Arcane Updater Lifecycle Labels Enables RCE · Advisory · getarcaneapp/arcane · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
## 关键信息总结
### 漏洞描述
- **漏洞类型**: 命令注入
- **影响范围**: Arcane 更新服务生命周期标签,允许在容器更新前后执行恶意命令
- **影响版本**: < 1.13.0
- **修复版本**: 1.13.0
### 漏洞摘要
- Arcane 的更新服务支持生命周期标签,允许定义在容器更新前后运行的命令。
- 标签值直接传递给 `/bin/sh -c`,未进行任何清理或验证。
- 认证用户(不仅仅是管理员)可以通过 API 创建项目来利用此漏洞。
### 影响
- **远程代码执行 (RCE)**: 在更新容器上下文中执行。
- **主机文件系统访问**: 如果挂载了主机卷。
- **数据泄露**: 通过网络请求或暴露可读文件。
- **主机完全控制**: 如果关键路径(如 `/var/run/docker.sock`)挂载。
### 修复措施
- 移除了生命周期标签 `com.getarcaneapp.arcane.lifecycle.pre-update` 和 `com.getarcaneapp.arcane.lifecycle.post-update`,消除攻击面。
### 参考
- [Issue #1468](#1468)
### 其他信息
- **CVE ID**: CVE-2026-23520
- **报告人**: DenizParlak
- **严重性评分**: 9.1/10 (CVSS v3 基础度量)
标题: fix: remove updater lifecycle hooks (#1468) · getarcaneapp/arcane@5a9c2f9 · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
### 关键信息
#### 漏洞概述
该提交移除了更新器生命周期钩子(#1468),可能涉及以下漏洞:
1. **潜在的钩子执行安全问题**:如果生命周期钩子(lifecycle hooks)执行未正确处理,可能会导致不当的更新行为或恶意命令执行。
2. **日志记录和错误处理问题**:在移除钩子后,相关的日志记录和错误处理逻辑也需要调整,如果处理不当可能会导致信息遗漏或掩盖漏洞。
3. **依赖与环境检查**:生命周期钩子的移除可能影响依赖和环境检查逻辑,如依赖项存在的检查(`LabelDependsOn`)可能需要调整,以避免未预期的行为或安全问题。
#### 文件变化
- **主要受影响文件**:
- `backend/internal/services/updater_service.go`
- `backend/internal/utils/arcaneupdater/labels.go`
- `backend/internal/utils/arcaneupdater/labels_test.go`
- `backend/internal/utils/arcaneupdater/lifecycle.go`(被删除)
- `backend/internal/utils/arcaneupdater/lifecycle_test.go`(被删除)
#### 版本和标签
- **相关标签**:v1.13.0, v1.13.2
- **关联问题**:#1468
#### 安全提示
- 关注日志记录和错误处理部分,确保所有可能引起安全问题的日志和错误信息都被适当地处理。
暂无评论