IP Library Granted Patent US 9,519,533
Granted Patent B2
US 9,519,533 · App. 14/607,251 · Granted Dec 13, 2016

Data flow tracking via memory monitoring

Inventors: Man Ki Yoon (Urbana, IL); Mastooreh Salajegheh (San Jose, CA); Mihai Christodorescu (San Jose, CA); Yin Chen (Campbell, CA); Vinay Sridhara (Santa Clara, CA); Rajarshi Gupta (Sunnyvale, CA)
Assignee: QUALCOMM Incorporated
G06F11/0751G06F9/54G06F11/073G06F11/36G06F11/3604G06F11/366G06F11/3612G06F11/3668G06F21/52G06F21/577
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,519,533
App. No.
14/607,251
Granted
Dec 13, 2016
Kind
B2
Abstract

Methods and devices for tracking data flows in a computing device include monitoring memory in a hardware component of the computing device to identify a read operation that reads information from a tainted memory address, using heuristics to identify a first, second, and third number of operations performed after the identified read operation, marking memory addresses of write operations performed after first number of operations and before the second number of operations as tainted, and marking memory addresses of write operations performed after the third number of operations and before the second number of operations as untainted.

Claims (71)

1. A method of tracking data flows in a computing device, comprising:

monitoring memory to identify a read operation that reads information from a tainted memory address;

determining an offset value (O) that identifies a first number of operations performed after the identified read operation, a monitoring window value (M) that identifies a second number of operations performed after the first number of operations, and an upper boundary value (N) that identifies a third number of operations performed after the first number of operations;

monitoring operations until one of:

M operations are performed; and

N write operations to untainted addresses are identified;

marking memory addresses associated with identified write operations as tainted; and

marking memory addresses associated with write operations performed after the Nth operation and memory addresses associated with write operations performed after the Mth operation as untainted.

2. The method of claim 1 , further comprising using heuristics to identify the first, second and third number of operations.

3. The method of claim 1 , further comprising:

identifying a software application that reads information from one of the tainted memory addresses; and

applying behavior information collected in the computing device to boosted decision stumps in a classifier model to determine whether the software application is non-benign.

4. The method of claim 1 , further comprising:

identifying a first software application that reads information from one of the tainted memory addresses; and

monitoring application programming interface calls made by the first software application.

5. The method of claim 4 , further comprising:

generating a behavior vector information structure based on the monitored API calls;

applying the behavior vector information structure to a classifier model to generate behavior-based analysis results; and

using the behavior-based analysis results to determine whether the first software application is non-benign.

6. The method of claim 4 , further comprising:

identifying a second software application that reads information from one of the tainted memory addresses; and

monitoring application programming interface calls made by the second software application.

7. The method of claim 6 , further comprising:

generating a behavior vector information structure based on a combination of API calls made by the first and second software applications;

applying the behavior vector information structure to a classifier model to generate behavior-based analysis results; and

using the behavior-based analysis results to determine whether behavior of the first and second software applications is non-benign.

8. The method of claim 7 , wherein generating the behavior vector information structure based on the combination of API calls made by the first and second software applications comprises generating an information structure that characterizes a collective behavior of the first and second software applications.

9. The method of claim 7 , wherein generating the behavior vector information structure based on the combination of API calls made by the first and second software applications comprises generating an information structure that characterizes a relationship between the first and second software applications.

10. A non-transitory computer readable storage medium having stored thereon processor-executable software instructions configured to cause a processor of a computing device to perform operations comprising:

monitoring memory to identify a read operation that reads information from a tainted memory address;

determining an offset value (O) that identifies a first number of operations performed after the identified read operation, a monitoring window value (M) that identifies a second number of operations performed after the first number of operations, and an upper boundary value (N) that identifies a third number of operations performed after the first number of operations;

monitoring operations until one of:

M operations are performed; and

N write operations to untainted addresses are identified;

marking memory addresses associated with identified write operations as tainted; and

