黑客,现在正在盯上开发者机器里的“钥匙”。

近期已经发生了多起供应链安全事件:Shai-Hulud、axios 等。

不管是大厂,还是安全公司,都有中招。

这些攻击的共同点是:恶意包一旦在环境里执行,就会尝试获取凭证。

npm token、GitHub token、AWS IAM access key,都可能成为下一步扩散的入口。

攻击者不一定要一次打穿你的生产环境,他只要让你的开发环境帮他把生产环境钥匙交出来。

长期凭证,正在变成高危资产

Shai-Hulud 的攻击路径很典型。

攻击者通过钓鱼获取维护者凭证,发布恶意包。

用户下载并执行后,恶意代码继续获取其开发机和 CI/CD 环境中的密钥。

如果这些密钥是长期有效凭证,风险会被迅速放大。

因为攻击者拿到后,不只可以访问当前项目,还可能继续访问云资源、代码仓库、包注册表,甚至继续发布恶意版本。

AWS 的建议很直接:能不用长期凭证,就不用。

本地开发:用短期凭证替代Access Key

本地开发场景里,AWS 推荐使用 aws loginIAM Identity Center

它们的核心价值是:开发者不需要把长期 access key 放在本地文件里,而是通过登录获取自动过期的短期凭证。

这并不能让恶意包完全无害,但能显著缩短攻击窗口

攻击者即使拿到了凭证,也会面对过期时间和权限边界。

CI/CD:优先用 OIDC 替代长期云凭证

CI/CD 是供应链攻击的高价值目标。

很多团队会把云凭证直接放进 GitHub Actions、GitLab CI 或其他流水线密钥里。这样做的结果是:恶意依赖只要在流水线里执行,就有机会读取这些凭证。

AWS 推荐使用 OIDC federation。

做法是让 GitHub Actions 或 GitLab CI 在每个 job 运行时临时向 AWS 换取权限,而不是长期保存静态 token。

这样,每个 job 的权限可以按需发放,用完过期

生产部署:只信任被签名的产物

除了让 CI/CD 使用短期凭证,AWS 还强调了产物签名。

对包或镜像做签名,可以让生产部署只接受经过可信流水线签名的产物。

这样即使某个开发者凭证被盗,攻击者也不能轻易把未验证的产物推到生产环境。

换句话说,OIDC 负责减少“凭证被偷”的风险。

签名负责减少“恶意产物上线”的风险。

第三方长期凭证怎么办

现实中不是所有服务都支持临时凭证。

AWS 的建议是,如果必须使用长期凭证,至少不要散落在开发者机器本地和流水线配置里。

应放入 AWS Secrets ManagerSystems Manager Parameter Store,并配合访问控制、自动轮换和审计日志。

也就是说,长期凭证如果无法消灭,至少要可控制、可追溯、可轮换

出事后,看CloudTrail和GuardDuty

供应链安全事件发生后,SBOM 可以快速定位哪些应用包含受影响包,帮助评估爆炸半径。

所以要有 SBOM,SPDX 或 CycloneDX 都行。

而凭证一旦疑似泄露,问题就变成:它到底被拿去干了什么?

然后,CloudTrail 可以记录 AWS API 调用轨迹。GuardDuty 可以发现异常 IAM 活动。

AWS 特别建议关注异常 sts:AssumeRole、陌生来源读取 Secrets Manager 或 SSM Parameter Store、开发机绕过 CI/CD 直接推送镜像等行为。

这些都可能是恶意包执行后的横向扩散信号。

别让凭证活太久

供应链安全不是单点防御,而是收紧攻击面。

总体来看,AWS 的方案不是依赖单个检测工具。

而是通过临时凭证、最小权限、签名、集中依赖、持续扫描、SBOM 和监控响应构建多层控制。

减少攻击者利用单个凭证或恶意包横向扩散的机会。

参考资料:Well-architected best practices for software supply chain security https://aws.amazon.com/cn/blogs/security/well-architected-best-practices-for-software-supply-chain-security

声明:本文来自玄月调查小组,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。