查看原文
其他

Codecov后门事件验证分析

代码安全实验室 代码卫士 2022-04-06

 聚焦源代码安全,网罗国内外最新资讯!


事件概述


2021年4月15日,Codecov平台公布称 bash uploader 脚本被攻击者修改,导致用户使用Codecov上传测试数据时,向第三方服务器发送敏感信息。根据调查,该事件最早可能发生于1月下旬。

被修改的恶意脚本目前在互联网公开资源中仍可找到,比如如下链接:

https://gist.github.com/davidrans/ca6e9ffa5865983d9f6aa00b7a4a1d10


在这段bash的525行有如下代码:


其中 ATTACKERIP 为攻击者配置的IP地址。

根据上下文信息,该行代码的行为表现为:

1、收集代码仓库信息

2、收集环境变量和脚本中部分配置信息,比如travis等CI的上传token

根据codecov的说法,通过该恶意脚本,攻击者可以拿到codecov 客户配置CI的凭证,比如令牌或密钥(这个由用户实际配置决定),在获取到相应凭据后,攻击者可以访问相关服务,包括但不限于数据存储和层序的代码,同时,也可以使用bash uploader 覆盖CI的测试结果,以及git代码仓库中相应的结果。


验证


由于travis等CI 以及codecov在配置上有很强的灵活性,根据不同用户的实际需求和习惯,该恶意脚本上传的信息也有所不同。

笔者从 Codecov 官网给出的测试用例中 fork 了一个仓库,并配置 travis 和Codecov,进行验证,结果如下图所示。


同时修改代码,将原本应该 post 到服务器的数据输出到文本文件中:

echo "$(git remote -v)<<<<<< ENV $(env)" >> output.txt


我们来看一下结果。


笔者基本没有做过什么环境配置,所以输出的敏感信息相对较少。

在 Github 中查找 .travis.yml 我们可以看到了部分敏感程度相对高一些的 CI 配置信息,比如:


当然,对于复杂生生产环境,可能暴露出来的敏感信息就更多了。


建议


鉴于敏感信息泄露可能带来的风险,这里特别建议用户:

1、 检查CI配置文件的代码,如果长期在CI after_success 配置项中执行从Codecov 官网下载 bash 脚本并执行的操作,则用户信息可能就会泄露。

2、 将 Codecov bash 脚本替换为官方更新的版本。

3、 回滚 CI 的令牌、密钥和环境变量中的敏感信息。







推荐阅读
速修复!热门代码覆盖率测试工具 Codecov 的脚本遭恶意修改,敏感信息被暴露
微软“照片”应用Raw 格式图像编码器漏洞 (CVE-2021-24091)的技术分析详细分析 Chrome V8 JIT 漏洞 CVE-2021-21220
详细分析PHP源代码后门事件及其供应链安全启示



题图:Pixabay License


转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。



奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的

产品线。

    觉得不错,就点个 “在看” 或 "” 吧~

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存