You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Veracode CWE ID 200 敏感信息泄露:iOS应用内部路径暴露问题分析

漏洞基本信息

漏洞描述

应用存在内部文件路径泄露问题。

严重程度说明

攻击者掌握内部系统结构后可进一步实施目录遍历、强制浏览等攻击,此外文件结构还会暴露所使用的服务器类型。

可利用性分析

信息泄露指有意或无意披露的两类信息:

  • 产品自身功能范畴内的敏感信息,例如私人消息
  • 可用于攻击、通常攻击者无法获取的产品或其环境相关信息,例如可远程访问产品的安装路径

多数信息泄露属于次生漏洞(例如PHP脚本报错导致的路径披露),但也可能是原生漏洞(例如crypto加密操作的时间差漏洞)。信息泄露问题类型多样,其严重程度随泄露信息类型的不同存在较大差异。

漏洞位置

Mach-O 64-bit arm64 二进制文件

攻击向量

文件中存储的字符串

漏洞证明

漏洞证明截图

复现步骤

  1. 在iOS设备上下载目标移动应用。
  2. 使用SSH连接到该iOS设备。
  3. 进入应用的安装路径。
  4. iOS设备上应用的默认安装路径为:/var/containers/Bundle/Application/{uuid}
  5. 在App.app目录下找到名为ApplicationName的二进制文件。
  6. 使用strings工具提取二进制文件中的字符串,执行的命令语法为:strings ApplicationName | grep -i '/Users/'
  7. 可看到二进制文件暴露了多条开发环境的本地路径。

漏洞修复方案

1. Xcode编译配置优化

  • 关闭编译期冗余符号生成:在Xcode项目的Build Settings中,将Deployment Postprocessing设置为YES,将Strip Debug Symbols During Copy设置为YES,Release模式下全量开启符号剥离,删除编译生成的路径相关调试信息。
  • 调整调试信息存储规则:将Debug Information Format在Release模式下设置为DWARF with dSYM File,dSYM符号文件单独存档,不打包到最终的IPA安装包内。
  • 关闭开发路径嵌入开关:找到Build Settings中的GCC_GENERATE_DEBUGGING_SYMBOLS配置项,Release模式下设置为NO,避免编译时将开发机本地路径写入二进制符号表。

2. 代码层面风险清理

  • 禁止硬编码开发环境路径,所有路径相关逻辑统一使用系统运行时API动态获取,例如获取应用沙盒路径调用NSSearchPathForDirectoriesInDomains系列方法,不要写死任何绝对路径。
  • 清理代码中遗留的调试打印逻辑,尤其是输出文件路径的NSLog、print语句,通过宏定义在Release模式下全局关闭所有调试日志输出。
  • 排查项目依赖的第三方静态库/动态库,提前用strings命令检测第三方库二进制是否存在开发路径嵌入问题,要求供应商提供无冗余信息的正式版本库。

3. 打包流程校验加固

  • 上线前增加自动化检测环节:对最终导出的IPA包解压后,提取主二进制文件的字符串,执行strings [二进制文件名] | grep -i '/Users/'命令筛查是否存在开发路径泄露,命中规则则直接阻断上线流程。
  • 统一使用CI/CD公共构建机器打包,禁止在开发人员本地设备导出Release版本,从源头减少本地开发环境路径被嵌入的概率。

内容的提问来源于stack exchange,提问作者Prajnaranjan Das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:15:02