Cocoapods 爆安全漏洞,看看是否影响到你

共 1153字,需浏览 3分钟

 ·

2021-05-13 22:02

据 Cocoapods 官方称,Podspecs trunk 的核心存储库的服务端验证存在漏洞,在上传新的 Cocoapods 到存储库时,可以在 trunk 服务端执行任意的 shell 命令。该漏洞由用户 Max Justicz 在 4 月 19 日提交给 Cocoapods 官方,告知了使用漏洞的详细步骤。该漏洞利用了将未经处理的用户输入传入 git 调用参数,而这些参数可用于发送远程有效负载。

攻击者可以使用该漏洞在服务器上执行任意代码,并有可能读取服务器的环境变量,这些环境变量可写入 CocoaPods/Specs 存储库并读取 trunk 数据库。在将 podspec 部署到 trunk 时,服务端会验证 git 是否可以访问 repo,这样做的目的是帮助修复可能损坏的 podsped。但这个验证之前是依赖于 trunk 使用 git ls-remote 来复制与用户 git 相同的检查来执行 git CLI 命令,而 ls-remote 带有一个 --upload-pack 参数,可被用于执行任意 shell。也就是说,攻击者可以通过创建特制的 podspec,来通过 --upload-pack 参数在 trunk 上执行任意命令。

这个漏洞主要影响到 CocoaPods 库的开发者,而对使用者没有影响。官方已在 4 月 19 日在服务端修复了漏洞,而 CocoaPods 库开发者需要重新登录 trunk 并重新部署新的 Podspec,而如果是自动部署的话,过程可能会被中断,而需要重新 pod trunk register 并替换 COCOAPODS_TRUNK_TOKEN

考虑到 Specs repo 中的大多数提交都是通过 trunk 自动完成的,所以官方也提供了一些工具来验证 Specs repo 提交是否是通过 trunk 来发布/弃用/删除的。

而官方也坦诚,目前不清楚是否有攻击者利用了这个漏洞,因为该漏洞在 2015 年开始就存在了。不过最坏的情况就是攻击者使用这个漏洞读取了 trunk 数据库,而其中存储了很多用户的 email 邮箱地址,这些邮箱地址在 Specs repo 的 git 提交历史中都有。另外就是存储了会话密钥,则官方也将这些老的会话密钥都清理了。

详情可点 “阅读原文” 查看。

浏览 17
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报