ID: 911 类型:基础 | 状态:未完成 |
描述
软件使用引用计数来管理资源,但不会更新或错误地更新引用计数。
扩展描述
当跟踪有多少对象包含对特定资源的引用(如内存管理或垃圾收集)时,可以使用引用计数。当引用计数为零时,可以取消分配或重用资源,因为没有更多的对象使用它。如果引用计数意外地达到零,那么即使资源仍在使用中,也可能很快释放出来。如果所有对象不再使用该资源,但引用计数不为零,则可能永远不会释放该资源。
相关视图
"研究概念" 视图(CWE-1000)
Nature | Type | ID | Name |
ChildOf | 664 | ||
CanPrecede | 672 | ||
CanPrecede | 772 |
"开发概念"视图 (CWE-699)
Nature | Type | ID | Name |
MemberOf | 452 |
引入模式
阶段 | 说明 |
实现 |
应用平台
语言
C (Sometimes Prevalent)
C++ (Sometimes Prevalent)
Class: Language-Independent (出现的可能性不确定)
被利用的可能性:
一般
已观察到的案例
参考 | 描述 |
连锁: 引用计数不递减,通过发送ICMP数据包导致操作系统内存泄漏。 | |
当函数失败时,共享内存的引用计数没有减少,这可能允许非特权用户读取内核内存。 | |
连锁: 不正确的引用计数跟踪导致文件描述符使用 | |
连锁: 引用计数器中的整数溢出导致同一变量被销毁两次。 | |
不正确的引用计数计算会导致不正确的对象破坏和代码执行。 | |
连锁: 引用计数更新不正确会导致内存泄漏。 | |
连锁/组成 引用计数器使用不正确的数据类型会导致计数器溢出,导致内存不足,仍在使用中。 | |
引用计数不正确会导致加密操作失败。 | |
连锁:垃圾收集例程中不正确的引用计数导致在释放后使用 | |
连锁:当客户端在大型操作期间断开连接时,引用计数没有正确维护,导致在空闲释放后使用。 | |
引用计数不总是递增,导致崩溃或代码执行。 | |
引用计数不正确会导致指针取消引用过期 | |
操作系统内核将引用计数增加两次,但只减少一次,从而导致资源消耗和崩溃。 | |
OS内核驱动程序允许代码执行 | |
不正确的引用计数导致IP地址耗尽 | |
竞争导致引用计数器过早递减,导致活动对象被破坏,指针取消引用无效。 | |
i不正确的参考计数导致释放后使用 |
弱点规律
规律 | 描述 |
主要 | (存在与其他弱点无关的弱点) |
参考
[REF-884] Mateusz "j00ru" Jurczyk. "Windows Kernel Reference Count Vulnerabilities - Case Study". 2012-11. <http://j00ru.vexillium.org/dump/zn_slides.pdf>. |