# AlchemyCMS 评估注入RCE漏洞
## 概述
Alchemy 是一个基于 Ruby on Rails 的开源内容管理系统引擎。在版本 7.4.12 和 8.0.3 之前,系统在处理资源 URL 代理时使用了不安全的 `eval()` 函数,导致存在远程代码执行风险。
## 影响版本
- Alchemy CMS < 7.4.12
- Alchemy CMS < 8.0.3
## 细节
漏洞位于 `app/helpers/alchemy/resources_helper.rb` 第 28 行的 `Alchemy::ResourcesHelper#resource_url_proxy` 方法中。该方法通过 `resource_handler.engine_name` 属性动态构造字符串并传入 `eval()` 执行。代码通过 `# rubocop:disable Security/Eval` 显式禁用安全检查,暴露了对危险操作的认知。
`engine_name` 来源于模块定义,可受管理员配置影响,因此经过认证的攻击者可操纵该值注入恶意 Ruby 代码,绕过沙箱执行任意系统命令。
## 影响
经过身份验证的攻击者可利用该漏洞在目标服务器上执行任意系统命令,导致完全主机控制权失陷。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: Release v8.0.3 · AlchemyCMS/alchemy_cms · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
- **安全相关修复**:
- 修复了`resource_url_proxy`中的`eval`问题,通过使用`send`替代,表明存在潜在的安全漏洞。相关提交:#3563
- **版本信息**:
- 版本:v8.0.3
- 发布时间:9小时前
- **贡献者**:
- 主要由`tdvdeyen`和`alchemycms-ci-bot`参与修复工作
- **其他修复**:
- 通过修复`Callback`、`Clipboard`、`PictureEditor`等功能,可能间接提高系统的安全性,尽管这些变更不一定直接关联安全漏洞。
标题: Release v7.4.12 · AlchemyCMS/alchemy_cms · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
```
- 项目名称: AlchemyCMS / alchemy_cms
- 版本: v7.4.12
- 发布时间: 9小时前
- 关键bug修复和安全改进:
- 使用YAML::safe_load替换潜在不安全的用户加载方式 (#3502)
- 替换resource_url_proxy中的send方法 (#3564)
```
标题: Authenticated Remote Code Execution (RCE) via eval injection in ResourcesHelper · Advisory · AlchemyCMS/alchemy_cms · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
以下是从网页截图中获取到的关于漏洞的关键信息:
### 漏洞概述
- **漏洞类型**: Authenticated Remote Code Execution (RCE) via eval injection in ResourcesHelper
- **严重性**: Moderate (6.6/10)
- **影响版本**: 7.4.11, 8.0.2
- **修补版本**: 7.4.12, 8.0.3
### 漏洞详情
- **摘要**: 在对AlchemyCMS源代码进行手动安全审计时发现了一个漏洞。应用程序使用了Ruby的`eval()`函数来动态执行由`resource_handler.engine_name`属性提供的字符串。
- **详细描述**: 漏洞位于`app/helpers/alchemy/resources_helper.rb`文件的第28行。代码明确地绕过了安全检查,使用了危险的函数但未进行适当的缓解。由于`engine_name`可以被管理配置影响,攻击者可以绕过Ruby沙箱并在主机操作系统上执行任意命令。
### 证明概念 (PoC)
- **关键代码**:
```ruby
def resource_url_proxy(resource_handler)
if resource_handler.engine_name && !resource_handler.engine_name.empty?
eval(resource_handler.engine_name)
end
end
```
- **PoC脚本**: 展示了`eval`函数可以直接被利用,创建了验证文件并成功执行了命令。
### 其他信息
- **CVE ID**: CVE-2026-23885
- **弱点类型**: CWE-95 (Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection'))
- **报告者**: TheDeepOpC
这些信息对于理解漏洞的严重性、范围以及如何修复它非常重要。
标题: Merge pull request #3563 from AlchemyCMS/backport/8.0-stable/pr-3562 · AlchemyCMS/alchemy_cms@563c4ce · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
从这个网页截图中可以获取到以下关于漏洞的关键信息:
1. **代码更改**:
- 在 `app/helpers/alchemy/resources_helper.rb` 文件中,对 `resource_url_proxy` 方法进行了修改。将 `eval` 替换为 `public_send`,以修复潜在的安全漏洞。
2. **漏洞修复**:
- 修复了与 `resource_url_proxy` 相关的漏洞,该漏洞可能涉及到 `eval` 方法的不安全使用,可能导致任意代码执行。
3. **安全检查工具**:
- 使用了 `Brakeman` 安全扫描工具进行代码审查,更新了 `Brakeman` 的版本,优化了安全扫描配置。
4. **更新依赖**:
- 更新了 `ruby` 版本到 `3.4.8`。
- 更新了 `Brakeman` 依赖版本。
5. **安全漏洞类型**:
- 提到了多种安全漏洞类型,如 `File Access`、`Mass Assignment`、`Cross-Site Scripting` 和 `Dynamic Render Path`,涉及多个文件和控制器。
6. **安全扫描结果**:
- 安全扫描结果总结在 `config/brakeman.ignore` 文件中,列出了需要关注的安全警告和漏洞。
总结:该提交主要涉及对 `resource_url_proxy` 方法的安全修复,通过替换 `eval` 方法防止潜在的任意代码执行漏洞,并对项目使用的安全工具和依赖进行了更新。安全扫描结果汇总了多种潜在安全风险,帮助进一步改进代码安全性。
标题: Merge pull request #3564 from AlchemyCMS/backport/7.4-stable/pr-3562 · AlchemyCMS/alchemy_cms@55d03ec · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
### 关键信息摘要
- **漏洞类型**:
- 软件安全修改指示可能存在评估(`eval`)相关潜在安全漏洞。
- **代码变更**:
```markdown
- 修改文件: `lib/alchemy/resources_helper.rb`
- 替换`eval(resource_handler.engine_name)`
- 使用`public_send(resource_handler.engine_name)`代替
```
- **安全改进**:
- 移除了`eval` 方法的使用,降低代码执行安全隐患。
- 提升代码简洁性和安全性。
- **测试覆盖增强**:
- `spec/libraries/resources_helper_spec.rb` 获取新测试范围。
- 对 `public_send` 替代方案验证有效性与预期结果。
- **版本及标签**:
- 标签 7.4-stable 是关键漏洞修复的关键版本。
- 关联版本 v7.4.12 包含此修补程序。
### 安全提示
此次更改的主要目的是减少使用`eval` 方法以预防潜在安全问题,确保在危害性输入面前更不容易受攻击。
暂无评论