IP Library Granted Patent US 10,430,587
Granted Patent B2
US 10,430,587 · App. 15/338,295 · Granted Oct 1, 2019

System and method for maintaining security tags and reference counts for objects in computer memory

Inventors: George Kuan (Westlake Village, CA); Aleksey Nogin (Fresno, CA)
Assignee: HRL Laboratories, LLC
G06F21/566G06F16/23G06F21/54G06F21/577G06F2221/034
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 10,430,587
App. No.
15/338,295
Granted
Oct 1, 2019
Kind
B2
Abstract

Described is a system and method for monitoring and enforcing information flow security in software systems. The system maintains security tags and reference counts for objects in computer memory. When an object or a portion of an object in the computer memory is being modified, the system arbitrarily performs operations of updating a security tag for the object being modified; updating reference counts for all objects that the portion of the object in the computer memory being modified pointed to immediately prior to modification; and updating reference counts for all objects that the portion of the object in the computer memory being modified points to immediately after the modification. Subsequently, the system examines the security tags and if the examination reveals a potential information flow security violation, a corrective action is performed.

Claims (57)

1. A method for maintaining security tags and reference counts for objects in computer memory, the method comprising an act of:

causing at least one processor to execute instructions encoded on a non-transitory computer-readable medium, such that upon execution, the at least one processor performs operations of:

updating a security tag for a first segment comprising at least part of a first object being modified in a computer memory;

updating reference counts for a first set of objects that the first object pointed to immediately prior to modification; and

updating reference counts for a second set of objects that the first object points to immediately after the modification;

examining one or more of the security tags for the first segment, the security tags for the first set of objects, the security tags for the second set of objects, and program counter security context; and

if the examination reveals a potential information flow security violation, performing a corrective action, the corrective action being at least one of terminating a program, filtering out a suspect value, or rolling back a suspect update.

2. The method as set forth in claim 1 , further comprising operations of:

when the first object or a part of the first object in the computer memory is being modified, preserving information to be able to perform additional operations at a later time during program execution;

at a later time during program execution, performing additional operations of:

updating the security tag for the first segment comprising at least part of the first object being modified in the computer memory;

updating reference counts for the first set of objects that the first object pointed to immediately prior to modification; and

updating reference counts for the second set of objects that the first object points to immediately after the modification.

3. The method as set forth in claim 1 , further comprising operations of:

when the first object or a part of the first object in the computer memory is being modified, preserving information to be able to perform additional operations at a later time during program execution;

at a later time during program execution, performing additional operations of:

updating the security tag for the first segment comprising at least part of the first object being modified in the computer memory;

updating reference counts for the first set of objects that the first object pointed to immediately prior to modification; and

updating reference counts for the second set of objects that the first object points to immediately after the modification.

4. A system for maintaining security tags and reference counts for objects in computer memory, the system comprising:

at least one processor and a computer memory, the computer memory having instructions encoded thereon, such that when an object or a portion of an object in the computer memory is being modified, the system arbitrarily performs operations of:

updating a security tag for a first segment comprising at least part of a first object being modified in a computer memory;

updating reference counts for a first set of objects that the first object pointed to immediately prior to modification; and

updating reference counts for a second set of objects that the first object points to immediately after the modification;

examining one or more of the security tags for the first segment, the security tags for the first set of objects, the security tags for the second set of objects, and program counter security context; and

if the examination reveals a potential information flow security violation, performing a corrective action, the corrective action being at least one of terminating a program, filtering out a suspect value, or rolling back a suspect update.

5. The system as set forth in claim 4 , further comprising operations of:

when the first object or a part of the first object in the computer memory is being modified, preserving information to be able to perform additional operations at a later time during program execution;

at a later time during program execution, performing additional operations of:

updating the security tag for the first segment comprising at least part of the first object being modified in the computer memory;

updating reference counts for the first set of objects that the first object pointed to immediately prior to modification; and

updating reference counts for the second set of objects that the first object points to immediately after the modification.

6. The system as set forth in claim 4 , further comprising operations of:

when the first object or a part of the first object in the computer memory is being modified, preserving information to be able to perform additional operations at a later time during program execution;

at a later time during program execution, performing additional operations of:

updating the security tag for the first segment comprising at least part of the first object being modified in the computer memory;

updating reference counts for the first set of objects that the first object pointed to immediately prior to modification; and

updating reference counts for the second set of objects that the first object points to immediately after the modification.

7. A computer program product for maintaining security tags and reference counts for objects in computer memory, the computer program product comprising:

a non-transitory computer-readable medium having executable instructions encoded thereon, such that upon execution of the instructions by at least one processor, the at least one processor performs operations of:

updating a security tag for a first segment comprising at least part of a first object being modified in a computer memory;

updating reference counts for a first set of objects that the first object pointed to immediately prior to modification; and

updating reference counts for a second set of objects that the first object points to immediately after the modification;

examining one or more of the security tags for the first segment, the security tags for the first set of objects, the security tags for the second set of objects, and program counter security context; and

if the examination reveals a potential information flow security violation, performing a corrective action, the corrective action being at least one of terminating a program, filtering out a suspect value, or rolling back a suspect update.

8. The computer program product as set forth in claim 7 , further comprising instructions for causing at the least one processor to perform operations of:

when the first object or a part of the first object in the computer memory is being modified, preserving information to be able to perform additional operations at a later time during program execution;

at a later time during program execution, performing additional operations of:

updating the security tag for the first segment comprising at least part of the first object being modified in the computer memory;

updating reference counts for the first set of objects that the first object pointed to immediately prior to modification; and

updating reference counts for the second set of objects that the first object points to immediately after the modification.

9. The computer program product as set forth in claim 7 , further comprising instructions for causing the at least one processor to perform operations of:

when the first object or a part of the first object in the computer memory is being modified, preserving information to be able to perform additional operations at a later time during program execution;

at a later time during program execution, performing additional operations of:

updating the security tag for the first segment comprising at least part of the first object being modified in the computer memory;

updating reference counts for the first set of objects that the first object pointed to immediately prior to modification; and

updating reference counts for the second set of objects that the first object points to immediately after the modification.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2018
From: KUAN, GEORGE; NOGIN, ALEKSEY
To: HRL LABORATORIES, LLC
Reel/Frame 047506/0387 →
CONFIRMATORY LICENSE Recorded Feb 7, 2017
From: HRL LABORATORIES LLC
To: AFRL/RIJ
Reel/Frame 041188/0301 →
Continuity (2)
Provisional Application 62247460 · Oct 28, 2015
Related Publication 20170300694A1 · Oct 19, 2017