iOS安全机制简论

本篇文章为科普文,不涉及过多硬核知识,只是探讨一些安全思想,参考自
1、“差评”公众号
详情见参考链接
2、freebuf细数iOS上的那些安全防护
3、简书ios的安全机制
4、安全客利用缓存技术:数据执行保护(DEP)

概述

用过苹果手机的同学可能会知道,一般苹果手机没有像Android手机类似的手机管家,一般也不需要装杀毒软件,而苹果高层也对外宣称“苹果手机不需要清后台”,那这是为什么呢?真得就安全吗?

App Store

首先,用户想要下载应用只能从App Store中下载,在App Store中下载的应用一般是经过严格审核的,并且开发iOS本身就是一件很麻烦的事情,需要符合很多iOS开发的要求
其次,即使你通过某些手段绕过了App Store,苹果在应用运行时也会对其进行签名检测,不是自己签的话也是不让用的

沙盒机制

最出名的恐怕就是苹果的沙盒机制了吧,不过android好像也要有了
1、苹果的权限分为root级和mobile级,苹果自带的功能使用的是root级,而第三方软件都是mobile级

2、iOS没有公共数据存储区,每一个App都有一个单独的文件夹,并且针对第三方app,iOS统一配备赋予了一定权限的沙盒,这个沙盒权限限制的非常严格,沙盒机制规定了应用程序只能在自己的沙盒中读取文件,不能随意跨过自己的沙盒去访问别的沙盒里的内容,如果有需要的话都需要经过权限验证

利用缓解

漏洞无法利用或者利用难度提高的方法被称为利用缓解

DEP

数据执行保护,如果内存页所包含的内容为数据,则将其标记为不可执行区域,反之如果为内存,则标记为可执行区域。这样当处理器试图从标记为不可执行区域的页面中执行代码时,会出现异常,最后被强制终止,这样就可以防止攻击者将恶意代码注入到内存中

Stack Canaries

栈金丝雀保护,在缓冲器和控制数据之间添加随机值,这被称为金丝雀值,当缓冲区溢出时,金丝雀值会被破坏,这样验证金丝雀值时会失败,就可以触发缓冲区溢出保护机制。

ASLR/KASLR

地址随机化,为了增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,用户态进程在每次启动时的执行文件基址随机生成,每次手机重启后,内核的基址也是随机的

Random Heap Element Address

iOS系统在释放内存块的过程中,会对内存释放后在free队列中的顺序进行随机化处理,这个安全措施主要是使用攻击者无法根据堆喷接口调用的时序来预测对应元素在内核的布局。

并非安全,取决于使用

但是我们也听说过苹果手机越狱吧,所以这一方面其实依旧不安全,只是对于普通用户来说一般也没有越狱的需求吧,另外iOS相对Android用户数量少,但是iOS每年也会爆出很多漏洞。