CWE

普遍的弱点

社区开发的软件和硬件弱点类型清单

2021 CWE最重要的硬件弱点
CWE前25个最危险的弱点
>CWE列表> cwe-单个字典定义(4.10)
ID

CWE-781:IOCTL中使用Method_neither I/O控制代码的地址验证不正确

弱点ID:781
抽象:变体
结构:简单的
查看自定义信息:
+描述
该产品定义了使用Method_neither为I/O的IOCTL,但并未验证或错误验证提供的地址。
+扩展描述
当IOCTL使用I/O控件的Method_neither选项时,IOCTL的责任是验证已提供给它的地址的责任。如果缺少验证或不正确,攻击者可以提供任意内存地址,从而导致代码执行或拒绝服务。
+关系
部分帮助该表显示了与该弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
+与观点“研究概念”相关(CWE-1000)
自然 类型 ID 姓名
Childof 根据基础 - 仍然主要独立于资源或技术的弱点,但有足够的细节来提供特定的检测和预防方法。基本水平的弱点通常用以下维度的2或3来描述问题:行为,财产,技术,语言和资源。 1285 在输入中对指定索引,位置或偏移的验证不当
可以按照 变体变体 - 与某种类型的产品相关的弱点,通常涉及特定的语言或技术。比基本弱点更具体。变体级别的弱点通常以以下维度的3到5来描述问题:行为,财产,技术,语言和资源。 782 暴露于访问控制不足的IOCTL
canpreceede 根据基础 - 仍然主要独立于资源或技术的弱点,但有足够的细节来提供特定的检测和预防方法。基本水平的弱点通常用以下维度的2或3来描述问题:行为,财产,技术,语言和资源。 822 不受信任的指针退份
+介绍模式
部分帮助引言的不同模式提供了有关如何以及何时引入这种弱点的信息。该阶段识别可能发生介绍的生命周期中的一个点,而音符提供了与给定阶段中引言有关的典型情况。
阶段 笔记
建筑和设计
执行
+适用的平台
部分帮助该清单显示了可能出现的弱点的可能区域。这些可能适用于特定的命名语言,操作系统,体系结构,范式,技术或一类此类平台。该平台与给定弱点出现在该实例的频率一起列出。

语言

C(通常很普遍)

C ++(通常很普遍)

操作系统

Windows NT(有时普遍)

+常见后果
部分帮助该表指定与弱点相关的不同个人后果。该范围确定了违反的应用程序安全区域,而影响描述了如果对手成功利用这一弱点,就会产生负面的技术影响。其可能性提供了有关预期相对于列表中其他后果的特定后果的可能性的信息。例如,可能会利用弱点来实现一定的影响,但很可能会利用它来实现不同的影响。
范围 影响 可能性
正直
可用性
保密

技术影响:修改内存;阅读记忆;执行未经授权的代码或命令;DOS:崩溃,退出或重新启动

攻击者可能能够访问属于另一个过程或用户的内存。如果攻击者可以控制IOCTL撰写的内容,则可能导致代码执行在高特权级别上。至少,可能会发生崩溃。
+观察到的例子
参考 描述
用于文件共享和消息协议的驱动程序允许攻击者执行任意代码。
反病毒产品未验证地址,从而使攻击者获得系统特权。
DVD软件允许攻击者造成崩溃。
个人防火墙允许攻击者获得系统特权。
链:数据包捕获软件的设备驱动程序允许访问未意外的IOCTL,并导致阵列索引错误。
+潜在的缓解

阶段:实施

如果ioctl需要method_neth,请确保在首次访问所有用户空间地址之前都正确验证它们。可用于此任务的ProbeForread和ProbeForWrite例程。还可以正确保护和管理用户提供的缓冲区,因为I/O管理器在使用Method_neither时不会执行此操作。请参阅参考。

阶段:建筑和设计

如果可能的话,避免在IOCTL中使用Method_neither,然后选择有效控制缓冲区大小的方法,例如method_buffered,method_in_direct或method_out_direct。

阶段:建筑和设计;执行

如果IOCTL是仅打算由受信任的用户访问的驱动程序的一部分,请为关联的设备或设备名称空间使用适当的访问控件。请参阅参考。
+笔记

适用平台

由于IOCTL功能通常是执行低级操作并与操作系统紧密相互作用,因此这种弱点只能以低级语言编写的代码出现。

研究差距

虽然自2006年以来就已经知道了这种类型的问题,但它可能仍未进行研究和报告。大多数重点是备受瞩目的软件和安全产品,但是其他类型的系统软件也使用驱动程序。由于开发需要开发自定义代码,因此需要一些技能才能找到这种弱点。

由于剥削通常需要本地特权,因此对于主动攻击者而言,这可能不是优先事项。但是,对于设备驱动程序等软件,可能可以进行远程开发。即使没有远程向量,它也可能是对应用程序层软件的多阶段远程攻击中的最终特权升级步骤,或者作为本地用户对多用户系统的主要攻击。

+参考
[Ref-696] Ruben Santamarta。“利用驾驶员中的常见缺陷”。2007-07-11。<http://reversemode.com/index.php?option=com_content&task = view&id = 38&itemid=1>。
[Ref-697] Yuriy Bulygin。“网络驱动程序的远程和本地剥削”。2007-08-01。<https://www.blackhat.com/presentations/bh-usa-07/bulygin/presentation/bh-usa-07-bulygin.pdf>。
[Ref-698] Anibal Sacco。“ Windows驱动程序漏洞:Method_neither Odyssey”。2008-10。<http://www.net-security.org/dl/insecure/insecure-mag-18.pdf>。
[Ref-699] Microsoft。“ I/O控制代码的缓冲区描述”。<http://msdn.microsoft.com/en-us/library/ms795857.aspx>。
[Ref-700] Microsoft。“既不使用缓冲也不直接I/O”。<http://msdn.microsoft.com/en-us/library/cc264614.aspx>。
[Ref-701] Microsoft。“固定设备对象”。<http://msdn.microsoft.com/en-us/library/ms794722.aspx>。
[Ref-702] Piotr Bania。“利用Windows设备驱动程序”。<http://www.piotrbania.com/all/articles/ewdd.pdf>。
+内容历史记录
+提交
提交日期 提交者 组织
2009-07-15 CWE内容团队 MITER
+修改
修改日期 修饰符 组织
2009-12-28 CWE内容团队 MITER
更新的common_ccessquences,entife_mitigations,参考,time_of_introduction
2010-09-27 CWE内容团队 MITER
更新的关系
2011-06-01 CWE内容团队 MITER
更新的common_cconsquences
2017-11-08 CWE内容团队 MITER
更新已更新的适用_platforms,likelihone_of_exploit,参考
2020-02-24 CWE内容团队 MITER
更新的关系
2020-06-25 CWE内容团队 MITER
更新的关系
2023-01-31 CWE内容团队 MITER
更新的描述
提供更多信息 - 请选择其他过滤器。
页面最后更新:2023年1月31日