IP Library Granted Patent US 9,262,597
Granted Patent B2
US 9,262,597 · App. 13/842,350 · Granted Feb 16, 2016

Validating normalized code representations

Inventors: Bala Neerumalla (Redmond, WA); Alain Comeau (Redmond, WA); Johann Rehberger (Seattle, WA); Graham Calladine (Kirkland, WA); Wing Kwong Wan (Redmond, WA); George Raymond Derryberry, Jr. (Seattle, WA); Michael C. Fanning (Redmond, WA); David A. Ross (Redmond, WA); Mark Cartwright (Woodinville, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F21/10G06F21/52G06F21/53G06F21/54G06F2221/033G06F2221/2119
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,262,597
App. No.
13/842,350
Granted
Feb 16, 2016
Kind
B2
Abstract

A request that includes an indication of an execution context and data that represents executable code is obtained. An analysis of the data is initiated based on generating a first templatized representation of the executable code. A list of clearance indicators that indicate a blocking status associated with respective forms of templatized representations is accessed. A workflow policy is determined based on the accessing of the list of clearance indicators. The list of clearance indicators is updated, based on a result of the analysis of the data.

Claims (88)

1. A system comprising:

a device that includes at least one processor, and a computer readable storage medium storing instructions for execution by one or more of the at least one processor, for implementing a code validation engine that includes:

a request acquisition component that obtains a request that includes an indication of an execution context and data that represents executable code, the execution context including descriptive information for identification of a source of the request;

a data analysis component that initiates a first analysis of the data based on generating a first templatized representation of the executable code;

a list access component that accesses a list of one or more clearance indicators that indicate a blocking status associated with respective forms of templatized representations;

a workflow policy component that determines a first workflow policy based on the accessing of the list of clearance indicators; and

a list update component that initiates a first update to the list of one or more clearance indicators, based on a result of the first analysis of the data, and based on a result of obtaining a count of a number of occurrences of determinations of unacceptability associated with other requests previously obtained from the source of the request, based on the descriptive information in the execution context,

the one or more of the at least one processor initiating control of execution of the executable code represented by the data, in accordance with a result of the accessing the list of one or more clearance indicators.

2. The system of claim 1 , further comprising:

a template comparison component that initiates a comparison of the first templatized representation of the executable code with one or more entries in the list of clearance indicators.

3. The system of claim 2 , wherein:

the data analysis component determines the first templatized representation of the executable code based on parsing a Structured Query Language (SQL) query included in the request, and determining a first templatized representation of the SQL query, based on the parsing of the SQL query, wherein

the system further includes a query comparison component that initiates a comparison of the first templatized representation of the SQL query with one or more entries in the list of one or more clearance indicators, wherein

the list of clearance indicators includes one or more of:

an allow list of clearance indicators that indicate a non-blocked status associated with at least a first portion of the respective forms of templatized representations, or

a deny list of clearance indicators that indicate a blocked status associated with at least a second portion of the respective forms of templatized representations, wherein

the query comparison component is configured to initiate the comparison of the first templatized representation of the SQL query with one or more entries in the list of clearance indicators based on one or more of:

initiating a structural comparison of the first templatized representation of the SQL query with one or more entries in the allow list of clearance indicators, or

initiating a structural comparison of the first templatized representation of the SQL query with one or more entries in the deny list of clearance indicators.

4. The system of claim 2 , wherein:

the data analysis component determines the first templatized representation of the executable code based on parsing dynamic language code that is embedded in a web page, and determining a templatized form of the embedded dynamic language code, wherein

the system further includes a dynamic language comparison component that initiates a comparison of the templatized form of the embedded dynamic language code with one or more entries in the list of one or more clearance indicators.

5. The system of claim 4 , wherein:

the dynamic language code includes one or more of:

script code, or

script code that is embedded within a web page that includes markup language.

6. A method comprising:

obtaining a request that includes an indication of an execution context and data that represents executable code, the execution context including descriptive information for identification of a source of the request;

initiating a first analysis of the data based on generating a first templatized representation of the executable code;

accessing a list of one or more clearance indicators that indicate a blocking status associated with respective forms of templatized representations;

determining a first workflow policy based on the accessing of the list of clearance indicators;

initiating a first update to the list of one or more clearance indicators, based on a result of the first analysis of the data, and based on a result of obtaining a determination of a level of unacceptability associated with other requests previously obtained from the specific source of the request, based on the descriptive information in the execution context; and

initiating control of execution of the executable code represented by the data, in accordance with a result of the accessing the list of one or more clearance indicators.

7. The method of claim 6 , wherein:

the first analysis is performed on a client device, or

the first analysis is performed on a server.

8. The method of claim 6 , further comprising:

determining a second workflow policy based on user input from a query requesting a blocking decision; and

initiating a second update to the list of one or more clearance indicators, based on the user input.

9. The method of claim 6 , further comprising:

initiating a second analysis that includes:

initiating configuration of a runtime environment for dynamic analysis,

initiating a conversion of the data to an executable code format, and

initiating execution of the executable code format corresponding to the converted data; and

initiating a second update to the list of one or more clearance indicators, based on a result of the second analysis.

10. The method of claim 9 , wherein:

initiating the second update to the list of one or more clearance indicators is based on detecting one or more exceptions that occur during execution of the executable code format corresponding to the converted data.

11. The method of claim 9 , wherein:

a decision to initiate execution of the executable code format corresponding to the converted data is based on:

determining a permission status associated with avoidance of configuration of the runtime environment and conversion of the data to an executable code format, based on the obtained workflow policy, or

determining a permission status associated with granting permission to initiate configuration of the runtime environment and conversion of the data to an executable code format, based on the obtained workflow policy.

12. The method of claim 6 , further comprising:

determining a matching status of the first templatized representation of the executable code with an entry in the list of one or more clearance indicators, based on a matching algorithm, wherein

determining the first workflow policy includes obtaining the first workflow policy based on the determined matching status.

13. The method of claim 6 , wherein:

the list of clearance indicators includes one or more of:

an allow list of clearance indicators that indicate a non-blocked status associated with at least a first portion of the respective forms of templatized representations, or

a deny list of clearance indicators that indicate a blocked status associated with at least a second portion of the respective forms of templatized representations.

14. The method of claim 6 , further comprising:

initiating a comparison of the first templatized representation of the executable code with one or more entries in the list of clearance indicators.

15. The method of claim 14 , wherein:

determining the first templatized representation of the executable code includes parsing a Structured Query Language (SQL) query included in the request, and determining a first templatized representation of the SQL query, based on the parsing of the SQL query, wherein

the method further includes initiating a comparison of the first templatized representation of the SQL query with one or more entries in the list of one or more clearance indicators.

16. The method of claim 15 , wherein:

the list of clearance indicators includes one or more of:

an allow list of clearance indicators that indicate a non-blocked status associated with at least a first portion of the respective forms of templatized representations, or

a deny list of clearance indicators that indicate a blocked status associated with at least a second portion of the respective forms of templatized representations, wherein

initiating the comparison of the first templatized representation of the SQL query with one or more entries in the list of clearance indicators includes one or more of:

initiating a structural comparison of the first templatized representation of the SQL query with one or more entries in the allow list of clearance indicators, or

initiating a structural comparison of the first templatized representation of the SQL query with one or more entries in the deny list of clearance indicators.

17. The method of claim 14 , wherein:

determining the first templatized representation of the executable code includes parsing dynamic language code that is embedded in a web page, and determining a templatized form of the embedded dynamic language code, wherein

the method further includes initiating a comparison of the templatized form of the embedded dynamic language code with one or more entries in the list of one or more clearance indicators.

18. The method of claim 6 , wherein:

initiating the first analysis of the data includes a first static analysis of the data that represents executable code, wherein

initiating the first update to the list of one or more clearance indicators is based on results of the first static analysis of the data that represents executable code.

19. The method of claim 18 , wherein:

initiating the first analysis of the data includes determining a canonical format representation associated with the request, wherein

initiating the first update to the list of one or more clearance indicators includes initiating the first update based on a self learning algorithm that includes:

updating an allow list portion of the list of clearance indicators with the canonical format representation associated with the request, based on the results of the first static analysis of the data that represents executable code, the clearance indicators in the allow list portion indicating a non-blocked status associated with at least a first portion of the respective forms of templatized representations, and

updating a deny list portion of the list of clearance indicators with the canonical format representation associated with the request, based on the results of the first static analysis of the data that represents executable code, the clearance indicators in the deny list portion indicating a blocked status associated with at least a second portion of the respective forms of templatized representations.

20. A computer program product comprising a computer-readable storage medium storing executable code that causes at least one data processing apparatus to:

obtain a request that includes an indication of an execution context and data that represents executable code, the execution context including descriptive information for identification of a source of the request;

initiate a first analysis of the data based on generating a first templatized representation of the executable code;

access a list of one or more clearance indicators that indicate a blocking status associated with respective forms of templatized representations;

determine a first workflow policy based on the accessing of the list of clearance indicators; and

initiate a first update to the list of one or more clearance indicators, based on a result of the first analysis of the data, and based on a frequency of other requests previously obtained from the source of the request, based on the descriptive information in the execution context; and

initiate control of execution of the executable code represented by the data, in accordance with a result of the accessing the list of one or more clearance indicators.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039025/0454 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2013
From: NEERUMALLA, BALA; COMEAU, ALAIN; REHBERGER, JOHANN; CALLADINE, GRAHAM; WAN, WING KWONG; DERRYBERRY, GEORGE RAYMOND, JR.; FANNING, MICHAEL C.; ROSS, DAVID A.; CARTWRIGHT, MARK
To: MICROSOFT CORPORATION
Reel/Frame 030462/0056 →
Continuity (1)
Related Publication 20140283096A1 · Sep 18, 2014