第1页
iOS8应用安全 新挑战
李俱顺
<s1mbily@557.im>
第2页
个人简介
• 支付宝安全工程师 • 关注客户端安全/开发
– Windows客户端 – 移动/无线端安全
• 偶尔写写服务端程序,也喜欢搞搞渗透测 试
• 伪Geek
第3页
iOS8新变化
• Swift新语言 • App的新存在形式:扩展(Extension) • 4000+新API • and etc…
第4页
Swift
• 新的语言
– 五仁月饼?
• 号称更快的执行速度
– 比Objective-C快
• 更丰富的语法糖
– 一辈子的中括号终于不 会用光了
第5页
Swift
• 编译过程新变化
– swift->clang替代了clang->clang – 再见rewrite-objc:除了逆向外更难进行实现
分析
第6页
Swift
• 结构变化
– 嘿,我有自己的Framework了!
第7页
Swift
• 运行时新变化:
– 再见,objc_msgSend – 或者叫Objective-C without message?
第8页
Swift
• Swift逆向Tips
– Name mangling:
_TFC10swift_204811AppDelegate27applicationWillResignAc tivefS0_FCSo13UIApplicationT_/_TToC10swift_204811AppD elegate27applicationWillResignActivefS0_FCSo13UIApplicati onT_
– 参数传递顺序:type method(arg1,…, id self) – Object struct/vtables
第9页
Swift
• 如何攻击?
– 再见,method swizzling – 感谢Mobile Substrate,还可以用
• No MSHookMessage
第10页
Swift
• 如何防御
– 一些针对OC的动态特性的加固方法已经不再适 用(如: #define trick)
– 增强调用间验证机制(anti-hook)
• 建议谨慎选择Swift
第11页
扩展
• 不同于应用的架构 • 更加紧密的应用间交互
– 我:不越狱用上第三方输入法了 – 产品经理:终于不用应用间跳转啦
第12页
扩展
• 扩展的本质
– Plugins本质是一个普通的binary程序的 bundle,主程序包含Entitlements声明。
– 借助XPC Services唤起,可以展示一个 UIViewController
– 比如之前的 MFMessageComposeViewController?
第13页
• 生存周期
扩展
• 无法与主程序直接通讯
– 当然也不在调用者程序空间
第14页
扩展
• 安装路径变化
– Base: private/var/mobile/Containers
– 应用:Bundle/Application/<uuid> – 扩展:<appPath>/PlugIns/ – 资源文件:Data/Application/<UUID>/
第15页
扩展
• 安全威胁
– 希望XPC不出什么问题 – 共享数据的安全性
• NSFileCoordination • CoreData • sqlite • keychain • NSUserDefaults
第16页
扩展
• 安全威胁
– 第三方键盘,用户输入隐私怎么办?
第17页
扩展
• 防御方案
– 对第三方键盘 say no – Keychain安全数据共享 – 信息加密安全共享
第18页
APIs
• 新增4000+API
– Wow! – 不是全部与安全有关 (谢天谢地!)
第19页
CloudKit
• iCloud云端存储API
– 创建共享存储空间/私有存储空间 – 私有敏感数据应选择
CKContainer.privateCloudDatabase
第20页
LocalAuthentication
• TouchID开放API
– [LAContext evaluatePolicy:localizedReason:reply:]
• 获取不到指纹内容,只有一个结果block
– 应用场景:本地认证
第21页
WKWebView
• 更快的WebView,更多的H5应用 • 当心JSBridge
– -[WKUserContentController addScriptMessageHandler:name:]
– -[WKUserContentController addUserScript:]
第22页
其他变化
• Xcode不再提供完全iOS framework
第23页
致谢
• 系统安全的各位小伙伴们 • 感谢程君、火翼[CCG]、nekizhang对内容
的建议 • 感谢Evan Swick、John McCall、
Jonathan Levin的无私分享