IP Library Granted Patent US 11,734,161
Granted Patent B2
US 11,734,161 · App. 16/779,365 · Granted Aug 22, 2023

System and method for fuzzing test orchestration using reinforcement learning

Inventor: Andrew R. Calvano (Draper, UT)
Assignee: Raytheon Company
G06F11/3688G06F11/3692G06N20/00
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 11,734,161
App. No.
16/779,365
Granted
Aug 22, 2023
Kind
B2
Abstract

A method includes selecting a fuzzer for execution by each of multiple fuzzing clients during a first time interval of a fuzzing test of computer software code. The method also includes selecting a feedback type for statistics to be reported by the fuzzing clients at an end of the first time interval of the fuzzing test. The method also includes providing an identification of the fuzzer and the feedback type to each of the fuzzing clients. The method also includes obtaining the statistics at the end of the first time interval of the fuzzing test. The method also includes determining one or more rewards based on the statistics. The method also includes adjusting multiple weights in multiple stochastic policies based on the one or more rewards, wherein the weights are used to determine the fuzzer and the feedback type in a subsequent interval of the fuzzing test.

Claims (60)

1. A method comprising:

selecting a fuzzer from among multiple fuzzers for execution by each of multiple fuzzing clients during a first time interval of a fuzzing test of computer software code;

selecting a feedback type for statistics to be reported by the fuzzing clients at an end of the first time interval of the fuzzing test;

providing an identification of the fuzzer and the feedback type to each of the fuzzing clients;

obtaining the statistics at the end of the first time interval of the fuzzing test;

determining one or more rewards based on the statistics; and

adjusting multiple weights in multiple stochastic policies based on the one or more rewards, wherein the weights are used to select the fuzzer from among the multiple fuzzers and the feedback type in a subsequent interval of the fuzzing test.

2. The method of claim 1 , wherein the multiple stochastic policies comprise:

a first stochastic policy associated with the multiple fuzzers including the selected fuzzer; and

a second stochastic policy associated with multiple feedback types including the selected feedback type.

3. The method of claim 2 , wherein:

each of the multiple fuzzers is associated with one of the multiple weights in the first stochastic policy; and

each of the multiple feedback types is associated with one of the multiple weights in the second stochastic policy.

4. The method of claim 2 , wherein:

the fuzzer is selected based on a first fuzzer weight among the multiple weights in the first stochastic policy; and

the feedback type is selected based on a first feedback type weight among the multiple weights in the second stochastic policy.

5. The method of claim 2 , wherein the multiple fuzzers comprise two or more of a random data generator, a data mutator, and a generational fuzzer.

6. The method of claim 2 , wherein the multiple feedback types comprise two or more of node coverage, edge coverage, branch taken/not taken coverage, number of tests executed, number of observed errors or exceptions during execution, and average length of a test.

7. The method of claim 1 , further comprising:

during the subsequent interval of the fuzzing test, selecting the fuzzer, selecting the feedback type, providing an identification of the fuzzer and the feedback type to each of the fuzzing clients, obtaining the statistics, determining the one or more rewards, and adjusting the multiple weights in the multiple stochastic policies again.

8. The method of claim 1 , wherein the multiple weights are adjusted in the multiple stochastic policies using a policy gradient reinforcement learning algorithm.

9. A system comprising:

at least one memory storing instructions; and

at least one processor coupled to the at least one memory and configured when executing the instructions to:

select a fuzzer from among multiple fuzzers for execution by each of multiple fuzzing clients during a first time interval of a fuzzing test of computer software code;

select a feedback type for statistics to be reported by the fuzzing clients at an end of the first time interval of the fuzzing test;

provide an identification of the fuzzer and the feedback type to each of the fuzzing clients;

obtain the statistics at the end of the first time interval of the fuzzing test;

determine one or more rewards based on the statistics; and

