终结操作系统越权攻击:授权体系构建详解

978-7-115-63666-9
作者: 新设计团队
译者:
编辑: 贺瑞君
分类: 其他

图书目录:

详情

针对操作系统的越权攻击就是攻击者利用CPU、操作系统中存在的不符合构建准则的设计错误,使访问行为与授权不一致。 操作系统中存在不符合构建准则的设计是越权攻击成功的必要条件,本书的思路就是研究并构建可精确定义的正确授权准则。对符合构建准则的操作系统发起越权攻击时,操作系统缺少越权攻击成功的必要条件,越权攻击无法完成,针对操作系统的越权攻击被彻底解决。 作者结合C语言、汇编语言、体系结构、运行时结构、操作系统原理、攻击原理等基础知识,阐明如何构建正确授权准则,杜绝操作系统越权攻击。 本书适合操作系统、编译及系统软件、芯片设计和信息安全等领域研究人员、工程技术人员阅读,也适合计算机等信息类专业研究生及高年级本科生参考。

图书摘要

版权信息

书名:终结操作系统越权攻击:授权体系构建详解

ISBN:978-7-115-63666-9

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。


版  权

著    新设计团队

责任编辑 贺瑞君

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

内 容 提 要

操作系统越权攻击是指攻击者利用CPU、操作系统中不符合构建准则的设计,使访问行为与操作系统授权准则不一致。操作系统中存在不符合构建准则的设计是越权攻击成功的必要条件。本书的思路就是研究可精确定义的正确授权准则,并确立构建准则。

本书结合 C 语言、汇编语言、体系结构、运行时结构、操作系统原理、攻击原理等基础知识,阐明如何构建正确的授权准则,杜绝操作系统越权攻击。本书共分3部分。第一部分阐述思路与逻辑,首先介绍彻底解决越权攻击问题的思路,随后介绍独立访问行为准则与独立访问构建准则;第二部分介绍对比与解决方案,首先用构建准则分析 Linux 操作系统+ Intel硬件体系(本书简称Linux+Intel)的授权安全设计,随后介绍针对Linux+Intel的安全解决方案;第三部分为案例分析,依次分析CVE-2017-5754熔断漏洞、CVE-2013-1763漏洞及CVE-2016-5195漏洞攻击的案例。

本书适合系统安全、操作系统、体系结构和编译等领域的研究人员、工程技术人员,以及计算机软硬件相关专业的研究生阅读、参考。

前  言

越权攻击是指攻击者利用操作系统中的设计错误使访问行为与操作系统授权准则(以下简称授权准则)不一致。彻底解决越权攻击问题就是要使操作系统中的访问行为与授权准则始终保持一致,即等价于彻底解决不一致问题。设计错误是无限规则无限集,无法用逻辑推理的方法彻底排查、修正,而符合授权准则的正确访问行为是有限规则无限集,可以用逻辑推理的方法确保访问行为与授权准则一致。

操作系统授权的本质是访问控制,通过对硬件、软件中各个层面进行有效的访问控制,可以确保构建出的访问行为与授权准则一致。本书先根据授权准则推导出独立访问行为准则(以下简称行为准则),再根据行为准则推导出独立访问构建准则(以下简称构建准则)。这样,对于给定的CPU、操作系统,就可以找出并修改访问控制机制中所有不符合构建准则的设计,最终使所有实际的访问行为都与授权准则一致,从而实现操作系统中只有授权访问,没有越权访问。

操作系统中存在不符合构建准则的设计是越权攻击成功的必要条件。只要确保操作系统缺少越权攻击成功的必要条件,攻击程序就无法摆脱访问控制、实现越权访问,也就无法完成越权攻击。只有这样,针对操作系统的越权攻击才能被彻底解决。

“彻底解决”是本书介绍的解决方案与现有解决方案之间最大的差异。本书介绍的解决方案包含用逻辑推理方法构建出的一套能够彻底解决操作系统越权攻击问题的理论体系。读者在阅读本书时,应尽可能不受现有观念的影响,可遵循本书的逻辑推理逐步理解全书内容;同时,不要一开始就陷入对每一个技术细节的“钻研”,而是待掌握整体思路之后,再研究具体的技术细节。此外,还可以翻阅IA-32、AMD64,以及操作系统原理、源代码等相关资料。

本书由杨力祥带领的新设计团队(以下简称团队)共同完成,团队成员有、苏永生、刘天厚、武若冰、宋琦。团队专注于对理论体系的探索和对颠覆性创新的追求。

