首页 > 解决方案 > MobSF:解决@rpath 违规问题

问题描述

我们使用 MobSF 测试了我们的一款 iOS 应用程序,报告强调该二进制文件设置了运行路径搜索路径 (@rpath)。在某些情况下,攻击者可以滥用此功能来运行任意可执行文件以执行代码和提升权限。

otool -L对二进制文件进行了检查以检查涉及哪些依赖项。事实证明,所有 pod(Cocoopod)和一些系统库都受到关注。

name @rpath/Alamofire.framework/Alamofire (offset 24)
name @rpath/libswiftCoreAudio.dylib (offset 24)
name @rpath/libswiftCoreData.dylib (offset 24)
name @rpath/libswiftCoreFoundation.dylib (offset 24)

我想知道如何解决这个问题。Runpath Search Paths如果项目构建设置不包含 $(inherited),Cocoapods 会打印警告。

使用@rpath 被认为是有害的吗?任何帮助/信息表示赞赏。

标签: iossecurityrpath

解决方案


运行路径搜索路径指示动态链接器在路径的有序列表上搜索动态库 (dylib),有点像 Unix 在 $PATH 上查找二进制文件的方式。

如果您的应用程序使用Swift 包管理器,为了在没有 rpath 的情况下编译库,您需要使用一些隐藏的构建标志。在本地命令行上运行:

在此处输入图像描述

请注意 swift 编译器选项 no-stdlib-rpath 在编译期间禁用 rpath 条目。配置您的构建设置,以便使用此配置标志构建应用程序,例如:swift build -c release -Xswiftc -no-toolchain-stdlib-rpath。

或者,如果您的应用程序使用Cocoapods,您可以先检查 pod 的安装目录:

在此处输入图像描述

然后在您的 Podfile 上使用以下配置: 在此处输入图像描述

供参考 - MobSF IPA 二进制分析


推荐阅读