# bpf:在 release_reference() 中修复错误的寄存器类型转换
## 漏洞概述
在 Linux 内核中,`bpf` 子系统中的 `release_reference()` 函数存在类型转换错误,导致在释放内存时没有正确地将相关指针注册标记为无效,这可能会允许未授权用户泄露内核指针。
## 影响版本
未指定具体影响版本
## 漏洞细节
某些辅助函数会分配内存,并要求 eBPF 程序通过调用相应的辅助函数来释放这些内存,以避免内存泄漏。在释放资源时,所有与该资源相关的指针寄存器应被无效化。验证器使用 `release_references()` 函数执行此操作,将每个相关寄存器标记为未知 (`__mark_reg_unknown()`)。
然而,这会使这些寄存器的类型变为 `SCALAR_VALUE`,而实际运行时,这些寄存器可能会包含指针值。这种情况让未授权用户可以通过将这些寄存器存储到映射中来获取内核指针。
使用 `__mark_reg_not_init()` 而非 `__mark_reg_unknown()` 方法可以缓解这个问题。
## 影响
未授权用户可以通过一种绕过方法获取内核指针,从而可能进一步导致信息泄露或其他安全风险。
# | POC 描述 | 源链接 | 神龙链接 |
---|
标题: 503 Service Temporarily Unavailable -- 🔗来源链接
标签:
标题: Making sure you're not a bot! -- 🔗来源链接
标签:
标题: Making sure you're not a bot! -- 🔗来源链接
标签:
标题: Making sure you're not a bot! -- 🔗来源链接
标签: