eval() 实现远程代码执行
本项目是一项进攻性网络安全研究与演示,仅用于教育和意识提升目的。
未经明确授权在系统上使用本工具是违法的。
本仓库应仅用于:
此处呈现的漏洞场景仅供教育演示之用。
CVE-2026-8838 是在 Amazon Redshift 官方 Python 连接器 (amazon-redshift-python-driver) 中发现的一个严重代码注入漏洞(远程代码执行)。
该缺陷源于在 vector_in() 函数中不安全地使用 Python 原生 eval() 函数处理从服务器直接接收的数据。恶意服务器或处于 中间人 (MitM) 位置的攻击者可以发送特制的 payload,该 payload 将在客户端 被评估并执行,无需任何验证。
vector_in() 函数负责反序列化从 Redshift 服务器接收的向量类型数据。在易受攻击版本中,它直接对服务器返回的原始内容使用 eval():
# 易受攻击代码(简化)— 版本 < 2.1.14
def vector_in(data, offset, length):
raw = data[offset:offset+length].decode("utf-8")
# 缺陷:对服务器控制的数据使用 eval()
return eval(raw)
恶意服务器可以返回任何有效的 Python 表达式来代替合法向量。Python 会将其评估为原生代码。
客户端(受害者) 服务器(恶意 / MitM)
| |
|---------- Redshift 连接 ---------------->|
| |
|<--------- 伪造的响应 --------------------|
| "[__import__('os').system('cmd')]" |
| |
| eval() 在客户端执行 payload |
| => 客户端机器上的 RCE |
参见
poc_server.py获取模拟服务器,以及poc/poc_client.py获取演示客户端。
该 PoC 模拟了一个返回伪造响应的 Redshift 服务器。出于演示目的,使用的 payload 是无害的 (whoami)。
执行:
# 终端 1 — 启动假服务器
python poc/poc_server.py
# 终端 2 — 模拟易受攻击的客户端
python poc/poc_client.py
成功利用可让攻击者:
| 包 | 易受攻击版本 | 修复版本 |
|---|---|---|
amazon-redshift-python-driver | < 2.1.14 | ≥ 2.1.14 |
检查已安装版本:
pip show amazon-redshift-python-driver
pip install --upgrade amazon-redshift-python-driver
# 验证
pip show amazon-redshift-python-driver | grep Version
# 预期输出:Version: 2.1.14 或更高
请参阅 MITIGATION.md 文件获取详细建议:
Maxime288 — github.com/Maxime288
本项研究是作为进攻性安全学习实践的一部分,出于教育目的进行。
| 字段 | 值 |
|---|
| CVE ID | CVE-2026-8838 |
| CVSS 评分 | 9.8(严重) |
| CWE | CWE-94 — 代码生成控制不当 |
| CVSS 向量 | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 易受攻击组件 | amazon-redshift-python-driver < 2.1.14 |
| 易受攻击函数 | vector_in() |
| 攻击类型 | 恶意服务器 / 中间人 |
| 是否需要认证 | 否 |
| 用户交互 | 否 |