serverless-localstack命令注入漏洞CVE-2026-16763
serverless-localstack是Serverless Framework的官方配套插件,它主要用来打通Serverless开发工具与 LocalStack 本地 AWS 模拟器。
一、基本情况
serverless-localstack可以实现AWS Serverless项目全本地离线开发、部署、调试,无需真实 AWS 账号、不上传云端资源,零云成本。
serverless-localstack全程本地 Docker运行,不会产生 AWS 计费、不会污染线上开发环境,本地部署毫秒级完成,插件不能单独使用。

栋科技漏洞库关注到 serverless-localstack 存在的操作系统命令注入漏洞,该漏洞现已被追踪为CVE-2026-16763,CVSS 3.1评分 6.5。
二、漏洞分析
CVE-2026-16763是serverless-localstack插件安全漏洞,启用自动启动并提供恶意配置时,攻击者可导致插件执行任意操作系统命令。
具体来说,serverless-localstack 1.0 至1.4.0 的 Configuration Handler 在 src/index.js 的 startLocalStack 函数中,
直接将custom.localstack.docker.compose_file插入docker-compose命令字符串,
未进行参数隔离或转义,导致本地项目配置或CI配置中的Shell元字符被解释并执行,该漏洞攻击面范围较小,但利用成功后危害严重。
当开启自动启动功能,插件通过 Docker Compose 启动 LocalStack 时,
serverless-localstack 插件会将配置项 custom.localstack.docker.compose\_file 的值直接传入 shell 命令执行。
官方文档中说明 docker.compose\_file 为可选的 Docker Compose 文件路径配置项:
custom:
localstack:
autostart: true
docker:
compose_file: /home/localstack_compose.yml
但在src/index.js文件中,该配置值被直接拼接进命令字符串:
exec(`docker-compose -f ${this.config.docker.compose_file} up -d`)
由于该参数未做转义处理,也未以参数数组形式传入命令,若 Compose 文件路径中包含 Shell 元字符,即可额外执行任意系统命令。
三、POC概念验证
(一)测试环境:
serverless-localstack@1.4.0
Node.js 24.10.0
macOS / POSIX 类 Shell
(二)复现步骤
1、新建最简项目:
rm -rf /tmp/sls-localstack-public-poc /tmp/sls-localstack-aci
mkdir -p /tmp/sls-localstack-public-poc
cd /tmp/sls-localstack-public-poc
npm init -y
npm i serverless-localstack@1.4.0
2、创建poc.js:
管理员已设置登录后刷新可查看运行:
node poc.js
实际结果:未做转义处理的 compose_file 配置值被直接嵌入Shell命令中执行:
[exec] docker ps
[sls] Starting LocalStack using the provided docker-compose file. This can take a while.
[exec] docker-compose -f x; touch /tmp/sls-localstack-aci; # up -d
[exec] docker ps
marker exists: true
标记文件成功生成,证明漏洞可实现任意命令执行。
(三)预期效果
custom.localstack.docker.compose\_file 配置项应仅作为 Docker Compose 文件路径处理,路径内的 Shell 元字符不得触发命令执行。
(四)修复建议
禁止通过配置值拼接 Shell 命令字符串,改用参数数组形式调用:
execFile ('docker-compose', \['-f', this.config.docker.compose\_file, 'up', '-d'\])
或使用 spawn、execa 并设置 shell: false。
同时检查其余 Docker 相关命令拼接逻辑,例如 docker network connect "${this.config.networks \[network\]}" ${containerID} 这类写法。
(五)漏洞危害
若攻击者能够篡改项目的 serverless.yml 文件或 CI 配置,且项目启用 serverless-localstack 插件并开启自动启动功能,
攻击者即可以开发者或 CI 运行账号的权限执行任意系统命令。
四、影响范围
serverless-localstack < 1.4.1
五、修复建议
serverless-localstack ≥ 1.4.1
六、参考链接
管理员已设置登录后刷新可查看