ID: 782 类型:变量 | 状态:草稿 |
描述
软件实现了应该限制使用的IOCTL,但是却没有恰当的强化对IOCTL的访问。
扩展描述
当ioctl包含特权功能并且不必要地暴露时,攻击者可以通过调用ioctl来访问此功能。即使功能是良性的,如果程序员假定IOCTL只能由受信任的进程访问,那么可能很少或根本没有对传入数据的验证,从而暴露出如果攻击者不能直接调用IOCTL就无法访问的弱点。
IOCTL的实现在操作系统类型和版本上会有所不同,因此攻击和预防的方法可能会有很大的不同。
相关视图
"研究概念"视图 (CWE-1000)
Nature | Type | ID | Name |
ChildOf | 749 | 暴露危险方法或函数 | |
CanPrecede | 781 | 使用METHOD_NEITHER I/O控制代码的IOCTL中的的不当地址验证 |
"体系结构概念"视图 (CWE-1008)
Nature | Type | ID | Name |
MemberOf | 1011 | 验证角色 |
"开发概念"视图 (CWE-699)
Nature | Type | ID | Name |
ChildOf | 284 | 不当的访问控制 | |
ChildOf |
引入模式
阶段 | 说明 |
架构与设计 | |
实现 | 实现:这个弱点是在实现架构安全策略的过程中造成的。 |
应用平台
语言
C (经常出现)
C++ (经常出现)
操作系统
Class: Unix (出现的可能性不确定)
Class: Windows (出现的可能性不确定)
后果
范围 | 冲击 | 可能性 |
完整性 | 技术冲击: 攻击者可以调用ioctl提供的任何功能。根据功能的不同,后果可能包括代码执行、拒绝服务和数据盗窃。 |
应对措施
阶段: 架构与设计 在Windows环境中,对关联的设备或设备命名空间使用适当的访问控制。参阅参考文献。 |
说明
应用平台
由于ioctl功能通常执行低级操作,并与操作系统紧密交互,因此这种弱点可能只出现在用低级语言编写的代码中。
关联弱点
当程序员假定IOCTL只能由受信任方访问时,这可能是许多其他弱点的主要原因。例如,在windows环境中, 程序或驱动程序可能无法验证方法中的通过METHOD_NEITHER IOCTL传入的地址。这可能导致缓冲区溢出和类似的攻击,即使攻击者根本无法访问ioctl。