当前位置:安全企业动态 → 正文

现代iOS应用安全

责任编辑:editor004 作者:Sergio De Simone |来源:企业网D1Net  2016-08-09 13:50:22 本文摘自:INFOQ

仅使用HTTPS:这通过总是在URL指定https来实现。在这种情况下,NSURLConnection和NSURLSession会使用App Transport Security(ATS),这可以保证你恰当地使用了TLS 1.2、证书验证等。此外,Guido建议使用TrustKit,该框架让你可以轻松地部署绑定到任意iOS或OS X应用的SSL公共密钥,监控绑定验证失败。

使用加密:应该使用DPAPI和Keychain加密所有的文件、密码和令牌。Guido用一些时间介绍了DPAPI提供的选项:

加密文件:NSFileProtectionComplete、NSFileProtectionCompleteUnlessOpen、NSFileProtectionCompleteUntilFirstAuth; 将NSData写到磁盘:NSDataWritingProtectionComplete、NSDataWritingProtectionCompleteUnlessOpen、NSDataWritingProtectionCompleteUntilFirstAuth。

Stack Overflow上有个帖子提供了有关它们的一些值得注意的细节。

清理:这是避免留下敏感数据的基本步骤。虽然几乎所有存储在磁盘上的文件都是加密的,但是Guido警告说要提防若干不容易察觉的危险。特别地,iTunes备份的存储是不加密的,因此,通过攻击桌面操作系统而不是iOS窃取敏感数据就成为一种可能。Guido提到,你可以禁止使用NSURLIsExcludedFromBackupKey密钥向iCloud或iTunes同步。此外,在UIPasteboard、URL或者键盘缓存、iOS自动获取的应用后台快照、cookies、NSLog记录等地方,应用通常会留下一定量未加密的潜在敏感数据。所有这些风险都可以通过遵循恰当的策略来避免,例如,重写applicationDidEnterBackground,将hidden设为YES;使用secureTextEntry,禁用自动更正,从而规避键盘缓存,等等。

Guido总结道,做完这些基本工作后,就可以考虑消除其他层面的风险,比如自定义URL处理器、UIWebView中的XSS、XML解析、SQL注入,等等。

不过,当应用运行在已经越狱的手机上时,所有那些配置就都不是很有效了。越狱是禁用了基本安全机制的漏洞利用程序。它们可以被用来攻击手机,并取得手机的控制权,但有趣的是,用户因为种种原因自愿越狱,比如访问第三方应用商店,替换默认应用,自定义操作系统外观,解锁设备。按照Guido的说法,多达700万iPhone用户已经越狱了他们的手机,也就是说,运行在这些手机上的恶意应用可以绕过所有的设备安全机制,比如Keyraider就窃取了225000台设备的Apple ID证件用于应用内购买。

对于运行在已经越狱的手机上的应用,有几种方法可以提升它的安全性。

当运行在已经越狱的设备上时,检测成功越狱后留下的系统工件。通常,这可以归结为实现若干检查,比如是否存在ssh、Cydia.app文件、fork()系统调用,等等。 拒绝调试或钩挂应用程序的尝试,防止绕过越狱检查的攻击者使用调试器或者特定的工具,如tsProtector或xCon。通常,这可以通过在运行时使用sysctl找出谁是应用的属主来实现:如果它不是launchd或内核,就可以退出或更改执行。 增加理解由IDA Pro、Hopper或Binary Ninja生成的拆解应用代码的难度。其实现可以借助一些迷惑技术将不使用的代码增加100倍,加密符号,使用谓词,等等。

最后一点,Guido强调了全面实施上述所有配置的重要性,借助一个LLVM的修改版本在编译时修改代码,不依赖个体程序员在必要的地方增加检查。

关键字:iOSGuido越狱

本文摘自:INFOQ

x 现代iOS应用安全 扫一扫
分享本文到朋友圈
当前位置:安全企业动态 → 正文

现代iOS应用安全

责任编辑:editor004 作者:Sergio De Simone |来源:企业网D1Net  2016-08-09 13:50:22 本文摘自:INFOQ

仅使用HTTPS:这通过总是在URL指定https来实现。在这种情况下,NSURLConnection和NSURLSession会使用App Transport Security(ATS),这可以保证你恰当地使用了TLS 1.2、证书验证等。此外,Guido建议使用TrustKit,该框架让你可以轻松地部署绑定到任意iOS或OS X应用的SSL公共密钥,监控绑定验证失败。

使用加密:应该使用DPAPI和Keychain加密所有的文件、密码和令牌。Guido用一些时间介绍了DPAPI提供的选项:

加密文件:NSFileProtectionComplete、NSFileProtectionCompleteUnlessOpen、NSFileProtectionCompleteUntilFirstAuth; 将NSData写到磁盘:NSDataWritingProtectionComplete、NSDataWritingProtectionCompleteUnlessOpen、NSDataWritingProtectionCompleteUntilFirstAuth。

Stack Overflow上有个帖子提供了有关它们的一些值得注意的细节。

清理:这是避免留下敏感数据的基本步骤。虽然几乎所有存储在磁盘上的文件都是加密的,但是Guido警告说要提防若干不容易察觉的危险。特别地,iTunes备份的存储是不加密的,因此,通过攻击桌面操作系统而不是iOS窃取敏感数据就成为一种可能。Guido提到,你可以禁止使用NSURLIsExcludedFromBackupKey密钥向iCloud或iTunes同步。此外,在UIPasteboard、URL或者键盘缓存、iOS自动获取的应用后台快照、cookies、NSLog记录等地方,应用通常会留下一定量未加密的潜在敏感数据。所有这些风险都可以通过遵循恰当的策略来避免,例如,重写applicationDidEnterBackground,将hidden设为YES;使用secureTextEntry,禁用自动更正,从而规避键盘缓存,等等。

Guido总结道,做完这些基本工作后,就可以考虑消除其他层面的风险,比如自定义URL处理器、UIWebView中的XSS、XML解析、SQL注入,等等。

不过,当应用运行在已经越狱的手机上时,所有那些配置就都不是很有效了。越狱是禁用了基本安全机制的漏洞利用程序。它们可以被用来攻击手机,并取得手机的控制权,但有趣的是,用户因为种种原因自愿越狱,比如访问第三方应用商店,替换默认应用,自定义操作系统外观,解锁设备。按照Guido的说法,多达700万iPhone用户已经越狱了他们的手机,也就是说,运行在这些手机上的恶意应用可以绕过所有的设备安全机制,比如Keyraider就窃取了225000台设备的Apple ID证件用于应用内购买。

对于运行在已经越狱的手机上的应用,有几种方法可以提升它的安全性。

当运行在已经越狱的设备上时,检测成功越狱后留下的系统工件。通常,这可以归结为实现若干检查,比如是否存在ssh、Cydia.app文件、fork()系统调用,等等。 拒绝调试或钩挂应用程序的尝试,防止绕过越狱检查的攻击者使用调试器或者特定的工具,如tsProtector或xCon。通常,这可以通过在运行时使用sysctl找出谁是应用的属主来实现:如果它不是launchd或内核,就可以退出或更改执行。 增加理解由IDA Pro、Hopper或Binary Ninja生成的拆解应用代码的难度。其实现可以借助一些迷惑技术将不使用的代码增加100倍,加密符号,使用谓词,等等。

最后一点,Guido强调了全面实施上述所有配置的重要性,借助一个LLVM的修改版本在编译时修改代码,不依赖个体程序员在必要的地方增加检查。

关键字:iOSGuido越狱

本文摘自:INFOQ

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^