IP Library Granted Patent US 12,254,081
Granted Patent B2
US 12,254,081 · App. 17/972,353 · Granted Mar 18, 2025

Verification of serverless applications using fuzzing techniques

Inventors: David Autrey Bohannon (Sugar Hill, GA); Ksenia A. Peguero (Herndon, VA); Benjamin D. Sedat (San Francisco, CA)
Assignee: Black Duck Software, Inc.
G06F21/52G06F11/3604G06F2221/033
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,254,081
App. No.
17/972,353
Granted
Mar 18, 2025
Kind
B2
Abstract

A method of verifying an application includes downloading source code for a first function exposed by the application and parsing the source code to determine an input object of the first function. The method also includes injecting a first fuzzing payload into the input object to generate a test object, invoking the first function using the test object, and determining whether the first function includes a vulnerability by analyzing a response to invoking the first function using the test object.

Claims (57)

1. A method of verifying an application, the method comprising:

communicating, to an application device, a request for source code for a first function of an application hosted on the application device, wherein the request bypasses an application programming interface (API) gateway that would otherwise reject the request due to the first function being unexposed by the API gateway;

downloading the source code for the first function from the application device;

injecting a first fuzzing payload into an input object of the first function to generate a test object;

invoking the first function using the test object; and

generating a response to invoking the first function using the test object, wherein the response comprises at least one of an error message, a stack trace, or a timeout indicator that indicates a vulnerability in the first function.

2. The method of claim 1 , wherein downloading the source code and invoking the first function using the test object are initiated through a management API rather than through the API gateway that exposes the first function.

3. The method of claim 1 , further comprising:

retrieving a list identifying a plurality of functions exposed by the application; and

downloading source code for the plurality of functions, wherein downloading the source code for the first function is performed when downloading the source code for the plurality of functions.

4. The method of claim 1 , wherein downloading the source code for the first function comprises:

communicating a request for information about the first function;

receiving a response object to the request, wherein the response object comprises a code location; and

requesting the source code for the first function from the code location.

5. The method of claim 1 , wherein determining the input object comprises detecting the input object identified in the source code using dot notation or bracket notation.

6. The method of claim 1 , further comprising:

determining an attribute of the input object and a first type for the attribute; and

generating the first fuzzing payload by setting the attribute in the first fuzzing payload as a second type different from the first type.

7. The method of claim 1 , wherein the response to invoking the first function using the test object comprises a response body, a response header, and a response latency, and wherein determining whether the first function includes a vulnerability is based on one or more of the response body, the response header, and the response latency.

8. The method of claim 1 , further comprising:

determining a second function called by the first function based on analyzing the response to invoking the first function using the test object; and

invoking the second function using a second fuzzing payload.

9. A system for verifying an application, the system comprising:

a memory; and

a processor communicatively coupled to the memory, the processor configured to:

retrieve a list identifying a plurality of functions exposed by the application;

communicate, to an application device, a request for source code for a plurality of functions of an application hosted on the application device, wherein the request bypasses an API gateway that would otherwise reject the request due to the plurality of functions being unexposed by the API gateway;

download the source code for the plurality of functions from the application device;

inject a first fuzzing payload into an input object of a first function of the plurality of functions to generate a test object;

invoke the first function using the test object; and

generate a response to invoking the first function using the test object, wherein the response comprises at least one of an error message, a stack trace, or a timeout indicator that indicates a vulnerability in the first function.

10. The system of claim 9 , wherein downloading the source code and invoking the first function using the test object are initiated through a management API rather than through the API gateway that exposes the first function.

11. The system of claim 9 , wherein downloading the source code for the first function comprises:

communicating a request for information about the first function;

receiving a response object to the request, wherein the response object comprises a code location; and

requesting the source code for the first function from the code location.

12. The system of claim 9 , wherein determining the input object comprises detecting the input object identified in the source code using dot notation or bracket notation.

13. The system of claim 9 , wherein the processor is further configured to:

determine an attribute of the input object and a first type for the attribute; and

generate the first fuzzing payload by setting the attribute in the first fuzzing payload as a second type different from the first type.

14. The system of claim 9 , wherein the response to invoking the first function using the test object comprises a response body, a response header, and a response latency, and wherein determining whether the first function includes a vulnerability is based on one or more of the response body, the response header, and the response latency.

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

determine a second function called by the first function based on analyzing the response to invoking the first function using the test object; and

invoke the second function using a second fuzzing payload.

16. A non-transitory, computer readable medium storing instructions that, when executed, cause a processor to:

communicate, to an application device, a request for source code for a plurality of functions of an application hosted on the application device, wherein the request bypasses an API gateway that would otherwise reject the request due to the plurality of functions being unexposed by the API gateway;

download source code for the plurality of functions exposed by the application from the application device;

inject a first fuzzing payload into an input object of a first function of the plurality of functions to generate a test object;

invoke the first function using the test object; and

generate a response to invoking the first function using the test object, wherein the response comprises a response body, a response header, and a response latency, and wherein at least one of the response body, the response header, and the response latency comprise at least one of an error message, a stack trace, or a timeout indicator that indicates a vulnerability in the first function.

17. The medium of claim 16 , wherein downloading the source code and invoking the first function using the test object are initiated through a management API rather than through the API gateway that exposes the first function.

18. The medium of claim 16 , wherein the instructions further cause the processor to retrieve a list identifying a plurality of functions exposed by the application, wherein downloading the source code for the plurality of functions is based on the list.

19. The medium of claim 16 , wherein downloading the source code for the first function comprises:

communicating a request for information about the first function;

receiving a response object to the request, wherein the response object comprises a code location; and

requesting the source code for the first function from the code location.

20. The medium of claim 16 , wherein determining the input object comprises detecting the input object identified in the source code using dot notation or bracket notation.

Assignments (4)
SECURITY INTEREST Recorded Sep 30, 2024
From: BLACK DUCK SOFTWARE, INC.
To: ARES CAPITAL CORPORATION, AS COLLATERAL AGENT
Reel/Frame 069083/0149 →
CHANGE OF NAME Recorded Jul 30, 2024
From: SOFTWARE INTEGRITY GROUP, INC.
To: BLACK DUCK SOFTWARE, INC.
Reel/Frame 068191/0490 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2024
From: SYNOPSYS, INC.
To: SOFTWARE INTEGRITY GROUP, INC.
Reel/Frame 066664/0821 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 24, 2022
From: BOHANNON, DAVID AUTREY; PEGUERO, KSENIA A.; SEDAT, BENJAMIN D.
To: SYNOPSYS INCORPORATED
Reel/Frame 061519/0543 →