本书的出版,首先要感谢倪光南院士。十余年来,倪院士始终给予团队全方位的、不遗余力的支持。倪院士曾多次组织研讨会和相关活动,帮助团队同有关专家学者展开有益探讨,其情其景仍历历在目。倪院士一直以来都希望我们的祖国强大,能够在科学技术方面产生真正的颠覆性原创成果。十余年前,团队与倪院士尚未相识。一个偶然的机会,倪院士得知团队的研究成果,便竭尽全力向各级领导、各个机构推举团队。本书的顺利出版就是倪院士支持的结果。希望本书的面世,能够在智能“大航海”时代,为人类探索前所未知的领域奠定可推导、可验证、可信赖的信息安全基石。

感谢金融家端木震宇博士,他不仅为团队验证原型机提供了海外专线及攻击测试平台,还为团队引荐了很多金融家。感谢中国科学院科技创新发展中心主任姜晓明研究员,他组织了由中国科学院相关专家参与的本书相关成果研讨会。

历经十多轮寒来暑往、数十次推倒重来,本书终于与读者见面。衷心感谢人民邮电出版社科技出版中心王威总经理及贺瑞君编辑的鼎力支持。他们的支持,是本书顺利出版的有力保证。

最后,感谢团队中每一位成员的家人,本书的顺利出版离不开他们的理解与信任。

杨力祥

第一部分 思路与逻辑

第1章 彻底解决越权攻击问题的思路

彻底解决针对操作系统的越权攻击问题的思路是实现可证明的、无法实现越权访问的操作系统。越权攻击是越权访问的子集,如果操作系统中无法实现越权访问,就不可能有越权攻击,也就达到了彻底解决针对操作系统的越权攻击问题的目的。

针对计算机的攻击已经出现很久了,而且总会有新的攻击冒出来,全世界的计算机安全专家经过几十年的努力仍不能彻底解决这个问题。更可怕的是,人们不知道究竟有过多少未知攻击,更不知道未来还有多少未知攻击。因此,计算机安全领域逐渐形成了一个共识:针对计算机的攻击不可能彻底解决,正所谓“道高一尺,魔高一丈”。

针对计算机的攻击,本质上是一种对计算机的特殊使用,是借助计算机软硬件设计中存在的错误,实现设计者预期之外、给使用者造成损害的执行结果。所以,避免攻击问题本质上就是消除软硬件系统中存在的错误。

计算机中所有可能的访问可被分为两个集合:符合授权的访问(简称授权访问)、不符合授权的访问(简称越权访问)。若分别称它们为“正确”“错误”,则消除系统中的“错误”有以下两种方式。

(1)定义“错误”的特征,以此来识别、解决系统中的“错误”。

(2)定义“正确”的特征,构建只能执行“正确”操作的系统。

本章将论证:方式(1)无法彻底消除“错误”,也就意味着这种方式无法彻底避免所有的攻击问题;对于方式(2),只有当正确集为有限集或有限规则无限集时可定义“正确”的特征,且正确集必须能覆盖实际使用全集且系统有能力消除正确集之外的一切错误时,才能够构建只能执行“正确”操作的系统。

此外,本章还将论证:操作系统的授权访问所依据的准则有限,是有限规则无限集。授权的本质是访问控制,本书将提出一些访问控制方法,并证明这些方法是以授权访问的有限规则为标准,能够消除一切越权访问,这样就可以实际构建只有“正确”、没有“错误”的操作系统,使操作系统中的所有访问只能是授权访问

1.1 所有基于探索攻击规律的方法都不可能彻底避免攻击问题

如果错误是有限集,那么可以逐个解决。遗憾的是,错误并非有限集。例如,“2+3”这个简单计算,正确的结果只有“5”,而错误的结果没有一定之规,可能性有很多,甚至可以不是自然数。所以,错误是无限集,而且是无规则无限集。

对操作系统来说,通过定义错误(越权访问)的特征,能够做到根据错误特征识别彻底消除系统的所有错误吗?

答案是无法做到。这是因为,解决无限集问题只能用逻辑推理的方法,逻辑推理的基本工具是三段论。著名的三段论是这样表述的:因为所有人都会死,苏格拉底是人,所以苏格拉底会死。能够推导出“苏格拉底会死”这个正确结论的前提是“所有人都会死”为真。该三段论用集合论可表述为:若全集(所有人)都具有某属性(会死)为真,则子集(苏格拉底)具有该属性(会死)为真,简称全集为真、子集为真。该表述看起来更简单明了。例如,如果一个箱子里所有的球都是红色的,显而易见,其中任何一个球必是红色。

怎么确认全集都具备某属性(所有人都会死)为真呢?对于客观世界,需要与观察相符;对于主观世界,则需要自洽。这里的“所有人”包括已经死去的、现在活着的、未来出生的,它不是一个有限集。人类的观察有限,无法用有限的观察确定无限集为真。再者,一个人如何确定自己是否会死呢?活着的时候无法确定,死了更无法确定。特别是,谁也无法确定未来一定不会出现能使人不死的技术或力量。

