IP Library Granted Patent US 9,111,089
Granted Patent B1
US 9,111,089 · App. 13/023,162 · Granted Aug 18, 2015

Systems and methods for safely executing programs

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,111,089
App. No.
13/023,162
Granted
Aug 18, 2015
Kind
B1
Abstract

A computer-implemented method for safely executing programs may include identifying an attempt to launch an executable file. The computer-implemented method may also include identifying a reputation associated with the executable file. The computer-implemented method may further include determining, based on the reputation, that the executable file is not trusted. The computer-implemented method may additionally include, in response to determining that the executable file is not trusted, fulfilling the attempt by sandboxing a process instantiated from the executable file. Various other methods, systems, and computer-readable media are also disclosed.

Claims (57)

1. A computer-implemented method for safely executing programs, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

identifying an attempt to launch an executable file;

identifying a reputation associated with the executable file;

determining, based on the reputation, that the executable file is not trusted without determining that the executable file is malicious based on a reputation score that indicates that the executable file may be malicious, wherein a favorable reputation score indicates that at least one of a file and a source of a file is generally trusted within a community and an unfavorable reputation score indicates that at least one of a file or source of a file is generally untrusted within a community;

in response to determining that the executable file is not trusted without determining that the executable file is malicious, fulfilling the attempt by sandboxing a process instantiated from the executable file, wherein sandboxing the process instantiated from the executable file comprises imposing a filter on interactions between the process and a resource of the computing device by, when the process attempts to write to the resource, redirecting the write attempt to a virtual file;

sandboxing the process across sessions by saving the virtual file after the process terminates for use when the executable file is subsequently executed and by:

intercepting at least one attempt by the process to change a system state, the system state comprising the resource of the computing device;

making a record of the attempted change in the virtual file;

intercepting at least one subsequent attempt by the process to inspect the system state;

fulfilling the subsequent attempt to inspect the system state with the record of the attempted change from the virtual file;

allowing attempts by the process to create, in a system registry, settings that pertain only to an application represented by the executable file.

2. The computer-implemented method of claim 1 , wherein identifying the reputation associated with the executable file comprises identifying a percentage of user devices within a community that contain an instance of the executable file.

3. The computer-implemented method of claim 1 , wherein determining that the executable file is not trusted is further based on identifying suspicious signatures in the executable file.

4. The computer-implemented method of claim 1 , wherein sandboxing the process comprises sandboxing a call to a library invoked by the process and the resource of the computing device comprises the library.

5. The computer-implemented method of claim 1 , wherein sandboxing the process comprises invoking a sandboxing function of a separate virtualization system.

6. The computer-implemented method of claim 1 , wherein sandboxing the process comprises sandboxing the process without sandboxing any processes instantiated from trusted executable files launched from a same operating environment as the executable file.

7. The computer-implemented method of claim 1 , wherein:

identifying the reputation associated with the executable file comprises identifying community-generated reputation data associated with the executable file;

the community-generated reputation data indicates whether the executable file is generally trusted or untrusted within a community of users.

8. The computer-implemented method of claim 7 , wherein identifying community-generated reputation data associated with the executable file comprises:

receiving information from a plurality of clients of a security software publisher regarding the executable file, the plurality of clients comprising the community of users;

using the information from the plurality of clients to establish a reputation of the executable file that indicates whether the file is generally trusted or untrusted within the community of users.

9. A system for safely executing programs on a computing device comprising system resources, the system comprising:

an identification module programmed to identify an attempt to launch an executable file;

a reputation module programmed to identify a reputation associated with the executable file;

a determination module programmed to determine, based on the reputation, that the executable file is not trusted without determining that the executable file is malicious based on a reputation score that indicates that the executable file may be malicious, wherein a favorable reputation score indicates that at least one of a file and a source of a file is generally trusted within a community and an unfavorable reputation score indicates that at least one of a file or source of a file is generally untrusted within a community;

a sandboxing module programmed to, in response to determining that the executable file is not trusted without determining that the executable file is malicious, fulfill the attempt by sandboxing a process instantiated from the executable file, wherein sandboxing the process instantiated from the executable file comprises imposing a filter on interactions between the process and a resource of the computing device by, when the process attempts to write to the resource, redirecting the write attempt to a virtual file;

wherein the sandboxing module is further programmed to sandbox the process across sessions by saving the virtual file after the process terminates for use when the executable file is subsequently executed and by:

intercepting at least one attempt by the process to change a system state, the system state comprising the resource of the computing device;

