Skip to content

Latest commit

 

History

History

04-prev-unknown-vulns

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Previously Unknown Bugs Found by Hoedur

This directory contains all information required to reproduce our fuzzing targets regarding the previously unknown bugs that Hoedur detected. The directory holds the following components:

  1. References to Firmware targets (prebuilt binaries and build environment)
  2. Scripts to run the fuzzer against the targets newly introduced by hoedur
  3. Details on the bugs found by Hoedur
  4. Pre-generated POC inputs that trigger each CVE bug

Running the Experiment

In this repository we provide pre-extracted bug reproducer inputs under ./results/bug-reproducers. These are also linked to in the tables below. The script run_reproducer.py can be used to execute the reproducing input in Hoedur. To run the script execute this command:

./scripts/run_reproducer.py <bug_name>

Where bug_name is the name of the reproducer in the table Bug Overview, e.g., CVE-2023-31129. Additional options are --results to pass a custom bug-reproducers directory, --targets to pass a custom targets directory, and --trace to show additional execution trace information. E.g., to execute an input from experiment 01-bug-finding-ability run:

./scripts/run_reproducer.py --results ../01-bug-finding-ability/results/bug-reproducers <bug_name>

After the execution finishes a register dump and the crash reason for the bug are printed.

For convenience scripts to run each reproducer are located in repro-run-scripts. Additionally for each reproducer a README is provided that describes how the emulator output can be interpreted and why this input leads to a given crash.

To rerun the experiment, refer to ../generate_host_run_config.py. Based on a description of the hosts that are available to run the experiments, this utility generates scripts that can be distributed to the available hosts to split the overall workload and allow for a more time efficient reproduction.

Target Overview

This table contains information on the fuzzing target. Note that some of the new CVEs found by Hoedur were identified while fuzzing targets from the Fuzzware data set (for reference, see also the originally published Fuzzware experiment data).

CVE OS / Lib Build Script Prebuilt Target
CVE-2023-23609 Contiki-NG Fuzzware Firmware
CVE-2023-28116 Contiki-NG Fuzzware Firmware
CVE-2023-29001 Contiki-NG Fuzzware Firmware
CVE-2023-31129 Contiki-NG build.py Firmware
CVE-2022-41873 Contiki-NG build.py Firmware
CVE-2022-41972 Contiki-NG build.py Firmware
CVE-2023-0397 Zephyr Fuzzware Firmware
CVE-2023-1422 Zephyr Fuzzware Firmware
CVE-2023-1423 Zephyr Fuzzware Firmware
CVE-2023-1901 Zephyr Fuzzware Firmware
CVE-2023-1902 Zephyr Fuzzware Firmware
CVE-2023-0359 * Zephyr Fuzzware Firmware
CVE-2022-3806 Zephyr build.py Firmware
CVE-2023-24817 RIOT build.py Firmware
CVE-2023-24818 RIOT build.py Firmware
CVE-2023-24819 RIOT build.py Firmware
CVE-2023-24820 RIOT build.py Firmware
CVE-2023-24821 RIOT build.py Firmware
CVE-2023-24822 RIOT build.py Firmware
CVE-2023-24823 RIOT build.py Firmware
CVE-2023-24825 RIOT build.py Firmware
CVE-2023-24826 RIOT build.py Firmware
CVE-2022-39274 LoRaMac-node build.py Firmware

Bug Overview

This table contains information on the bugs found by Hoedur. Note that some of the new CVEs found by Hoedur were identified while fuzzing targets from the Fuzzware CVE data set (for reference, see also the original published experiment data). As a result, some POC inputs are located in the results of experiment 01-bug-finding-ability.

