IP Library › Granted Patent US 12,282,412
Granted Patent B2
US 12,282,412 · App. 18/052,237 · Granted Apr 22, 2025

Coverage-guided fuzzing via dynamic instrumentation

Inventors: Christopher Huth (Heilbronn, DE); Marius Fischer (Stuttgart, DE); Max Camillo Eisele (Ludwigsburg, DE)
Assignee: ROBERT BOSCH GMBH
G06F11/3612G06F11/3476G06N7/023
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,282,412
App. No.
18/052,237
Granted
Apr 22, 2025
Kind
B2
Abstract

A method for obtaining coverage-guided fuzzing of software on a hardware target. The hardware target includes a breakpoint register, and is designed to stop an execution of the software prior to execution of an instruction of the software if the instruction is reached during the execution of the software; a memory address of the instruction is set in the breakpoint register. The method includes setting a first breakpoint prior to a first instruction of the software; executing or continuing a fuzzing iteration of the software; first checking whether the first breakpoint is reached while executing or continuing the fuzzing iteration; storing a piece of log information that includes that the first instruction in the fuzzing iteration has been reached, and optionally deleting the first breakpoint if the first check is positive. The coverage-guided fuzzing of the software includes the piece of log information.

Claims (39)

1. A computer-implemented method for obtaining coverage-guided fuzzing of software on a hardware target, the hardware target including at least one breakpoint register and being configured to stop an execution of the software, prior to execution of an instruction of the software, when the instruction is reached during the execution of the software, and a memory address of the instruction is set in the at least one breakpoint register, the method comprising the following steps:

setting a first breakpoint prior to a first instruction of the software;

executing or continuing a fuzzing iteration of the software;

first checking for whether the first breakpoint is reached while executing or continuing the fuzzing iteration; and

storing a first piece of log information that includes that the first instruction in the fuzzing iteration has been reached, based on the first check being positive;

wherein the coverage-guided fuzzing of the software includes the first piece of log information.

2. The method as recited in claim 1 , further comprising deleting the first breakpoint when the first check is positive.

3. The method as recited in claim 1 , further comprising:

setting a second breakpoint prior to a second instruction of the software when the first check is positive;

executing or continuing the fuzzing iteration of the software;

second checking for whether the second breakpoint is reached while executing or continuing the fuzzing iteration;

storing a second piece of log information that includes that the second instruction in the fuzzing iteration has been reached;

wherein the coverage-guided fuzzing of the software includes the second piece of log information.

4. The method as recited in claim 3 , further comprising deleting the second breakpoint when the second check is positive.

5. The method as recited in claim 3 , wherein the setting of the second breakpoint prior to the second instruction of the software includes selecting a second instruction of the software, which in an abstract syntax tree of the software shares a parent node with the first instruction of the software.

6. The method as recited in claim 3 , wherein the setting of the second breakpoint prior to the second instruction of the software includes selecting a second instruction of the software, which in an abstract syntax tree of the software is situated in a child node of the first instruction of the software.

7. The method as recited in claim 3 , wherein the setting of the second breakpoint prior to the second instruction of the software includes selecting a next conditional jump in the software as the second instruction of the software.

8. The method as recited in claim 3 , wherein the selection of the second instruction of the software is based on a predetermined search strategy.

9. The method as recited in claim 1 , wherein the first instruction of the software is a predetermined function to instrument the software.

10. The method as recited in claim 1 , wherein the software is not statically instrumented for fuzzing and/or is a closed-source software.

11. The method as recited in claim 1 , wherein the hardware target is an electronic control unit, and the software is configured to control the electronic control unit and/or regulate the electronic control unit, and/or monitor the electronic control unit.

12. The method as recited in claim 1 , further comprising:

storing the first piece of log information that includes that the first instruction in the fuzzing iteration has not been reached based on the first check being negative, the first check being negative when the first breakpoint is not reached after a predetermined time period or is not reached until an end of the fuzzing iteration; and/or

storing a second piece of log information that includes that the second instruction in the fuzzing iteration has not been reached, based on the second check being negative, the second check being negative when the second breakpoint is not reached after a predetermined time period or is not reached until the end of the fuzzing iteration;

wherein the coverage-guided fuzzing of the software includes the first and/or second pieces of log information.

13. The method as recited in claim 1 , further comprising:

repeating the steps of the method.

14. A computer system configured to obtain coverage-guided fuzzing of software on a hardware target, the computer system comprising a central processing unit (CPU), the hardware target including at least one breakpoint register and being configured to stop an execution of the software, prior to execution of an instruction of the software, when the instruction is reached during the execution of the software, and a memory address of the instruction is set in the at least one breakpoint register, the computer system configured to:

set a first breakpoint prior to a first instruction of the software;

execute or continue a fuzzing iteration of the software;

perform a first check for whether the first breakpoint is reached while executing or continuing the fuzzing iteration; and

store a first piece of log information that includes that the first instruction in the fuzzing iteration has been reached, based on the first check being positive;

wherein the coverage-guided fuzzing of the software includes the first piece of log information.

15. A non-transitory computer-readable medium on which is stored a computer program for obtaining coverage-guided fuzzing of software on a hardware target, the hardware target including at least one breakpoint register and being configured to stop an execution of the software, prior to execution of an instruction of the software, when the instruction is reached during the execution of the software, and a memory address of the instruction is set in the at least one breakpoint register, the computer program, when executed by a computer, causing the computer to perform the following steps:

setting a first breakpoint prior to a first instruction of the software;

executing or continuing a fuzzing iteration of the software;

first checking for whether the first breakpoint is reached while executing or continuing the fuzzing iteration; and

storing a first piece of log information that includes that the first instruction in the fuzzing iteration has been reached, based on the first check being positive;

wherein the coverage-guided fuzzing of the software includes the first piece of log information.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 27, 2023
From: HUTH, CHRISTOPHER; FISCHER, MARIUS; EISELE, MAX CAMILLO
To: ROBERT BOSCH GMBH
Reel/Frame 063465/0368 →
Priority Claims (1)
DE 10 2021 212 596.4 · Nov 9, 2021 · national
Continuity (1)
Related Publication 20230146443A1 · May 11, 2023
References Cited (6)
US 5764884A · Van Fleet · 1998 [cited by examiner]
US 20120304010A1 · Opstad · 2012 [cited by examiner]
US 20160350211A1 · Cecchetti · 2016 [cited by examiner]
US 20190294537A1 · Bond · 2019 [cited by examiner]
Huning Dai et al., “Configuration Fuzzing for Software Vulnerability Detection”, [Online], pp. 525-530, [Retreived from Interent on Jul. 15, 2024], <https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5438043> (Yea… [cited by examiner]
Oh et al.,“OS-less Dynamic Binary Instrumentation for Embedded Firmware,” 2015 IEEE Symposium in Low-Power and High-Speed Chips (COOL Chips XVIII) (2015) pp. 1-3. [cited by applicant]