文档状态:编辑....
...
操作系统的总体功能的设计中考虑过系统的安全性这一条,一开始的安全性的考虑仅仅是防止用户的错误操作对资源进行滥用或者是破坏性操作致使系统无法正常运行,所以这也是开发的初衷,尽管再后来的过程中已经逐步演变为与hack斗智斗勇,不再是用户行为上的误操作,而是恶意寻找内核维护资源控制上的疏忽漏洞,进行非法提权,恶意对用户信息进行操作致使原用户在经济以及其他领域造成一定的损失,所以本篇的讲解着重于理论的形成与发展过程,因为篇幅过长,所以不可能在阶段时间内完成,至于其中的历史阶段自行百度.
通过调用门的跳转
先讲述CPL[Current Privilege Level],DPL[Descriptor Privilege Level],RPL[Request Privilege Level]
- 公式:{max(RPL,CPL)<=DPL }
含义:rpl与cpl中权限最小的比dpl权限大或者相等则可以访问具有dpl的段
这里详细说一下:
1. rpl存储在选择子的最低两位,即请求特权级.RPL说明的是进程对段访问的请求权限.
2. cpl存储在cs寄存器中,即当前特权级,表示当前执行的代码段的特权级.
3. dpl存储在段描述符中的权限位,即要访问对应段所属的特权等级,也就是段本身真正的特权级.
三者分别是现在拥有的权限,想要做事的权限以及做事所需要最低的权限.
有人说既然rpl能够程序员自定义,那不意味着什么权限都能得到,这样怎么起到内核安全性的保障,这里仔细看一下上面写的公式[绿色的],可以说rpl想要起到操纵真正的比较权限的前提是比当前的cpl的权限要低,这就很好的限制住了,因为其他的是用户不能自定义的.
Q:有人说,既然高了都会被cpl限制住,那么rpl还有什么用,申请权限不就是越高越好吗,既然不会高了,那么还有什么用?
A:先说答案四个字"攘外安内".所以说,分析问题的角度很重要,申请权限不就是越高越好吗这句话显然是hack或者是一些对高权限有非系统规则的需求的人,系统的规则是对资源整体管理目前最优的规则,同时系统为使用者提供了所有应该提供的,而妄图破坏这个规则的就是破坏者,所以这个问题是以系统破坏者身份提出的,那么很明显他们的目的没有达到,如果达到了怎么还会问这个问题,明显cpl限制了rpl的疯狂影响,这个就是攘外!,即从系统角度对外部的防御.那么什么又是安内呢?回想我们在做读写文件程序的时候,明明能够读写权限都能获得,但是为什么偏偏有时候选择只是读呢?很明显,我们怕自己出现过失,导致系统文件的破坏,此时设置rpl为较低权限则可降低对资源的控制力度,这是从用户角度上实现了保护即安内!当然hack们总是会利用内部的机制进行伪装欺骗从而骗过内核的安保系统,这就是后话了.
以上写的内容存在纰漏,会在后续过程中进行改正.
如果仅仅以为就是这么简单,那就大错特错了,详情参考一下CPL,RPL,DPL因为这方面讲起来实在是...