@@ -13,12 +13,14 @@ vulnerabilities are not observable, and even the crash behaviour varies from cas
13
13
to case. Furthermore, the goal to find a general approach for any authenticator
14
14
rules out common solutions such as hardware emulation or binary instrumentation.
15
15
16
- ## Corpus testing
16
+ ## How does it work
17
17
18
18
Our idea is fuzzing by proxy. We take [ OpenSK] ( https://github.com/google/OpenSK )
19
19
(an open source implementation of a FIDO2 security key) as our fuzz target and
20
20
generate interesting input data guided by OpenSK's code coverage. At the moment,
21
- the fuzzing tool consists of running this input corpus on the device under test.
21
+ we support two fuzzing modes:
22
+ 1 . Run this input corpus directly on the device under test.
23
+ 2 . Fuzz the device under test using this input corpus as initial corpus.
22
24
The corpus is hosted at a [ git repository] ( https://github.com/google/CTAP2-test-tool-corpus )
23
25
and integrated as a submodule, which will be downloaded upon cloning the test
24
26
tool repository. When downloading the test tool manually, you can copy the corpus
@@ -42,10 +44,12 @@ you can simply run:
42
44
``` shell
43
45
./run_fuzzing.sh
44
46
```
45
- By default, our predefined data set is run with a blackbox monitor.
47
+ By default, our predefined data set is run on the device with a blackbox monitor.
46
48
47
49
For more control, the following arguments are available:
48
50
51
+ - ` --run_mode ` : ` corpus_test ` runs the given corpus and ` fuzzing ` starts mutation-
52
+ based fuzzing.
49
53
- ` --corpus_path ` : The path to the corpus containing the test files.
50
54
- ` --monitor ` : The monitor type to be used. All supported options are:
51
55
- ` blackbox ` : General blackbox monitor.
@@ -55,6 +59,18 @@ For more control, the following arguments are available:
55
59
- ` --port ` : If a GDB monitor is selected, the port to listen on for GDB remote
56
60
connection.
57
61
62
+ In the fuzzing mode, more options are supported:
63
+
64
+ - ` --fuzzing_mode ` : The type of inputs to be fuzzed. All supported options are:
65
+ - ` cbor_make_credential `
66
+ - ` cbor_get_assertion `
67
+ - ` cbor_client_pin `
68
+ - ` ctaphid_raw `
69
+ - ` --num_runs ` : Number of inputs to be run. By default, the fuzzer will run indefinitely.
70
+ - ` --max_length ` : Maximum length of an input. By default, there is no limit.
71
+ - ` --max_mutation_degree ` : Maximum number of successive mutation operations to be
72
+ applied. By default, the degree is 10.
73
+
58
74
## How to reproduce
59
75
60
76
The files causing a reported crash are saved to ` corpus_tests/artifacts/ ` by
0 commit comments