IP Library Granted Patent US 12,093,398
Granted Patent B2
US 12,093,398 · App. 17/537,720 · Granted Sep 17, 2024

Vulnerability analysis and reporting for embedded systems

Inventors: Robert Michael McGraw (Del Mar, CA); John Darragh Geddes (San Diego, CA)
Assignee: RAM Laboratories, Inc.
G06F21/577G06F11/3684
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,093,398
App. No.
17/537,720
Granted
Sep 17, 2024
Kind
B2
Abstract

An embedded software analyzer (ESA) detects vulnerabilities in software, such as embedded software items (e.g., software that is pre-loaded onto a device or component). Vulnerabilities may include flaws, glitches, weaknesses, and/or other elements that may prevent correct operation or allow an attacker to access or exploit the software (and/or associated devices, components, systems, etc.) The ESA may utilize techniques such as fuzzing and symbolic execution to identify vulnerabilities. The ESA may predict vulnerabilities and prioritize analysis based on the prediction. The ESA may use smart seeding to optimize fuzzing or other analysis. Such smart seeding may include generating optimized inputs for a particular software item. The ESA may apply machine learning to perform, optimize, and/or otherwise implement such analysis techniques.

Claims (76)

1. A device, comprising:

one or more embedded software analyzers configured to:

receive a target binary and an initial input seed;

generate fuzzed inputs to the target binary based on the initial input seed;

identify fuzzed inputs associated with a crash;

save a listing of the fuzzed inputs associated with the crash;

identify additional input seeds by:

generating a trace of each input in the listing of the bug type associated with each input;

stepping down the trace;

identifying diverted states along the trace;

saving the diverted states as additional input seeds;

identify basic building blocks of the target binary;

generate a vulnerability score for each basic building block of the target binary;

calculate a fitness score for each input path of the target binary by averaging or summing the vulnerability scores;

generate a lookup including each input path and the associated fitness score;

retrieve the fitness score for each additional input seed; and

prioritize analysis of each additional input seed based on the fitness score.

2. The device of claim 1 , the one or more embedded software analyzers further configured to:

analyze, using a dynamic binary instrumentation framework, each input in the listing of fuzzed inputs associated with the crash;

identify a bug type associated with each input; and

save a listing of the bug type associated with each input.

3. The device of claim 1 , the one or more embedded software analyzers further configured to identify additional input seeds by:

identifying common formatting among fuzzed inputs associated with early execution failure; and

training an input generation module that generates fuzzed inputs based on the common formatting.

4. The device of claim 1 , wherein the target binary is associated with an embedded software item.

5. The device of claim 1 , wherein calculating the fitness score and prioritizing analysis is based at least partly on a machine learning model.

6. A non-transitory computer-readable medium, storing a plurality of processor executable instructions to:

receive a target binary and an initial input seed;

generate fuzzed inputs to the target binary based on the initial input seed;

identify fuzzed inputs associated with a crash;

save a listing of the fuzzed inputs associated with the crash;

identify additional input seeds by:

generating a trace of each input in the listing of the bug type associated with each input;

stepping down the trace;

identifying diverted states along the trace;

saving the diverted states as additional input seeds;

identify basic building blocks of the target binary;

generate a vulnerability score for each basic building block of the target binary;

calculate a fitness score for each input path of the target binary by averaging or summing the vulnerability scores;

generate a lookup including each input path and the associated fitness score;

retrieve the fitness score for each additional input seed; and

prioritize analysis of each additional input seed based on the fitness score.

7. The non-transitory computer-readable medium of claim 6 , the plurality of processor executable instructions further to:

analyze, using a dynamic binary instrumentation framework, each input in the listing of fuzzed inputs associated with the crash;

identify a bug type associated with each input; and

save a listing of the bug type associated with each input.

8. The non-transitory computer-readable medium of claim 6 , the plurality of processor executable instructions further to identify additional input seeds by:

identifying common formatting among fuzzed inputs associated with early execution failure; and

training an input generation module that generates fuzzed inputs based on the common formatting.

9. The non-transitory computer-readable medium of claim 6 , wherein the target binary is associated with an embedded software item.

10. The method of claim 6 , wherein calculating the fitness score and prioritizing analysis is based at least partly on a machine learning model.

11. A method comprising

receiving, at an embedded software analyzer, a target binary and an initial input seed;

generating, at the embedded software analyzer, fuzzed inputs to the target binary based on the initial input seed;

identifying, at the embedded software analyzer, fuzzed inputs associated with a crash ;

saving a listing of the fuzzed inputs associated with the crash;

identifying, at the embedded software analyzer, additional input seeds by:

generating, at the embedded software analyzer, a trace of each input in the listing of the bug type associated with each input;

stepping, at the embedded software analyzer, down the trace;

identifying, at the embedded software analyzer, diverted states along the trace;

saving, at the embedded software analyzer, the diverted states as additional input seeds;

identifying basic building blocks of the target binary;

generating, at the embedded software analyzer, a vulnerability score for each basic building block of the target binary;

calculating, at the embedded software analyzer, a fitness score for each input path of the target binary by averaging or summing the vulnerability scores;

generating, at the embedded software analyzer, a lookup including each input path and the associated fitness score;

retrieving, at the embedded software analyzer, the fitness score for each additional input seed; and

prioritizing, at the embedded software analyzer, analysis of each additional input seed based on the fitness score.

12. The method of claim 11 further comprising:

analyzing, at the embedded software analyzer, using a dynamic binary instrumentation framework, each input in the listing of fuzzed inputs associated with the crash;

identifying, at the embedded software analyzer, a bug type associated with each input; and

saving, at the embedded software analyzer, a listing of the bug type associated with each input.

13. The method of claim 11 further comprising identifying additional input seeds by:

identifying, at the embedded software analyzer, common formatting among fuzzed inputs associated with early execution failure; and

training, at the embedded software analyzer, an input generation module that generates fuzzed inputs based on the common formatting.

14. The method of claim 11 , wherein calculating the fitness score and prioritizing analysis is based at least partly on a machine learning model.

15. The method of claim 11 , wherein the target binary is associated with an embedded software item.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 7, 2021
From: MCGRAW, ROBERT MICHAEL, DR; GEDDES, JOHN DARRAGH
To: RAM LABORATORIES, INC
Reel/Frame 058325/0946 →
Continuity (2)
Provisional Application 63119530 · Nov 30, 2020
Related Publication 20220335135A1 · Oct 20, 2022