漏洞概述 该漏洞涉及内核用户空间中的SMP(对称多处理)使用后的对象列表遍历问题。具体而言, 遍历需要持有 ,而移除操作(如 或 )需要持有 。在SMP环境中,并发线程可能会在迭代器保存下一个节点后释放该节点,导致潜在的安全问题。 影响范围 内核用户空间:漏洞影响内核用户空间中的对象管理。 SMP环境:在对称多处理环境中,并发线程操作可能导致对象列表的不一致状态。 对象遍历和移除: 遍历和 / 操作存在竞态条件。 修复方案 1. 持有 :在 遍历时,需要持有 以确保遍历的安全性。 2. 持有 :在移除对象时,需要持有 以确保移除操作的安全性。 3. 修改 :在 函数中,通过持有 来确保遍历的安全性,并在移除对象后释放 。 4. 添加 :在 函数中,通过持有 来确保遍历的安全性,并在检查引用计数后释放 。 POC代码 ```c / kernel/userspace/userspace.c */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include <sys/kobject_list_iter_unsafe_unsafe_unsafe_unsafe_unsafe_unsafe_unsafe