本节书摘来自华章计算机《威胁建模:设计和交付更安全的软件》一书中的第3章,第3.7节,作者:[美] 亚当·斯塔克 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3.7 权限提升威胁
权限提升威胁就是允许某人做超出其权限的事——例如,允许普通用户作为管理员执行代码,或者允许没有任何权限的人远程运行代码。实现权限提升
的两种重要途径是崩溃进程和越过权限检查。表3-7中列举了一些示例。
3.7.1 通过崩溃进程提升权限
崩溃进程涉及粉碎堆栈、利用栈堆上的数据进行漏洞利用以及一系列漏洞利用技术。这些攻击性技术使攻击者能够影响程序的控制流或控制这些数据流。这些漏洞利用技术不仅仅局限于攻击面,理解这点很重要的。攻击者数据可涉及的首段代码当然是重要的目标。通常,那段代码只能验证攻击者目标中的一小部分。因此需要进一步追踪数据流,去查看权限提升的攻击行为还可能在哪里发生,这点非常重要。这里有个不太常见的情况是,程序是依赖共享内存中的信息并执行操作,如果拥有共享内存权限的任何事物都不在相同的权限级别运行的话,这对权限提升是无效的。
3.7.2 通过授权失效提升权限
还有一些利用失效的授权来进行权限提升的方法。最简单的失效就是每条路径上都没有检查权限的有效性。对于攻击者来说更为复杂的是,如何利用有缺陷的权限检查机制。因此如果一个程序依赖着其他程序、配置文件或可信的数据集,最重要的是要确保权限的设置,以保护各个依赖关系。