lukasmaar/kernelsnitch

GitHub: lukasmaar/kernelsnitch

该项目是一个利用时序侧信道与跨缓存重用技术泄露 Linux 内核堆对象的漏洞利用实验环境,支持桌面 Linux、KernelCTF 和 Android 平台。

Stars: 29 | Forks: 1

# KernelSnitch + Cross-Cache 重用实验工作区 本仓库包含一个本地内核漏洞利用实验环境,具有两种执行环境: - Buildroot VM (`vm-start.sh`) - kernelCTF 风格 VM (`kernelctf-start.sh`) 它还包含漏洞利用 PoC、一个可加载内核模块,以及用于为 VM 和原生运行准备匹配内核的辅助脚本。 ## 仓库布局 - `exploits/` 用户空间漏洞利用概念验证和辅助二进制文件 - 参见 [`exploits/README.md`](exploits/README.md) - `module/` 可加载内核模块 (`lkm.ko`) - 参见 [`module/README.md`](module/README.md) - `buildroot-env/` Buildroot 镜像构建输入/脚本 - 参见 [`buildroot-env/README.md`](buildroot-env/README.md) - `linux-env/` 本地 Linux 源码下载与准备脚本 - 参见 [`linux-env/README.md`](linux-env/README.md) - `kernelctf-env/` kernelCTF 下载/准备/rootfs 补丁脚本 - 参见 [`kernelctf-env/README.md`](kernelctf-env/README.md) - `vmshare/` 挂载到客户机内的宿主机共享目录 ## 常用工作流 ### 1) Buildroot VM 工作流 准备本地 VM 资产: ``` make prepare-vm ``` 构建漏洞利用程序 + 模块并启动 VM: ``` make run-vm ``` ### 2) kernelCTF VM 工作流 下载发布版,准备各发布版内核树,并修补 rootfs: ``` make prepare-kernelctf ``` 为选定的 profile 构建漏洞利用程序 + 模块,并启动 kernelCTF VM: ``` make MODULE_PROFILE_KERNELCTF=kernelctf-6.12 run-kernelctf ``` 支持的 kernelCTF profile 定义在 `kernelctf-env/releases.map` 中。 ## 原生执行 Profile 在直接宿主机/设备内核上运行时使用此项(非 VM 镜像中)。 | 目标 | 内核系列 | 漏洞利用二进制文件 | 模块 profile | |---|---|---|---| | Ubuntu | 6.5.0-14-generic | `*.x86.elf` | `ubuntu-old` | | Ubuntu | 6.8.0-101-generic | `*.x86.elf` | `ubuntu` | | Fedora | 6.18.13-200.fc43.x86_64 | `*.x86.elf` | `fedora` | | Raspberry Pi | 6.12.47+rpt-rpi-v8 | `*.arm.elf` | `rasp` | | Android | 6.1.145-android14 | `*.arm.elf` | 无专用原生 profile(见下方注记) | Android 注记: - 支持漏洞利用二进制文件(`make -C exploits arm` + `adb push`)。 - `module/Makefile` 中未定义原生 Android 模块 profile,但可以直接使用。 ### 原生构建命令 漏洞利用程序: ``` make -C exploits x86 make -C exploits arm ``` 模块示例: ``` make -C module PROFILE=ubuntu-old all # Ubuntu 6.5 make -C module PROFILE=ubuntu all # Ubuntu 6.8 make -C module PROFILE=fedora all # Fedora 6.18 make -C module PROFILE=rasp all # Raspberry 6.12 ``` 在支持模块的原生 Linux 系统上插入/移除模块: ``` make -C module insert make -C module remove ``` ## 仅构建目标 ``` make build-exploits make build-module make build-module-vm make build-module-kernelctf MODULE_PROFILE_KERNELCTF=kernelctf-6.12 ``` ## 环境要求 - `make`, `gcc`, `git`, `curl`, `awk` - `qemu-system-x86_64`(用于 VM 运行) - `aarch64-linux-gnu-gcc`(可选,用于 ARM 漏洞利用构建) - `debugfs` + `fdisk`(用于 `kernelctf-env/patch-rootfs.sh`) - 用于模块构建的内核头文件/源码 - `adb`(可选,用于通过 `make -C exploits push` 进行 Android/ARM 部署) ## 演示 Fedora v6.18 - 成功重用 `msg_msg`: [run-fedora.webm](https://github.com/user-attachments/assets/c1a9a998-12b7-43db-b5fd-eaeb983e9d8b) KernelCTF v6.12 - 成功重用 `msg_msg`: [run-kernelctf.webm](https://github.com/user-attachments/assets/147cfd10-a841-4306-939d-97a639d49bc5) KernelCTF v6.12 - 成功重用 `pipe_buffer`: [run-kernelctf-pipe.webm](https://github.com/user-attachments/assets/62c747db-e1b8-42ce-9a6c-4e4c4090d8cf) Android `untrusted_app` - 成功重用 `pipe_buffer`。在这里,第二个终端用于验证泄露的 `pipe_buffer` 地址,显示了正确的 slab `kmalloc-cg-1k` 拥有者: [run-app.webm](https://github.com/user-attachments/assets/bf7adb74-05b0-426a-9645-e98651a60e32)
标签:0day挖掘, Android, Cutter, DSL, Linux内核, Web报告查看器, 侧信道攻击, 内核安全, 客户端加密, 身份验证强制