一、 漏洞 CVE-2022-49873 基础信息
漏洞信息
                                        # bpf:在 release_reference() 中修复错误的寄存器类型转换

## 漏洞概述
在 Linux 内核中,`bpf` 子系统中的 `release_reference()` 函数存在类型转换错误,导致在释放内存时没有正确地将相关指针注册标记为无效,这可能会允许未授权用户泄露内核指针。

## 影响版本
未指定具体影响版本

## 漏洞细节
某些辅助函数会分配内存,并要求 eBPF 程序通过调用相应的辅助函数来释放这些内存,以避免内存泄漏。在释放资源时,所有与该资源相关的指针寄存器应被无效化。验证器使用 `release_references()` 函数执行此操作,将每个相关寄存器标记为未知 (`__mark_reg_unknown()`)。

然而,这会使这些寄存器的类型变为 `SCALAR_VALUE`,而实际运行时,这些寄存器可能会包含指针值。这种情况让未授权用户可以通过将这些寄存器存储到映射中来获取内核指针。

使用 `__mark_reg_not_init()` 而非 `__mark_reg_unknown()` 方法可以缓解这个问题。

## 影响
未授权用户可以通过一种绕过方法获取内核指针,从而可能进一步导致信息泄露或其他安全风险。
                                        
提示
尽管我们采用了先进的大模型技术,但其输出仍可能包含不准确或过时的信息。
神龙会尽力确保数据准确,但也请结合实际情况进行甄别与判断。
神龙祝您一切顺利!
漏洞标题
bpf: Fix wrong reg type conversion in release_reference()
来源:美国国家漏洞数据库 NVD
漏洞描述信息
In the Linux kernel, the following vulnerability has been resolved: bpf: Fix wrong reg type conversion in release_reference() Some helper functions will allocate memory. To avoid memory leaks, the verifier requires the eBPF program to release these memories by calling the corresponding helper functions. When a resource is released, all pointer registers corresponding to the resource should be invalidated. The verifier use release_references() to do this job, by apply __mark_reg_unknown() to each relevant register. It will give these registers the type of SCALAR_VALUE. A register that will contain a pointer value at runtime, but of type SCALAR_VALUE, which may allow the unprivileged user to get a kernel pointer by storing this register into a map. Using __mark_reg_not_init() while NOT allow_ptr_leaks can mitigate this problem.
来源:美国国家漏洞数据库 NVD
CVSS信息
N/A
来源:美国国家漏洞数据库 NVD
漏洞类别
N/A
来源:美国国家漏洞数据库 NVD
漏洞标题
Linux kernel 安全漏洞
来源:中国国家信息安全漏洞库 CNNVD
漏洞描述信息
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于bpf驱动中release_reference函数的寄存器类型转换错误问题。
来源:中国国家信息安全漏洞库 CNNVD
CVSS信息
N/A
来源:中国国家信息安全漏洞库 CNNVD
漏洞类别
其他
来源:中国国家信息安全漏洞库 CNNVD
二、漏洞 CVE-2022-49873 的公开POC
# POC 描述 源链接 神龙链接
三、漏洞 CVE-2022-49873 的情报信息