Project

General

Profile

Getting started » History » Version 9

Egor Zheliba, 04/01/2025 10:42 AM

1 1 Egor Zheliba
h1. Getting started
2
3 7 Egor Zheliba
Для запуска фаззинга необходимо установить Docker и иметь не менее 10 ГБ свободного места на диске.
4
В процессе сборки будут созданы как минимум три Docker-образа:
5
* *gcr.io/oss-fuzz-base/base-runner* (примерный размер ~1.36 ГБ)
6
* *gcr.io/oss-fuzz-base/base-builder* (примерный размер ~1.72 ГБ)
7 8 Egor Zheliba
* *gcr.io/oss-fuzz/project_name* (размер зависит от тестируемого объекта, обычно не менее 3 ГБ; для Spike это ~5.5 ГБ)
8 7 Egor Zheliba
9
Убедитесь, что ваш диск располагает достаточным количеством свободного пространства (не менее 10 ГБ), чтобы сборка прошла без ошибок.
10
11 6 Egor Zheliba
12 2 Egor Zheliba
1. Установка Docker
13 1 Egor Zheliba
14 2 Egor Zheliba
Скачайте Docker и выполните начальную настройку. Подробная "инструкция":https://docs.docker.com/engine/install/
15 1 Egor Zheliba
16 2 Egor Zheliba
Для Linux (Ubuntu/Debian) пример установки:
17
<pre>
18 1 Egor Zheliba
sudo apt update
19
sudo apt install -y docker.io
20
sudo systemctl enable docker --now
21 9 Egor Zheliba
sudo usermod -aG docker $USER
22 2 Egor Zheliba
</pre>
23 1 Egor Zheliba
После добавления пользователя в группу docker необходимо перелогиниться.
24 9 Egor Zheliba
25
Также убедитесь, что python3 установлен для вашего пользователя и доступен без использования sudo. Обычно, после установки python3 через пакетный менеджер, команда python3 доступна без дополнительных привилегий.
26
27
1.1 Проверка установки Docker и Python3
28
29
Проверьте, что текущий пользователь находится в группе docker:
30
<pre>
31
groups $USER
32
</pre>
33
34
Запустите тестовый контейнер, чтобы убедиться, что Docker работает корректно:
35
<pre>
36
docker run hello-world
37
</pre>
38
39
Проверьте наличие Python3 в переменной PATH:
40
<pre>
41
which python3
42
</pre>
43
44
<pre>
45
echo $PATH
46
</pre>
47 1 Egor Zheliba
48 2 Egor Zheliba
2. Базовые команды Docker
49 1 Egor Zheliba
50 4 Egor Zheliba
Показывает список локально доступных образов.
51 2 Egor Zheliba
<pre>
52 1 Egor Zheliba
docker images
53 2 Egor Zheliba
</pre>
54 1 Egor Zheliba
55 4 Egor Zheliba
Выводит список контейнеров (включая остановленные).
56 2 Egor Zheliba
<pre>
57
docker ps -a
58 1 Egor Zheliba
</pre>
59 2 Egor Zheliba
60 4 Egor Zheliba
Удаляет образ, указываемый по идентификатору.
61 2 Egor Zheliba
<pre>
62 1 Egor Zheliba
docker image rmi IMAGE_ID
63 2 Egor Zheliba
</pre>
64
65 4 Egor Zheliba
Удаляет контейнер с заданным идентификатором.
66 2 Egor Zheliba
<pre>
67
docker rm CONTAINER_ID
68
</pre>
69 4 Egor Zheliba
70 1 Egor Zheliba
71 2 Egor Zheliba
3. Очистка неиспользуемых ресурсов
72 1 Egor Zheliba
73 2 Egor Zheliba
Можно задать алиас для быстрой очистки всех остановленных контейнеров, «висящих» образов и неиспользуемых томов:
74 1 Egor Zheliba
75 2 Egor Zheliba
<pre>
76
alias docker-cleanup='docker ps -a -q | xargs -I {} docker rm {}; docker images -q -f dangling=true | xargs -I {} docker rmi -f {}; docker volume ls -qf dangling=true | xargs -I {} docker volume rm {}'
77
</pre>
78 1 Egor Zheliba
79 2 Egor Zheliba
4. Необходимые образы
80 1 Egor Zheliba
81 2 Egor Zheliba
Для запуска фаззера FuzzRV используются два образа:
82
* *gcr.io/oss-fuzz/project_name* — образ, содержащий собранный проект.
83
* *gcr.io/oss-fuzz-base/base-runner* — базовый образ для запуска процесса фаззинга. Этот образ можно не пересобирать и не удалять при повторном использовании.
84 1 Egor Zheliba
85 2 Egor Zheliba
5. Следующие шаги
86 1 Egor Zheliba
87 2 Egor Zheliba
Готовые сценарии запуска фаззинга:
88
* [[Fuzzing Spike]]
89 5 Egor Zheliba
* [[Fuzzing cva6]]
90 3 Egor Zheliba
* [[Fuzzing ibex64]] - Todo