swift 从安全分析中获得警告“删除编译器选项-rpath以删除@rpath”

jaxagkaj  于 2023-02-28  发布在  Swift
关注(0)|答案(3)|浏览(247)

我已经为我的iOS应用程序做了质量扫描分析。我得到了以下警告:

The binary has Runpath Search Path (@rpath) set. In certain cases an attacker can abuse this feature to run arbitrary executable for code execution and privilege escalation. Remove the compiler option -rpath to remove @rpath.

我搜索了@rpath,在我的 * pod-framework.sh * 中找到了以下代码:

# Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
  if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
    local swift_runtime_libs
    swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u)
    for lib in $swift_runtime_libs; do
      echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
      rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
      code_sign_if_enabled "${destination}/${lib}"
    done
  fi

我可以删除这些代码吗?它会影响我的项目吗?
先谢了。

slhcrj9b

slhcrj9b1#

考虑到Xcode 7已经有五年多的历史了,而且应用商店提交至少需要Xcode 11,删除这段代码似乎是安全的。
但是,由于脚本代码不应该运行,二进制文件中的@rpath可能来自其他地方。

jv4diomz

jv4diomz2#

涉及@rpath的漏洞不适用于移动的设置,因为攻击者无法访问文件系统,也无法任意替换这些框架。即使攻击者能够以某种方式用恶意框架替换该框架,该应用也会因代码签名违规而在启动时崩溃。
https://docs.flutter.dev/resources/security-false-positives#the-ios-binary-has-a-runpath-search-path-rpath-set
如果仍需要修复,请按照MobSF "IPA Binary Analysis"中列出的步骤操作

6ss1mwsb

6ss1mwsb3#

u可以使用this tool来分析ur apk或ipa文件或通过cli执行检查:

unzip MyApp.ipa
cd Payload/
cd MyApp.app/
otool -L MyApp | head -n 30

~一个月一次~一个月一次~一个月二次~一个月三次
browsercli

相关问题