从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 标题: - 描述:BPF(Berkeley Packet Filter)程序可以被附加到内核函数上,这些附加的函数可以接受不同的参数或返回不同的返回值。如果一个程序被附加到一个内核函数上,该函数的尾调用会调用另一个被附加到不同内核函数上的程序。这可能导致内核上下文访问或返回值验证被绕过。 2. 漏洞影响: - 示例: - 如果 被附加到 ,该函数只接受一个参数,而 被附加到 ,该函数接受两个参数。由于验证器假设 传递给 的BPF上下文是基于 的原型构造的,验证器允许 访问 的第二个参数。然而,验证器没有阻止 从通过尾调用传递其BPF上下文到 。在这种情况下, 传递给 的BPF上下文是基于 而不是 ,导致内核上下文验证被绕过。 - 另一个示例是,如果BPF LSM(Linux Security Module)程序 被附加到 钩子,而BPF LSM程序 被附加到 钩子。验证器知道这两个钩子的返回值规则,例如, 返回正整数1是合法的,而 返回正整数是非法的。验证器允许 返回正整数1,但不允许 返回正整数。然而,验证器没有阻止 通过尾调用调用 。在这种情况下, 的返回值1将被用作 的 钩子的返回值,导致返回值规则被绕过。 3. 修复措施: - 补丁:该补丁添加了对尾调用的限制,以防止上述类型的绕过。 4. 签名: - 签署:由Xu Kuohai签署,链接到上游提交 。 5. 代码更改: - 文件: 和 - 更改内容:代码中添加了对尾调用的限制。 这些信息表明,该漏洞允许通过尾调用绕过内核上下文访问或返回值验证,从而可能被恶意利用。修复措施通过限制尾调用来防止这种绕过。