一个看来似乎简单的“所有人都会死”的判断,其实并不简单。那怎么确定无限集全集为真的判断?之前的解决方法是认定为真,或者说不证自明(Self-evident),听上去有些“不讲理”的感觉。如果换一个思考角度定义:真,就是举不出反例。对判断“所有的人都会死”为真而言,举不出反例就是没有人能观察到永远不死的人。

对于有限集,人类总可以通过逐一观察来确定是否为真。对于无限集,人类的观察有限,无法通过逐一观察所有元素来确定是否为真。如果一个无限集存在形式化的、适用于全集的准则,就可以通过准则确认是否举不出反例。例如,自然数中的奇数和偶数都是无限集,任意两个奇数之和为偶数是否为真?尽管和的集合也是无限集,但只要能找到奇数、偶数的通项公式,就可以通过奇数、偶数的通项公式判断和的集合中的所有元素都是偶数且举不出反例,由此确认全集为真。只要可以定义适用于全集的有限规则,就可以逐个准则确认,最终确认全集是否为真。对于无限多准则的集合,无法通过逐个准则判断全集是否为真。所以,举不出反例要求全集只能是有限集或有限规则无限集[1]

[1] 由于有限集比较简单,后续只讨论有限规则无限集。

综上所述,错误是无规则无限集,无法做到判断全集为真,也就无法使用逻辑推理的方法进行研究。所以,一切试图通过找出错误自身的规律来避免攻击问题的方法都不可能彻底避免攻击问题

1.2 定义操作系统的授权访问集合为有限规则无限集

错误集是无限规则无限集,无法使用逻辑推理的方法进行研究,但正确集可以被定义为有限规则无限集。对操作系统而言,这意味着可以将授权访问集合(正确集)严格定义为有限规则无限集,这样就可以用逻辑推理的方法判断所有授权访问行为是否与授权准则一致,即授权访问行为是否严格符合授权准则。

操作系统的授权访问就是允许其他用户的程序以指定的方式访问自己的资源。其中,资源指用户在计算机中的数据、代码,以指定的方式访问指读、写、执行。用户访问自己的资源是自然具备的权利,可以不受约束。

操作系统中的权利体现在用户、访问操作、访问操作对象三者之间,本书将用户、访问操作、访问操作对象称为权利三要素,简称三要素。操作系统的授权对象是用户程序的访问,一次访问授予一个独立的权限。为了方便起见,本书称操作系统的授权对象为独立访问

操作系统的授权准则是:未经许可,任何用户程序不得访问其他用户的资源。授权准则允许的范围清晰、明确:允许用户程序以任何方式访问属于自己的任何资源,以及用指定的方式访问指定的其他用户资源,同时禁止访问允许之外的其他用户资源,即禁止访问不被允许访问的其他用户的一切资源。

授权只可能有两种方法:一种是逐项授权,这种方法只可能对有限个访问授权;另一种是可对无限个访问授权,只能通过确定的准则进行授权。操作系统的授权访问是无限的,只能通过准则授予什么用户、用什么操作、访问什么对象。由于准则都是人为定义的,而人无法定义无限个准则,所以只要是明确定义的准则,数量上只可能是有限个。因此,将操作系统的授权访问集合(正确集)明确定义为有限规则无限集是自然而然的。

操作系统的授权是人为定义的,只要设计者认为授权的定义合理、符合需求即可,没有一定之规。但授权必须一致,因为不一致就是自身允许存在反例,会导致逻辑混乱。即使是明确定义,仍有可能在准则中出现不一致的情况。而明确定义的正确集的准则数量是有限的,可以逐个比对,确保准则一致。

严格定义操作系统的授权准则,就可以确定授权访问集合的边界,并判断集合是否纯粹且完备。操作系统中只应该存在授权访问,不应该存在越权访问,且授权访问集合应该与实际访问集合相等。尽管仍无法明晰越权访问集合的内在规律,但容易知道授权访问集合以外的都是越权访问。当确定了授权访问之后,就可以消除不属于授权访问的所有访问,即消除了所有越权访问。

1.3 独立访问行为准则必须与操作系统授权准则一致

授权对象是用户程序的独立访问。独立访问不是任意的访问,而是基于计算机硬件、为满足授权准则专门定制的用户程序访问。用户程序访问的目的是实现用户的需求,而用户的需求各种各样,这意味着用户程序的访问是不确定的,而且就应该不确定。但这种不确定与授权准则冲突,所以应该为用户程序的访问制定符合操作系统授权准则的独立访问行为准则。

独立访问行为准则是操作系统授权准则落实到独立访问的体现,是操作系统授权准则的具体化。它的目的是做到在操作系统中只有授权访问、没有越权访问,这就要求独立访问行为准则必须与操作系统授权准则一致。也就是说,如果操作系统中实际运行的独立访问行为能够始终、严格符合操作系统授权准则,那么操作系统中就不可能有越权访问。

