知识卡片
权限提升检查依赖调用方自觉是一类反复出现的安全漏洞
内容
Guardian用可调用过程作为普通程序和特权程序间的桥梁,调用它就临时获得特权,安全性完全依赖每个可调用过程自己检查传入参数指针是否合法。一旦某过程漏掉这层检查,攻击者就能篡改栈上的特权标志位获得系统最高权限。根源不是一次编码疏忽,而是安全模型把关键检查压在每个实现者身上,一处疏忽防线就整体失守。
参考来源
- 位置:《架构之美》第8章《Guardian:一个容错操作系统环境》8.9.6节《安全》(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0188.xhtml)
- 结论依据:原文明确"这是可调用程序的职责:检查它们的指针参数以确保它们没有任何寻址异常……程序setlooptimer……中一个缺陷使变为SUPER.SUPER……成为可能……这显示了这种方式的一个缺点:它依赖程序员去检查传给可调用程序的参数。在这个架构的整个生命周期中,又重新出现了这样的问题"。
- 原始内容:这是可调用程序的职责:检查它们的指针参数以确保它们没有任何寻址异常,而且它们返回的值仅适用于用户环境……这显示了这种方式的一个缺点:它依赖程序员去检查传给可调用程序的参数。