Skip to content

Commit

Permalink
proofread USB/IP Fuzzing for Linux Kernel
Browse files Browse the repository at this point in the history
  • Loading branch information
mudongliang committed Jul 2, 2024
1 parent 17236cf commit a4c391a
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions sources/syzkaller/linux/external_fuzzing_usbip.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,28 @@
---
status: translated
status: proofread
title: "USB/IP Fuzzing for Linux Kernel"
author: Syzkaller Community
collector: jxlpzqc
collected_date: 20240314
translator: RutingZhang0429
translated_date: 20240602
proofreader: mudongliang
proofread_date: 20240702
link: https://github.com/google/syzkaller/blob/master/docs/linux/external_fuzzing_usbip.md
---

# Linux内核USB/IP子系统的模糊测试
# Linux 内核 USB/IP 子系统的模糊测试

Syzkaller 支持对 Linux 内核 USB/IP 子系统进行外部模糊测试。我们可以设置一个虚拟网络,并将 USB/IP 数据包发送到客户端内核,仿佛它们从外部服务器被接收。USB/IP 模糊测试需要启用 USB/IP 配置。你可以在配置部分找到相关列表。
Syzkaller 支持对 Linux 内核 USB/IP 子系统进行外部模糊测试。我们可以设置一个虚拟网络,并将 USB/IP 数据包发送到客户端内核,仿佛它们从外部服务器获取。USB/IP 模糊测试需要启用 USB/IP 配置。你可以在配置部分找到相关列表。

目前,Syzkaller 仅支持对 USB/IP 客户端进行模糊测试,这包括两个主要部分:

1. USB/IP伪系统调用
2. Syzkaller描述
1. USB/IP 伪系统调用
2. Syzkaller 描述

### 配置

以下配置应该为USB/IP启用
以下配置应该为 USB/IP 启用

```
CONFIG_USBIP_CORE=y
Expand All @@ -34,11 +36,11 @@ CONFIG_USBIP_DEBUG=y

### 伪系统调用

目前,Syzkaller定义了一个 USB/IP 伪系统调用和一个 USB/IP 特定的写系统调用(参见[此处](/executor/common_linux.h)获取伪系统调用和[此处](/sys/linux/usbip.txt)获取其 Syzkaller 描述):
目前,Syzkaller 定义了一个 USB/IP 伪系统调用和一个 USB/IP 特定的写系统调用(参见[此处](https://github.com/google/syzkaller/blob/master/executor/common_linux.h)获取伪系统调用和[此处](https://github.com/google/syzkaller/blob/master/sys/linux/usbip.txt)获取其 syzkaller 描述):

`syz_usbip_server_init` 设置 USB/IP 服务器。它创建一对连接的套接字并打开 `/sys/devices/platform/vhci_hcd.0/attach` 文件。随后,这个伪系统调用将 USB/IP 客户端的套接字描述符以及用于 USB/IP 连接的端口号、USB 设备 ID 和 USB 设备速度写入该文件,以便 USB/IP 客户端和服务器之间开始通信,并且客户端的内核可以从服务器接收 USB/IP 数据包。

`write$usbip_server` 通过使用服务器的套接字描述符向客户端发送 USB/IP 数据包(特别是 USBIP_RET_SUBMIT 和 USBIP_RET_UNLINK 数据包。)我们假设服务器可以发送任意 USB/IP 数据包,而不是模拟一个真实设备。这些数据包最终会进入客户端的内核并在那里解析。
`write$usbip_server` 通过使用服务器的套接字描述符向客户端发送 USB/IP 数据包(特别是 `USBIP_RET_SUBMIT``USBIP_RET_UNLINK` 数据包)。我们假设服务器可以发送任意 USB/IP 数据包,而不是模拟一个真实设备。这些数据包最终会进入客户端的内核并在那里解析。

### 进一步改进

Expand Down

0 comments on commit a4c391a

Please sign in to comment.