1.4 独立访问构建准则必须与独立访问行为准则一致

虽然CPU、操作系统的具体设计千差万别,但基本原理和基础技术是差不多的。本节涉及的构建指的不是功能、效率之类的构建,而是特指确保独立访问行为准则与授权准则一致的构建。

独立访问在计算机实际运行中不是天然存在的,而是由基于硬件的软件专门构建的,硬件及软件的设计决定了独立访问行为。独立访问行为必须遵守独立访问授权准则,这就决定了独立访问不能随意构建,为此,应该为独立访问的构建提供一套准则,确保构建出来的独立访问行为严格符合独立访问行为准则。也就是说,独立访问构建准则必须与独立访问行为准则一致。

由于独立访问行为准则与操作系统授权准则一致,所以独立访问构建准则与独立访问行为准则一致意味着构建出的独立访问行为是严格符合操作系统授权准则的。

1.5 通过访问控制实现独立访问行为与操作系统授权准则一致

操作系统授权准则规定了允许和禁止用户程序访问的内容。换句话说,操作系统授权准则就是用户程序的访问控制准则。如果操作系统中的用户程序只能进行被允许的访问,就没有必要制定授权准则。正是因为用户程序有能力访问所有用户资源,才需要制定授权准则。本书称用户程序可以访问所有用户资源的能力为全资源访问能力,操作系统授权准则就是对全资源访问能力的控制准则。

操作系统授权准则是在用户、访问、资源的逻辑层面确定的访问控制准则,既定义了访问控制的正确集(用户访问自己的资源及允许访问的其他用户资源的行为),也定义了访问控制的错误集(用户访问未经许可的其他用户资源的行为)。

操作系统的授权对象是独立访问,独立访问行为准则是覆盖每一项独立访问的访问控制准则,涉及对独立访问行为细节的访问控制,这些细节与全资源访问能力相关。当不同的用户资源被配置在不同的存储区域后,“对其他用户资源的访问”就映射为“对不同存储区域的访问”,“用户程序可以访问自己的全部资源”就映射为“独立访问可以访问属于自己的存储区域”,“用户程序禁止访问未经许可的其他用户的资源”就映射为“独立访问禁止访问未经许可的存储区域”;“对不同用户资源的访问控制”则映射为“对不同存储区域的访问控制”。这些映射的目的是通过对存储区域的访问控制实现对独立访问的控制。

1.6 构建只有授权访问、没有越权访问的操作系统

如前文所述,虽然无法构建没有缺陷的操作系统,但是这不等于不能构建没有越权访问的操作系统。虽然越权访问的规律、机制同样无法被研究清楚,但只要以独立访问行为准则、构建准则为标准,使不符合独立访问行为准则的访问无法执行、符合准则的访问得以执行,就可以构建出只有授权访问、没有越权访问的操作系统。

学过编译原理的读者都知道,现代编译理论已经可以彻底识别所有语法错误。程序员写出的语句中可能存在任何语法错误,这类错误显然是无限规则无限集。虽然语法正确的语句显然也是无限集,但是语法正确的语句必须遵守语法准则,而语法准则有限,这就是所谓的产生式集合。编译器根据产生式集合进行语法分析,如果是不符合语法准则的语句,则不编译,且不研究错误的规律;只有符合语法的语句才能被编译。这样,就能够构建出只由语法正确的语句构成的程序,使程序中所有语法错误都无所遁形。

与此类似,在操作系统中制止一个越权访问很容易,只要清除或停止执行越权访问指令即可,关键是需要将越权访问与授权访问区分开。与在编译中彻底消除语法错误同理,只要能够找到操作系统中授权访问的产生式集合,即授权访问所依据的准则的集合,就可以像依据产生式集合构建编译器那样,根据独立访问构建准则来构建只能进行授权访问的操作系统。实施思路简单明了:不符合授权访问控制准则的访问,无论它是何原理、机制,在有效的访问控制下,必然不能成功执行。这样的操作系统中将只存在授权访问、没有越权访问。由于越权攻击是越权访问的子集,所以这样的操作系统中不会产生越权攻击,也就彻底避免了所有针对操作系统的越权攻击。

相关图书

Joy RL:强化学习实践教程
Joy RL:强化学习实践教程
计算机组成原理(基于x86-64架构)
计算机组成原理(基于x86-64架构)
计算流体力学大串讲轻松解锁CFD     从公式到代码的奇妙之旅
计算流体力学大串讲轻松解锁CFD 从公式到代码的奇妙之旅
气体动力学原理和方法
气体动力学原理和方法
轻松玩转DeepSeek:入门 实操 精通 变现
轻松玩转DeepSeek:入门 实操 精通 变现
成为GPT高手
成为GPT高手

相关文章

相关课程