sctp:修复 repeatport_add_sock() 中的 null-ptr-deref。(CVE-2024-44935)
CVE编号
CVE-2024-44935利用情况
暂无补丁情况
N/A披露时间
2024-08-26漏洞描述
在Linux内核中,已经解决了一个漏洞,该漏洞涉及sctp模块中的reuseport_add_sock()函数。syzbot在访问sk2->sk_reuseport_cb时报告了一个空指针引用异常(null-ptr-deref)。这个问题首先通过创建一个带有SO_REUSEPORT选项的监听器来重现,然后尝试在相同的端口上创建另一个监听器并在第一个监听器关闭时并发调用它。第二个listen()调用会调用reuseport_add_sock(),此时sk2(第一个监听器的代表)的sk_reuseport_cb并未预期会被清除,但close()操作会通过reuseport_detach_sock()清除它。问题在于SCTP模块没有正确地同步reuseport_alloc(),reuseport_add_sock()和reuseport_detach_sock()的操作。如果这些函数操作的套接字被分类到同一个reuseport组中,那么调用者需要提供同步操作。否则,这样的套接字会形成多个相同的reuseport组,除了一个组外,其他所有组都会静默失效。此外,还会出现报告的空指针引用异常。TCP和UDP通过持有哈希桶锁来保证不会发生这种情况。因此,我们需要在__sctp_hash_endpoint()和__sctp_unhash_endpoint()中应用类似的锁定策略。如果不这样做,可能会出现一般保护错误,可能是由于非规范地址的访问引起的。这个错误报告了一个空指针解引用在范围[0x0000000000000010-0x0000000000000017]中发生。这个错误发生在内核尝试在并发环境中管理同一端口的多个SCTP监听器时。这个问题可能导致系统崩溃和数据丢失。修复这个问题需要正确地同步对共享资源的访问,以防止此类空指针解引用错误的发生。解决建议
建议您更新当前系统或软件至最新版,完成漏洞的修复。受影响软件情况
# | 类型 | 厂商 | 产品 | 版本 | 影响面 | ||||
1 | |||||||||
---|---|---|---|---|---|---|---|---|---|
运行在以下环境 | |||||||||
系统 | debian_12 | linux | * | Up to (excluding) 6.1.106-1 | |||||
运行在以下环境 | |||||||||
系统 | linux | linux_kernel | * | From (including) 5.0 | Up to (excluding) 5.4.282 | ||||
运行在以下环境 | |||||||||
系统 | linux | linux_kernel | * | From (including) 5.11 | Up to (excluding) 5.15.165 | ||||
运行在以下环境 | |||||||||
系统 | linux | linux_kernel | * | From (including) 5.16 | Up to (excluding) 6.1.105 | ||||
运行在以下环境 | |||||||||
系统 | linux | linux_kernel | * | From (including) 5.5 | Up to (excluding) 5.10.224 | ||||
运行在以下环境 | |||||||||
系统 | linux | linux_kernel | * | From (including) 6.2 | Up to (excluding) 6.6.46 | ||||
运行在以下环境 | |||||||||
系统 | linux | linux_kernel | * | From (including) 6.7 | Up to (excluding) 6.10.5 | ||||
运行在以下环境 | |||||||||
系统 | linux | linux_kernel | 6.11 | - | |||||
- 攻击路径 本地
- 攻击复杂度 低
- 权限要求 低
- 影响范围 未更改
- 用户交互 无
- 可用性 高
- 保密性 无
- 完整性 无
CWE-ID | 漏洞类型 |
CWE-476 | 空指针解引用 |
Exp相关链接

版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
评论