making a record of the attempted change in the virtual file;

intercepting at least one subsequent attempt by the process to inspect the system state;

fulfilling the subsequent attempt to inspect the system state with the record of the attempted change from the virtual file;

allowing attempts by the process to create, in a system registry, settings that pertain only to an application represented by the executable file;

at least one processor configured to execute the identification module, the reputation module, the determination module, and the sandboxing module.

10. The system of claim 9 , wherein the identification module is programmed to identify the reputation associated with the executable file comprises identifying a percentage of user devices within a community that contain an instance of the executable file.

11. The system of claim 9 , wherein the determination module is programmed to determine that the executable file is not trusted based on identifying suspicious signatures in the executable file.

12. The system of claim 9 , wherein the sandboxing module is programmed to sandbox the process by sandboxing a call to a library invoked by the process and the resource of the computing device comprises the library.

13. The system of claim 9 , wherein the sandboxing module is programmed to sandbox the process by invoking a sandboxing function of a separate virtualization system.

14. The system of claim 9 , wherein the sandboxing module is programmed to sandbox the process by sandboxing the process without sandboxing any processes instantiated from trusted executable files launched from a same operating environment as the executable file.

15. The system of claim 9 , wherein:

the reputation module is programmed to identify the reputation associated with the executable file by identifying community-generated reputation data associated with the executable file;

the community-generated reputation data indicates whether the executable file is generally trusted or untrusted within a community of users.

16. A non-transitory computer-readable-storage medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

identify an attempt to launch an executable file;

identify a reputation associated with the executable file;

determine, based on the reputation, that the executable file is not trusted without determining that the executable file is malicious based on a reputation score that indicates that the executable file may be malicious, wherein a favorable reputation score indicates that at least one of a file and a source of a file is generally trusted within a community and an unfavorable reputation score indicates that at least one of a file or source of a file is generally untrusted within a community;

in response to determining that the executable file is not trusted without determining that the executable file is malicious, fulfill the attempt by sandboxing a process instantiated from the executable file, wherein sandboxing the process instantiated from the executable file comprises imposing a filter on interactions between the process and a resource of the computing device by, when the process attempts to write to the resource, redirecting the write attempt to a virtual file; and

sandbox the process across sessions by saving the virtual file after the process terminates for use when the executable file is subsequently executed and by:

intercepting at least one attempt by the process to change a system state, the system state comprising the resource of the computing device;

making a record of the attempted change in the virtual file;

intercepting at least one subsequent attempt by the process to inspect the system state;

fulfilling the subsequent attempt to inspect the system state with the record of the attempted change from the virtual file;

allowing attempts by the process to create, in a system registry, settings that pertain only to an application represented by the executable file.

17. The non-transitory computer-readable-storage medium of claim 16 , wherein identifying the reputation associated with the executable file comprises identifying a percentage of user devices within a community that contain an instance of the executable file.

18. The non-transitory computer-readable-storage medium of claim 16 , wherein determining that the executable file is not trusted is further based on identifying suspicious signatures in the executable file.

19. The non-transitory computer-readable-storage medium of claim 16 , wherein sandboxing the process comprises sandboxing a call to a library invoked by the process and the resource of the computing device comprises the library.

20. The non-transitory computer-readable-storage medium of claim 16 , wherein sandboxing the process comprises invoking a sandboxing function of a separate virtualization system.

Assignments (6)
CHANGE OF NAME Recorded Feb 6, 2023
From: NORTONLIFELOCK INC.
To: GEN DIGITAL INC.
Reel/Frame 062714/0605 →
NOTICE OF SUCCESSION OF AGENCY (REEL 050926 / FRAME 0560) Recorded Sep 13, 2022
From: JPMORGAN CHASE BANK, N.A.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 061422/0371 →
SECURITY AGREEMENT Recorded Sep 13, 2022
From: NORTONLIFELOCK INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062220/0001 →
CHANGE OF NAME Recorded Feb 14, 2020
From: SYMANTEC CORPORATION
To: NORTONLIFELOCK INC.
Reel/Frame 051935/0228 →
SECURITY AGREEMENT Recorded Nov 4, 2019
From: SYMANTEC CORPORATION; BLUE COAT LLC; LIFELOCK, INC,; SYMANTEC OPERATING CORPORATION
To: JPMORGAN, N.A.
Reel/Frame 050926/0560 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 8, 2011
From: BHATIA, YADVINDER; SANKRUTHI, ANAND
To: SYMANTEC CORPORATION
Reel/Frame 025769/0908 →