CocoaPods 供应链危机:您需要了解的内容
E.V.A Information Security 发现了 CocoaPods 中的严重漏洞,相关漏洞随即得到修复;开发人员现在必须移除无主的包、核实依赖项,并扫描其应用以确保安全。
事件概述
E.V.A Information Security 的研究人员近期在 CocoaPods 依赖管理器中发现了重大漏洞。这些缺陷使恶意行为者能够认领无主 pod 的所有权,并向众多热门 iOS 和 MacOS 应用中注入恶意代码。虽然这些漏洞已被修复,但其潜在影响十分严重,因为此类攻击可能危及几乎所有 Apple 设备。
其中一个关键漏洞是 CVE-2024-38368。该漏洞允许攻击者认领无主的 CocoaPods 包并插入恶意代码。其可能造成的大范围破坏极其巨大,既会影响个人开发者,也会影响依赖 CocoaPods 进行依赖管理的大型组织。
根本原因
这些漏洞的根本原因在于,CocoaPods 仓库对无主 pod 缺乏严格的所有权和验证机制。这一疏漏使攻击者得以控制无主的包,并篡改它们来传播恶意代码。
已采取的修复措施
在漏洞被发现后,CocoaPods 的维护者实施了几项关键的修复措施:
- 修复漏洞:所有已发现的漏洞均已修复,以防止进一步被利用。
- 改进治理:已推出多项措施,加强对 CocoaPods 仓库的治理和监督。
- 所有权验证:已建立更严格的包认领验证流程,确保只有合法的开发者才能认领 pod 的所有权。
Ostorlab 的分析
Ostorlab 的扫描和分析揭示了以下情况:
- 在各类扫描中共识别出超过 290,000 处 CocoaPods 引用。
- 这些引用对应约 9,500 个不同的 CocoaPods 包,其中包括传递依赖。
- 在多款知名应用中发现了无主的包,例如多款
Amazon应用、Tinder等等。 - 在这 9502 个包中,只有 67 个是无主的并且被应用所使用(0.07%),具体如下:
JJPluralForm
ObjectiveGumbo
MosaicUI
GCPlaceholderTextView
iOS-QR-Code-Encoder
JSONKit-NoWarning
GCNetworkReachability
UIImageEffects
MHPrettyDate
NHAlignmentFlowLayout
DBChooser
QR-Code-Encoder-for-Objective-C
GRKInputStreamAggregate
ASCScreenBrightnessDetector
FMMoveTableView
nv-ios-http-status
DYRateView
RegexKitLite
SDNetworkActivityIndicator
MASAttributes
MRCircularProgressView
PPTopMostController
NTMonthYearPicker
UIActionSheet-Blocks
MoPubSDK
NoticeView
HPGrowingTextView
ImageCache
MDSpreadView
Courier
MessagePack
PDKeychainBindingsController
CRGradientNavigationBar
Base64nl
ASIHTTPRequest
JAGPropertyConverter
SHXMLParser
UIAlertView-Blocks
MulticastDelegate
AsyncImageDownloader
DBKit
FPPopover
MagicKit
OAuthCore
XYPieChart
KeychainItemWrapper
MDHTMLLabel
SOCKit
TSCurrencyTextField
CRMotionView
DebugKit
MKMapView-ZoomLevel
ALActionBlocks
StyledPageControl
TouchXML
PinYin4Objc
PopoverView
LogEntries
Promise
WMGaugeView
MGImageUtilities
CSV
MAObjCRuntime
KLSwitch
DejalActivityView
XMLReader
MJPopupViewController
CocoaPods 维护者已应对了眼前的威胁,在一定程度上控制住了风险。然而,开发者和组织仍必须主动采取措施,进一步缓解潜在风险。
接下来您应该怎么做
为确保您的应用安全,请按照以下步骤操作:
- 扫描您的应用:Ostorlab 会报告所有者未被认领的包,其中包括传递依赖。

- 移除无主的包:为防止潜在的漏洞利用,请从您的构建中移除所有无主的包。
标签:
Supply chain