Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2023-6931 — CVE-2023-6931 内核崩溃 PoC | Kitploit
工具/GitHubGitHub/k0n9-log/cve-2023-6931
内存取证漏洞分析漏洞利用学习与教育二进制利用
GitHubk0n9-log/cve-2023-6931

CVE-2023-6931

CVE-2023-6931 内核崩溃 PoC

查看仓库
221年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2023-6931

针对CVE-2023-6931的内核恐慌PoC

描述

CVE-2023-6931是perf_event中的一个漏洞,由组中read_size的整数溢出导致堆缓冲区溢出。

什么是性能事件(perf event)?

perf_events是Linux内核提供的一个性能监控和分析框架。该框架能够跟踪硬件和软件组件产生的各种性能相关数据。

主要用途

  • 硬件事件跟踪
    跟踪CPU周期、指令执行次数、缓存未命中等事件。
  • 软件事件跟踪
    监控诸如进程切换、缺页异常、上下文切换等事件。
  • 自定义事件跟踪
    允许跟踪特定应用程序或内核的事件。

perf的组件

  • perf_event_open系统调用
    允许用户空间在内核中配置和控制性能事件的接口。
    用于创建、分组、控制或读取事件数据。
  • 性能计数器
    CPU和内核实际跟踪的数据,例如执行的指令数或CPU利用率。
  • 事件组
    允许多个性能事件被分组并一起管理。组领导事件代表该组,兄弟事件代表组内的其余事件。

要求

  1. /proc/sys/kernel/perf_event_paranoid的值必须为1或更低。
  2. 可打开的文件描述符数量必须至少约为4100。可以使用ulimit -n命令检查和修改。
  3. 必须设置内核选项CONFIG_PERF_EVENTS。

描述

该漏洞源于read_size的整数溢出。函数perf_event_validate_size对read_size进行验证。然而,read_size的验证方式仅检查当前事件的read_size。

关键点是每次验证时,只验证当前事件,而不验证之前的事件。如果为组领导设置了PERF_FORMAT_GROUP,那么简单地添加当前事件就会增加组领导的read_size。

这最终在perf_read_group中导致问题。event->read_size的计算基于组领导的read_format,乘以nr_siblings。由于read_size变量是一个2字节的u16,它能容纳的最大值是0xffff。

为了利用此漏洞,攻击者首先创建一个设置了所有可能read_format选项的组领导事件。接着,创建大量兄弟事件。这些兄弟事件仅在read_format中设置PERF_FORMAT_TOTAL_TIME_RUNNING,以确保在perf_event_validate_size中不会出现验证问题。结果,nr_siblings变得非常大,但由于每个兄弟事件都能单独通过验证,在此阶段没有问题。

在此状态下调用perf_read_group时,由于设置了PERF_FORMAT_GROUP,组领导的read_size会持续增长。最终,这导致整数溢出,kzalloc分配了一个非常小的缓冲区。然而,由于实际事件数量很大,发生堆缓冲区溢出,导致内核恐慌。

下载工具