2023 年 10 月 28 日
关注 @orta上个月,evasec.io 的安全研究员联系我们,报告了 CocoaPods Trunk(处理 Pod 更新的服务器)中的三个独立漏洞。我们一直在与 evasec 合作,在这些问题出现时对其进行修补。综合考虑这三个问题,我觉得我们需要再次重置所有用户会话,这就是我写博客文章而不是处理本周刚刚发布的 Puzzmo的原因。
针对 Trunk 报告了三个关键问题,这些问题已得到及时修复
- 1. 当有人从 Pod 中移除所有之前的维护者时,仍然可以使用'认领你的 Pod'流程来接管该 Pod
- 2. 发送给你的电子邮件地址进行验证的电子邮件可能会被欺骗,从而更改为指向第三方网站的链接
- 3. 验证你电子邮件地址的 Trunk 部分可用于在 Trunk 服务器上执行 shell 命令
能够在服务器上执行任意 shell 命令使可能的攻击者能够读取我们的环境变量,这些变量可用于写入 CocoaPods/Specs 存储库并读取 Trunk 数据库。能够欺骗人们点击指向第三方网站的链接,可用于窃取他们的会话密钥。我不能保证这两者都不会发生,我宁愿采取安全措施。
这意味着你将需要再次登录 Trunk 才能部署任何新的 Podspecs。如果你现在使用存储的 ENV VAR 对 CocoaPods 进行自动化部署,这将中断,你将需要再次pod trunk register
并替换你的COCOAPODS_TRUNK_TOKEN
。我们很抱歉,我知道这很糟糕,但这也保证你是唯一一个对你的 Pod 拥有写访问权限的人。
如果你不是 Pod 作者,则无需执行任何操作.
evasec.io 仍在撰写有关漏洞工作原理的完整技术细节,因此,当他们准备就绪时,我将使用链接更新此帖子以撰写他们的文章,并撰写一篇新博客文章,其中包含更高级别的详细信息,以向不熟悉服务器架构的人员描述其工作原理。
最坏的情况
与 2021 年的 RCE 一样,我无法证明这些漏洞已被积极利用。但是,仅仅因为没有被证明,并不意味着它没有发生。这涉及自发布以来一直存在于 trunk 中的代码,而 9 年是一段很长的时间。
最坏的情况是攻击者可能使用此技术来访问我们的 trunk 数据库。trunk 数据库包含与 Specs 存储库的 git 历史记录中公开的相同电子邮件。数据库中不应该看到的信息表是会话密钥。这些密钥就像帐户的唯一密码,而会话密钥用于将经过身份验证的用户连接到 pod。我们正在清除所有会话密钥,这确保了除了有权访问其电子邮件的人之外,没有人可以发布对这些 pod 的更新。
了解更多信息
我们要感谢 evasec.io(EVA) 提供的详尽报告!
CocoaPods 由一群志愿者在业余时间运营。如果您对本咨询有任何疑问或意见
- 在 trunk 存储库 中打开一个问题
- 通过我们的私人安全电子邮件给我们发送电子邮件:[email protected]
如果您不确定为 pod 使用的电子邮件地址,请使用 pod trunk info [pod_name]
查看已连接的电子邮件帐户。