marking memory addresses associated with write operations performed after the Nth operation and memory addresses associated with write operations performed after the Mth operation as untainted.

11. The non-transitory computer readable storage medium of claim 10 , wherein the stored processor-executable software instructions are configured to cause a processor to perform operations further comprising using heuristics to identify the first, second and third number of operations.

12. The non-transitory computer readable storage medium of claim 10 , wherein the stored processor-executable software instructions are configured to cause a processor to perform operations further comprising:

identifying a software application that reads information from one of the tainted memory addresses; and

applying behavior information collected in the computing device to boosted decision stumps in a classifier model to determine whether the software application is non-benign.

13. The non-transitory computer readable storage medium of claim 10 , wherein the stored processor-executable software instructions are configured to cause a processor to perform operations further comprising:

identifying a first software application that reads information from one of the tainted memory addresses; and

monitoring application programming interface calls made by the first software application.

14. The non-transitory computer readable storage medium of claim 13 , wherein the stored processor-executable software instructions are configured to cause a processor to perform operations further comprising:

generating a behavior vector information structure based on the monitored API calls;

applying the behavior vector information structure to a classifier model to generate behavior-based analysis results; and

using the behavior-based analysis results to determine whether the first software application is non-benign.

15. The non-transitory computer readable storage medium of claim 13 , wherein the stored processor-executable software instructions are configured to cause a processor to perform operations further comprising:

identifying a second software application that reads information from one of the tainted memory addresses; and

monitoring application programming interface calls made by the second software application.

16. The non-transitory computer readable storage medium of claim 15 , wherein the stored processor-executable software instructions are configured to cause a processor to perform operations further comprising:

generating a behavior vector information structure based on a combination of API calls made by the first and second software applications;

applying the behavior vector information structure to a classifier model to generate behavior-based analysis results; and

using the behavior-based analysis results to determine whether behavior of the first and second software applications is non-benign.

17. The non-transitory computer readable storage medium of claim 16 , wherein the stored processor-executable software instructions are configured to cause a processor to perform operations such that generating the behavior vector information structure based on the combination of API calls made by the first and second software applications comprises generating an information structure that characterizes a collective behavior of the first and second software applications.

18. The non-transitory computer readable storage medium of claim 16 , wherein the stored processor-executable software instructions are configured to cause a processor to perform operations such that generating the behavior vector information structure based on the combination of API calls made by the first and second software applications comprises generating an information structure that characterizes a relationship between the first and second software applications.

19. A computing device, comprising:

a processor configured with processor-executable instructions to perform operations comprising:

monitoring memory to identify a read operation that reads information from a tainted memory address;

determining an offset value (O) that identifies a first number of operations performed after the identified read operation, a monitoring window value (M) that identifies a second number of operations performed after the first number of operations, and an upper boundary value (N) that identifies a third number of operations performed after the first number of operations;

monitoring operations until one of:

M operations are performed; and

N write operations to untainted addresses are identified;

marking memory addresses associated with identified write operations as tainted; and

marking memory addresses associated with write operations performed after the Nth operation and memory addresses associated with write operations performed after the Mth operation as untainted.

20. The computing device of claim 19 , wherein the processor is configured with processor-executable instructions to perform operations further comprising:

identifying a first software application that reads information from one of the tainted memory addresses;

monitoring application programming interface calls made by the first software application;

generating a behavior vector information structure based on the monitored API calls;

applying the behavior vector information structure to a classifier model to generate behavior-based analysis results; and

using the behavior-based analysis results to determine whether the first software application is non-benign.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 6, 2015
From: YOON, MAN KI; SALAJEGHEH, MASTOOREH; CHRISTODORESCU, MIHAI; CHEN, YIN; SRIDHARA, VINAY; GUPTA, RAJARSHI
To: QUALCOMM INCORPORATED
Reel/Frame 034902/0750 →
Continuity (1)
Related Publication 20160217029A1 · Jul 28, 2016