MobSF:解决 @rpath 违规问题

Mar*_*kus 8 security rpath ios

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

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

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)
Run Code Online (Sandbox Code Playgroud)

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

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

小智 4

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

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

在此输入图像描述

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

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

在此输入图像描述

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

仅供参考 - MobSF IPA 二元分析