IP Library Granted Patent US 11,138,311
Granted Patent B2
US 11,138,311 · App. 16/193,842 · Granted Oct 5, 2021

Distributed security introspection

Inventor: Michael Cervantez (San Francisco, CA)
Assignee: salesforce.com, Inc.
G06F21/554G06F21/562G06N7/005G06N20/00G06F2221/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 11,138,311
App. No.
16/193,842
Granted
Oct 5, 2021
Kind
B2
Abstract

A graph representation of a designated application may be created. The graph representation may include nodes that each represent a computer programming code statement associated with the designated application as well as edges that each represent a logical linkage between two or more computer programming code statements. A determination may be made as to whether the designated application constitutes an unacceptable security risk by comparing the designated graph representation with a plurality of comparison graph representations. When it is determined that the designated application constitutes an unacceptable security risk, a message may be transmitted to prevent the designated application from being executed.

Claims (26)

1. A method comprising:

creating a designated graph representation of a designated application stored in a memory module, the designated graph representation including a plurality of nodes and a plurality of edges connecting the nodes, each of the nodes representing a computer programming code statement associated with the designated application, each of the edges representing a logical linkage between a respective two or more computer programming code statements associated with the designated application, wherein a first node represents an “if′ statement, wherein the first node is connected via a first directional edge to a second node that represents a first statement to be executed if the “if′ statement returns “True”, wherein the first node is connected via a second directional edge to a third node that represents a second statement to be executed if the “if′ statement returns “False”;

determining via a processor whether the designated application constitutes a security risk by comparing the designated graph representation with a plurality of comparison graph representations stored within a storage repository within an on-demand computing services environment providing computing services to a plurality of client organizations, a designated-subset of the comparison graph representations each representing a respective portion of computer programming code identified as malicious, each of the comparison graph representations being associated with a respective comparison application, each comparison involving identifying one or more differences between nodes and edges in the designated graph representation and nodes and edges in the comparison graph representation, wherein determining whether the designated application constitutes a security risk comprises determining whether the designated graph representation includes one or more statements not present in the comparison graph representations; and

when it is determined that the designated application constitutes a security risk, transmitting a message from a communications interface to prevent the designated application from being executed.

2. The method recited in claim 1 , wherein the comparison applications include two or more prior versions of the designated application.

3. The method recited in claim 1 , wherein determining whether the designated application constitutes a security risk comprises determining whether the designated graph representation includes one or more statements not present in the comparison graph representations corresponding with the prior versions of the designated application.

4. The method recited in claim 1 , wherein determining whether the designated application constitutes a security risk comprises determining whether the designated graph representation includes one or more nodes corresponding with respective computer programming code statements to transmit information outside the on-demand computing services system.

5. The method recited in claim 1 , wherein determining whether the designated application constitutes a security risk comprises determining whether the designated graph representation includes one or more nodes corresponding with respective computer programming code statements to update information stored within the on-demand computing services system.

6. The method recited in claim 1 , wherein determining whether the designated application constitutes a security risk comprises determining whether the designated graph representation includes one or more nodes corresponding with respective computer programming code statements to update information retrieved from the on-demand computing services system.

7. The method recited in claim 1 , wherein the designated application is authored by one of the client organizations.

8. The method recited in claim 1 , wherein the designated application is authored by a third-party software developer to the on-demand computing services environment.

9. The method recited in claim 1 , wherein each of the comparison applications is configured to access information stored within a multi-tenant database in the on-demand computing services environment, the multi-tenant database storing information associated with the plurality of client organizations.

10. The method recited in claim 1 , wherein the comparison applications are accessible via an application exchange, the application exchange providing applications for purchase via a network.

11. A computing device comprising:

a storage medium configurable to store a designated graph representation created to represent a designated application, the designated graph representation including a plurality of nodes and a plurality of edges connecting the nodes, each of the nodes representing a computer programming code statement associated with the designated application, each of the edges representing a logical linkage between a respective two or more computer programming code statements associated with the designated application, wherein a first node represents an “if′ statement, wherein the first node is connected via a first directional edge to a second node that represents a first statement to be executed if the “if′ statement returns “True”, wherein the first node is connected via a second directional edge to a third node that represents a second statement to be executed if the “if′ statement returns “False”;

a processor configurable to determine whether the designated application constitutes a security risk by comparing the designated graph representation with a plurality of comparison graph representations stored within a storage repository within an on-demand computing services environment providing computing services to a plurality of client organizations, a designated-subset of the comparison graph representations each representing a respective portion of computer programming code identified as malicious, each of the comparison graph representations being associated with a respective comparison application, each comparison involving identifying one or more differences between nodes and edges in the designated graph representation and nodes and edges in the comparison graph representation, wherein determining whether the designated application constitutes a security risk comprises determining whether the designated graph representation includes one or more statements not present in the comparison graph representations; and

a communications interface configurable to transmit a message to prevent the designated application from being executed when it is determined that the designated application constitutes a security risk.

12. The computing device recited in claim 11 , wherein the comparison applications include two or more prior versions of the designated application.

13. The computing device recited in claim 11 , wherein determining whether the designated application constitutes a security risk comprises determining whether the designated graph representation includes one or more statements not present in the comparison graph representations corresponding with the prior versions of the designated application.

14. The computing device recited in claim 11 , wherein determining whether the designated application constitutes a security risk comprises determining whether the designated graph representation includes one or more nodes corresponding with respective computer programming code statements to transmit information outside the on-demand computing services system.

15. The computing device recited in claim 11 , wherein determining whether the designated application constitutes a security risk comprises determining whether the designated graph representation includes one or more nodes corresponding with respective computer programming code statements to update information stored within the on-demand computing services system.

16. The computing device recited in claim 11 , wherein determining whether the designated application constitutes a security risk comprises determining whether the designated graph representation includes one or more nodes corresponding with respective computer programming code statements to update information retrieved from the on-demand computing services system.

17. One or more non-transitory computer readable media having instructions stored thereon for performing a method, the method comprising:

creating a designated graph representation of a designated application stored in a memory module, the designated graph representation including a plurality of nodes and a plurality of edges connecting the nodes, each of the nodes representing a computer programming code statement associated with the designated application, each of the edges representing a logical linkage between a respective two or more computer programming code statements associated with the designated application, wherein a first node represents an “if′ statement, wherein the first node is connected via a first directional edge to a second node that represents a first statement to be executed if the “if′ statement returns “True”, wherein the first node is connected via a second directional edge to a third node that represents a second statement to be executed if the “if′ statement returns “False”;

determining via a processor whether the designated application constitutes a security risk by comparing the designated graph representation with a plurality of comparison graph representations stored within a storage repository within an on-demand computing services environment providing computing services to a plurality of client organizations, a designated-subset of the comparison graph representations each representing a respective portion of computer programming code identified as malicious, each of the comparison graph representations being associated with a respective comparison application, each comparison involving identifying one or more differences between nodes and edges in the designated graph representation and nodes and edges in the comparison graph representation, wherein determining whether the designated application constitutes a security risk comprises determining whether the designated graph representation includes one or more statements not present in the comparison graph representations; and

when it is determined that the designated application constitutes a security risk, transmitting a message from a communications interface to prevent the designated application from being executed.

Assignments (2)
CHANGE OF NAME Recorded Dec 18, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069717/0383 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 16, 2018
From: CERVANTEZ, MICHAEL
To: SALESFORCE.COM, INC.
Reel/Frame 047529/0683 →
Continuity (1)
Related Publication 20200159917A1 · May 21, 2020