IP Library Granted Patent US 9,208,307
Granted Patent B2
US 9,208,307 · App. 13/962,829 · Granted Dec 8, 2015

Automatic algorithm discovery using reverse dataflow analysis

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 9,208,307
App. No.
13/962,829
Granted
Dec 8, 2015
Kind
B2
Abstract

A system and method for finding vulnerabilities and tracing an end result associated with a vulnerability to its origins in user data. A user data source containing an ordered sequence of user data items may be a data file. In one embodiment the method for identifying, in the user data source, the origins of the end result, includes associating with each user data item a location identifier identifying the location of the user data item in the sequence of user data items executing instructions with a virtual machine, associating with each result the location identifier of the data item when one argument is a user data item and a tag when more than one argument is a user data item. This process may be continued until the end result is obtained. Subsequently, the method may include stepping through instructions with the virtual machine in reverse order, to tracing the origins of the end result to each of the user data items contributing to the result.

Claims (36)

1. A method for identifying origins, in a user data source containing an ordered sequence of user data items, of an end result calculated from the user data items, by a virtual machine executing on a computing device, the method comprising:

retrieving a plurality of user data items from the user data source;

associating with each of the plurality of user data items, a location identifier identifying a location of the user data item in the sequence of user data items;

executing a plurality of instructions with the virtual machine, each of the plurality of instructions taking one or more arguments and producing one or more results,

associating with each result:

the location identifier of the user data item when one argument is a user data item; and

a tag when more than one argument is a user data item;

until the end result is obtained;

executing instructions with the virtual machine in reverse order, taking results and producing arguments, and

tracing the origin of a result associated with a tag to each of the user data items contributing to the result.

2. The method of claim 1 , wherein the user data source is a generated data file.

3. The method of claim 1 , wherein the user data source is user keyboard input.

4. The method of claim 1 , wherein the user data source is a source of network packets.

5. The method of claim 2 , wherein the generated data file is generated by pseudorandom modification of a retrieved data file.

6. The method of claim 1 , wherein the executing of a plurality of instructions with the virtual machine comprises periodically saving the state of the virtual machine.

7. The method of claim 6 , wherein the executing instructions in reverse order comprises returning to a previously saved state of the virtual machine and executing instructions with the virtual machine starting from the previously saved state.

8. The method of claim 1 , comprising tracing the origins of the end result to each user data item contributing to the end result.

9. The method of claim 8 , wherein the tracing of the origins of the end result to each end user data item contributing to the result comprises recursively tracing the origins of each computed user data item contributing to the end result.

10. A system for identifying origins, in a user data source containing an ordered sequence of user data items, of an end result calculated, from the user data items, by a virtual machine executing on a computing device, the system comprising:

a processor; and

a memory, wherein the memory has stored thereon instructions that, when executed by the processor, cause the processor to:

retrieve a plurality of user data items from the user data source;

associate with each of the plurality of user data items, a location identifier identifying a location of the user data item in the sequence of user data items;

execute a plurality of instructions with the virtual machine, each of the plurality of instructions taking one or more arguments and producing one or more results,

associate with each result:

the location identifier of the user data item when one argument is a user data item; and

a tag when more than one argument is a user data item;

until the end result is obtained;

execute instructions with the virtual machine in reverse order, taking results and producing arguments, and

trace the origin of a result associated with a tag to each of the user data items contributing to the result.

11. The system of claim 10 , wherein the user data source is a generated data file.

12. The system of claim 11 , wherein the generated data file is generated by pseudorandom modification of a retrieved data file.

13. The system of claim 10 , wherein the executing of a plurality of instructions with the virtual machine comprises periodically saving the state of the virtual machine.

14. The system of claim 13 , wherein the executing instructions in reverse order comprises returning to a previously saved state of the virtual machine and executing instructions with the virtual machine starting from the previously saved state.

15. The system of claim 10 , wherein the instructions cause the processor to trace the origins of the end result to each user data item contributing to the end result.

16. The system of claim 15 , wherein the tracing of the origins of the end result to each end user data item contributing to the result comprises recursively tracing the origins of each computed user data item contributing to the end result.

Assignments (14)
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 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jan 8, 2021
From: RAYTHEON COMPANY
To: WEBSENSE, INC.; PORTAUTHORITY TECHNOLOGIES, LLC (FKA PORTAUTHORITY TECHNOLOGIES, INC.); RAYTHEON OAKLEY SYSTEMS, LLC; FORCEPOINT FEDERAL LLC (FKA RAYTHEON CYBER PRODUCTS, LLC, FKA RAYTHEON CYBER PRODUCTS, INC.)
Reel/Frame 055492/0146 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jan 8, 2021
From: RAYTHEON COMPANY
To: FORCEPOINT LLC
Reel/Frame 055452/0207 →
RELEASE OF SECURITY INTEREST Recorded Sep 30, 2020
From: RAYTHEON COMPANY
To: FORCEPOINT LLC
Reel/Frame 053927/0280 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2020
From: FORCEPOINT LLC
To: RAYTHEON COMPANY
Reel/Frame 053389/0473 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Feb 27, 2020
From: FORCEPOINT LLC
To: RAYTHEON COMPANY
Reel/Frame 052045/0482 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2017
From: FORCEPOINT FEDERAL LLC
To: FORCEPOINT LLC
Reel/Frame 043397/0460 →
CHANGE OF NAME Recorded Feb 16, 2016
From: RAYTHEON CYBER PRODUCTS, LLC
To: FORCEPOINT FEDERAL LLC
Reel/Frame 037821/0818 →
PATENT SECURITY AGREEMENT Recorded Jun 9, 2015
From: WEBSENSE, INC.; RAYTHEON OAKLEY SYSTEMS, LLC; RAYTHEON CYBER PRODUCTS, LLC (FORMERLY KNOWN AS RAYTHEON CYBER PRODUCTS, INC.); PORT AUTHORITY TECHNOLOGIES, INC.
To: RAYTHEON COMPANY
Reel/Frame 035859/0282 →
CHANGE OF NAME Recorded Jun 2, 2015
From: RAYTHEON CYBER PRODUCTS, INC.
To: RAYTHEON CYBER PRODUCTS, LLC
Reel/Frame 035806/0367 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2015
From: RAYTHEON COMPANY
To: RAYTHEON CYBER PRODUCTS, INC.
Reel/Frame 035774/0322 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2013
From: SALSAMENDI, RYAN
To: RAYTHEON COMPANY
Reel/Frame 031091/0881 →