AirJD 焦点
AirJD

没有录音文件
00:00/00:00
加收藏

iOS8应用安全新挑战-Swift新语言新变化 by 李俱顺@支付宝

发布者 security
发布于 1449709408420  浏览 5890 关键词 iOS, 网络安全, 移动开发 
分享到

第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的无私分享



支持文件格式:*.pdf
上传最后阶段需要进行在线转换,可能需要1~2分钟,请耐心等待。