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

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

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

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

工具目录

分类

查看所有分类
Loading categories
SockFuzzer — 覆盖率引导的内核模糊测试框架,将 XNU 作为用户空间库运行,并发现 BSD、Mach、虚拟内存及进程子系统中的漏洞。 | Kitploit
工具/GitHubGitHub/googleprojectzero/sockfuzzer
动态分析 (沙盒)iOS安全漏洞分析模糊测试Archived
GitHubgoogleprojectzero/sockfuzzer

SockFuzzer

覆盖率引导的内核模糊测试框架,将 XNU 作为用户空间库运行,并发现 BSD、Mach、虚拟内存及进程子系统中的漏洞。

查看仓库
4525561年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

SockFuzzer:XNU 内核模糊测试框架

项目状态

SockFuzzer 最初是面向 XNU 内核(用于 macOS 和 iOS)的网络模糊测试工具,现已发展成为一个全面的内核模糊测试框架。虽然保留了原名以纪念其起源,SockFuzzer 现在覆盖了广泛的内核子系统,包括 BSD、Mach、虚拟内存等。该项目实现了一种独特的方法,将 XNU 内核转换为可在用户空间中“启动”并进行模糊测试的库,从而能够在多个子系统中高效地发现和重现漏洞。

项目目标

  1. 在受控环境中全面测试 XNU 内核
  2. 发现并重现各种 XNU 子系统中的漏洞
  3. 为 XNU 安全的持续模糊测试和改进提供框架
  4. 展示在内核研究中实现先进模糊测试技术的价值
  5. 实现对复杂内核交互和子系统的高效测试

架构概述

SockFuzzer 采用宿主机/“XNU 客户机”设计,将 XNU 内核编译为库并在自定义用户空间环境中运行。该架构由以下几个关键组件组成:

  1. 宿主机环境
  2. XNU 客户机库
  3. 自定义调度器(基于 Concurrence)
  4. 模糊测试引擎(来自 Google fuzztest 项目的 Centipede)
  5. 测试运行器与测试框架

宿主机环境

宿主机环境为运行 XNU 客户机库和管理模糊测试过程提供了基础。它包括:

  • 核心内核服务的自定义实现
  • 用于宿主机与 XNU 客户机之间通信的超级调用接口
  • 用于执行模糊测试的测试运行器与测试框架

XNU 客户机库

XNU 内核被编译为库(libxnu),只需极少的修改即可在用户空间中运行。关键方面包括:

  • 符号前缀和管理,以避免与宿主机符号冲突
  • 通过版本脚本选择性地暴露 XNU 内部函数
  • 支持多个子系统:BSD、Mach、虚拟内存、线程、进程等
  • 用于虚拟内存支持的 null pmap 层(计划在未来支持 ARM pmap)

自定义调度器

基于改进的 Concurrence 项目,自定义调度器现在支持完整的线程功能:

  • Executor:提供线程创建、删除和上下文切换
  • FuzzedScheduler:管理线程状态和调度决策
  • 与 XNU 客户机库集成,以提供正确的多线程支持

测试运行器与测试框架

测试运行器和测试框架管理模糊测试的执行,并提供:

  • XNU 客户机环境的初始化
  • 跨各种子系统执行模糊测试输入
  • 崩溃检测与报告

主要特性

  1. 全面的 XNU 内核覆盖:测试多个子系统,包括 BSD、Mach、虚拟内存、线程和进程
  2. 用户空间 XNU 执行:在受控的用户空间环境中运行 XNU 内核组件
  3. 完整线程支持:利用改进的 Concurrence 实现正确的多线程能力
  4. 虚拟内存支持:使用 null pmap 层,计划支持 ARM pmap
  5. MIG 模糊测试:支持对 Mach 接口生成器(MIG)接口进行模糊测试
  6. 超级调用接口:促进宿主机与 XNU 客户机组件之间的通信

支持的特性

  1. BSD
  2. Mach
  3. 虚拟内存(带 null pmap 层)
  4. 线程和进程
  5. 网络
  6. Mach 消息
  7. MIG 接口

工作流程

  1. XNU 内核以必要的修改编译为库
  2. 宿主机环境初始化 XNU 客户机库和自定义调度器
  3. Centipede 使用 protobuf 定义生成结构化输入
  4. 测试框架执行输入,调用系统调用、Mach 消息和其他内核接口
  5. 自定义调度器管理 XNU 客户机内的线程执行
  6. ASAN 监视内存损坏问题
  7. 收集并分析崩溃和覆盖率信息

局限性与未来工作

  1. IOKit 支持:当前实现不支持 IOKit 子系统
  2. 仅二进制模糊测试:当前方法依赖于源代码,而源代码并未包含所有模块

未来的工作包括:

  • 实现 IOKit 支持
  • 集成 ARM pmap 以支持虚拟内存
  • 调整技术以适应仅二进制的模糊测试场景
  • 继续扩展对 XNU 子系统的覆盖和支持

公开发布限制

为了使此仓库保持良好的结构,用户需要自行将一些依赖项添加到 third_party,例如 xnu、bootstrap_cmds 以及其他一些库。

下载工具