adjust multiple weights in multiple stochastic policies based on the one or more rewards, wherein the weights are used to select the fuzzer from among the multiple fuzzers and the feedback type in a subsequent interval of the fuzzing test.

10. The system of claim 9 , wherein the multiple stochastic policies comprise:

a first stochastic policy associated with the multiple fuzzers including the selected fuzzer; and

a second stochastic policy associated with multiple feedback types including the selected feedback type.

11. The system of claim 10 , wherein:

each of the multiple fuzzers is associated with one of the multiple weights in the first stochastic policy; and

each of the multiple feedback types is associated with one of the multiple weights in the second stochastic policy.

12. The system of claim 10 , wherein:

the at least one processor is configured to select the fuzzer based on a first fuzzer weight among the multiple weights in the first stochastic policy; and

the at least one processor is configured to select the feedback type based on a first feedback type weight among the multiple weights in the second stochastic policy.

13. The system of claim 10 , wherein the multiple fuzzers comprise two or more of a random data generator, a data mutator, and a generational fuzzer.

14. The system of claim 10 , wherein the multiple feedback types comprise two or more of node coverage, edge coverage, branch taken/not taken coverage, number of tests executed, number of observed errors or exceptions during execution, and average length of a test.

15. The system of claim 9 , wherein the at least one processor is further configured to:

during the subsequent interval of the fuzzing test, select the fuzzer, select the feedback type, provide an identification of the fuzzer and the feedback type to each of the fuzzing clients, obtain the statistics, determine the one or more rewards, and adjust the multiple weights in the multiple stochastic policies again.

16. The system of claim 9 , wherein the at least one processor is configured to adjust the multiple weights in the multiple stochastic policies using a policy gradient reinforcement learning algorithm.

17. A non-transitory computer readable medium containing instructions that when executed cause at least one processor to:

select a fuzzer from among multiple fuzzers for execution by each of multiple fuzzing clients during a first time interval of a fuzzing test of computer software code;

select a feedback type for statistics to be reported by the fuzzing clients at an end of the first time interval of the fuzzing test;

provide an identification of the fuzzer and the feedback type to each of the fuzzing clients;

obtain the statistics at the end of the first time interval of the fuzzing test;

determine one or more rewards based on the statistics; and

adjust multiple weights in multiple stochastic policies based on the one or more rewards, wherein the weights are used to select the fuzzer from among the multiple fuzzers and the feedback type in a subsequent interval of the fuzzing test.

18. The non-transitory computer readable medium of claim 17 , wherein the multiple stochastic policies comprise:

a first stochastic policy associated with the multiple fuzzers including the selected fuzzer; and

a second stochastic policy associated with multiple feedback types including the selected feedback type.

19. The non-transitory computer readable medium of claim 18 , wherein:

each of the multiple fuzzers is associated with one of the multiple weights in the first stochastic policy; and

each of the multiple feedback types is associated with one of the multiple weights in the second stochastic policy.

20. The non-transitory computer readable medium of claim 18 , wherein:

the fuzzer is selected based on a first fuzzer weight among the multiple weights in the first stochastic policy; and

the feedback type is selected based on a first feedback type weight among the multiple weights in the second stochastic policy.

Assignments (4)
CHANGE OF NAME Recorded Jul 3, 2024
From: COLUMBUS BUYER LLC
To: NIGHTWING GROUP, LLC
Reel/Frame 068106/0251 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 2, 2024
From: RAYTHEON COMPANY
To: COLUMBUS BUYER LLC
Reel/Frame 068233/0420 →
SECURITY INTEREST Recorded Apr 1, 2024
From: COLUMBUS BUYER LLC; RAYTHEON BLACKBIRD TECHNOLOGIES, INC.; RAYTHEON FOREGROUND SECURITY, INC.
To: WELLS FARGO BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 066960/0411 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 31, 2020
From: CALVANO, ANDREW R.
To: RAYTHEON COMPANY
Reel/Frame 051690/0636 →