CVE ID Details Fix Bug Reproducer Input
CVE-2023-23609 writeup contiki-ng/pull/2254 new-Bug-unchecked_sdu_length
CVE-2023-28116 writeup contiki-ng/pull/2398 new-Bug-l2cap_mtu_6lo_output_packetbuf_oob_write
CVE-2023-29001 writeup contiki-ng/pull/2264 new-Bug-ipv6_routing_infinite_recursion
CVE-2023-31129 writeup contiki-ng/pull/2271 new-Bug-CVE-2023-31129
CVE-2022-41873 writeup contiki-ng/pull/2081 new-Bug-CVE-2022-41873
CVE-2022-41972 writeup contiki-ng/pull/2253 new-Bug-CVE-2022-41972
CVE-2023-0397 writeup zephyr/commit/ac3dec5 new-Bug-invalid-init-le_read_buffer_size
CVE-2023-1422 writeup TBD new-Bug-sent_cmd_shared_ref_race
CVE-2023-1423 writeup TBD new-Bug-hci_prio_event_alloc_err_handling
CVE-2023-1901 writeup zephyr/pull/56709 new-Bug-hci-send_sync-dangling-sema-ref
CVE-2023-1902 writeup zephyr/pull/56709 new-Bug-hci-send_sync-dangling-conn-state-ref
CVE-2023-0359 * writeup zephyr/pull/53931 new-Bug-ipv6-nullptr
CVE-2022-3806 writeup TBD new-Bug-CVE-2022-3806
CVE-2023-24817 writeup RIOT/commit/709ddd2 new-Bug-CVE-2023-24817
CVE-2023-24818 writeup RIOT/pull/18817 new-Bug-CVE-2023-24818
CVE-2023-24819 writeup RIOT/pull/18817 new-Bug-CVE-2023-24819
CVE-2023-24820 writeup RIOT/pull/18817 new-Bug-CVE-2023-24820
CVE-2023-24821 writeup RIOT/pull/18817 new-Bug-CVE-2023-24821
CVE-2023-24822 writeup RIOT/pull/18817 new-Bug-CVE-2023-24822
CVE-2023-24823 writeup RIOT/pull/18817 new-Bug-CVE-2023-24823
CVE-2023-24825 writeup RIOT/commit/4f1e2a3 new-Bug-CVE-2023-24825
CVE-2023-24826 writeup RIOT/commit/eb9e50a new-Bug-CVE-2023-24826
CVE-2022-39274 writeup LoRaMac-node/commit/e851b07 new-Bug-CVE-2022-39274

* CVE-2023-0359 Note

The bug corresponding to CVE-2023-0359 was originally found on the Fuzzware target CVE-2020-10064. Originally already an extremely hard bug to trigger, the fuzzer does not seem to produce this bug on a target which is built against the latest version of Zephyr. The reason for this is that an additional layer of complex timing requirements must be satisfied for the bug to be triggered on the latest version of Zephyr. Thus, we provide a reproducer based on the original Fuzzware target in this directory. Fuzz testing may result in a trigger of CVE-2023-0359 in rare cases of running experiment 01-bug-finding-ability.

Bug Discovery Example Timings

For reference, we include example timings for the discovery of the new bugs which were found in targets outside the Fuzzware CVE target set. Note that these numbers are not meant to be definitive and may vary based on the number of runs and based on chance.

The bug discovery timings of the new bugs that were found in the Fuzzware CVE data set can be found in the Hoedur paper or as part of the results of experiment 01 after re-running the experiments.

CVE ID Time Runs
CVE-2023-31129 2h 17
CVE-2022-41873 < 30m 17
CVE-2022-41972 < 30m 17
CVE-2023-0359 h
CVE-2022-3806 8h 25
CVE-2023-24817 24h 52
CVE-2023-24818 < 24h 5
CVE-2023-24819 < 24h 5
CVE-2023-24820 < 24h 5
CVE-2023-24821 < 24h 5
CVE-2023-24822 < 24h 5
CVE-2023-24823 < 24h 5
CVE-2023-24825 12h 52
CVE-2023-24826 < 24h 5
CVE-2022-39274 < 30m 17