IP Library Granted Patent US 9,009,693
Granted Patent B2
US 9,009,693 · App. 13/889,469 · Granted Apr 14, 2015

Out-of-band framework libraries within applications

Inventors: Eric St. John (Kirkland, WA); Mohammad Rahim Bhojani (Bothell, WA); Alok Shriram (Redmond, WA); David Kean (Redmond, WA); Divya Swarnkar (Redmond, WA); Kumar Gaurav Khanna (Woodinville, WA); Gaye Oncul Kok (Redmond, WA); Jan Kotas (Redmond, WA); Michael J. Rayhelson (Bellevue, WA); Michael Rousos (Massillon, OH); Weitao Su (Sammamish, WA); Matthew Charles Cohn (Seattle, WA); Zhanliang Chen (Sammamish, WA)
Assignee: Microsoft Corporation
G06F9/44521G06F9/44536
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,009,693
App. No.
13/889,469
Granted
Apr 14, 2015
Kind
B2
Abstract

An enhanced binder provides flexibility and certainty when selecting a version of a software library to load, and an enhanced loader prevents a library version vulnerable to a security flaw from being loaded. The binder can perform unification, implicit override, and/or redirection. Implicit override searches assembly-specific locations for an implicit_version, and override the previously chosen unification or other version with the implicit_version when the implicit_version is greater. The implicit_version gets updated with the individual assembly, whereas the unification_version gets updated with the framework. Redirection may override the implicit_version. Unlike redirection, an implicit_version does not recite an explicit range and is found outside application configuration files. The implicit_version is specified implicitly by the assembly without an XML declaration. Vulnerable libraries are not loaded, based on out-of-band metadata placed in response to a list of known out-of-band assemblies, an out-of-band-servicing attribute, or a custom servicing library.

Claims (53)

1. A computer system comprising:

at least one processor;

a memory in operable communication with the processor(s); and

a binder residing in the memory and having implicit override code, the binder configured to interact with the processor and memory to determine which version of a requested assembly will be identified to a loader for loading to support execution of an application;

the implicit override code including code to search for an implicit_version in at least one assembly-specific location, the implicit override code also including code to compare the implicit_version to an other version after the implicit_version is found, the implicit override code also including code to conditionally override the other version with the implicit_version when the implicit_version is greater than the other version;

wherein the binder also includes framework unification code which is configured to check whether the requested assembly is in a predefined framework of assemblies which are coupled to a managed runtime, the framework unification code including code to compare a requested_version with a unification_version and to conditionally override the requested_version with the unification_version when the unification_version is greater than the requested_version and the requested assembly is in the predefined framework of assemblies, and wherein the binder is configured to invoke the framework unification code to obtain a unification phase result and then invoke the implicit override code with the unification phase result to obtain an implicit override phase result.

2. The computer system of claim 1 , further comprising a list of known out-of-band assemblies, namely, assemblies which are updated more frequently than the predefined framework of assemblies.

3. The computer system of claim 1 , wherein the binder also includes binding redirection code which is configured to check for binding redirect commands, the binding redirection code including code to override the implicit_version in response to a binding redirect command, and wherein the binder is configured to invoke the binding redirection code after invoking the implicit override code.

4. The computer system of claim 3 , wherein the implicit_version is found outside a configuration file of the application, and the binding redirect command is specified inside the configuration file.

5. The computer system of claim 1 , wherein the computer system further comprises an assembly which has previously been loaded at least once on the computer system, and wherein a collection of out-of-band metadata resides in the memory, the out-of-band metadata collection including an entry for the previously loaded assembly, and the computer system memory also includes at least one of the following: (a) out-of-band assembly code which is configured to place the entry in the collection in response to the previously loaded assembly at least partially matching a list of known out-of-band assemblies when the assembly was previously loaded, (b) an out-of-band-servicing attribute of the previously loaded assembly.

6. The computer system of claim 1 , wherein the computer system further comprises an assembly which has previously been loaded at least once on the computer system, and wherein a collection of out-of-band metadata resides in the memory, the out-of-band metadata collection including an entry for the previously loaded assembly, and the computer system memory also includes a servicing library which includes code configured to place the entry in the collection.

7. A computer-readable storage memory configured with data and with instructions that when executed by at least one processor causes the processor(s) to perform a technical process for determining which version of a requested assembly will be identified to a loader for loading to support execution of an application, the technical process comprising the computational steps of:

finding an implicit_version in an assembly-specific location;

comparing the implicit_version to an other version after the implicit_version is found;

overriding the other version with the implicit_version when the implicit_version is greater than the other version;

checking whether the requested assembly is in a predefined framework of assemblies which are coupled to a managed runtime;

comparing a requested_version with a unification_version and conditionally overriding the requested_version with the unification_version when the unification_version is greater than the requested_version and the requested assembly is in the predefined framework of assemblies; and

obtaining a unification phase result and then obtaining an implicit override phase result.

8. The computer-readable storage memory of claim 7 , wherein the process further comprises performing a framework unification of the requested assembly, and the framework unification produces the other version which is compared to the implicit_version.

9. The computer-readable storage memory of claim 8 , wherein the process further comprises performing a binding redirection of the requested assembly, and the binding redirection overrides the implicit_version.

10. The computer-readable storage memory of claim 7 , wherein the process further comprises performing a binding redirection of the requested assembly, and the binding redirection overrides the implicit_version.

11. The computer-readable storage memory of claim 7 , wherein the process occurs on a computer system, and the process further comprises at least one of the following:

(a) at least partially matching the requested assembly to a list of known out-of-band assemblies, and in response placing an entry for the requested assembly in a metadata collection on the computer system;

(b) locating an out-of-band-servicing attribute in the requested assembly, namely, an attribute which identifies the requested assembly as an out-of-band assembly, and in response placing an entry for the requested assembly in a metadata collection on the computer system;

(c) applying a service package to the computer system, and as part of applying the service package placing an entry for the requested assembly in a metadata collection on the computer system.

12. The computer-readable storage memory of claim 11 , wherein the process further comprises determining that the requested assembly is vulnerable to a security flaw and in response to that determination fails to load the requested assembly.

13. The computer-readable storage memory of claim 7 , wherein the finding step finds the implicit_version in at least one of the following assembly-specific locations:

a file which has a name in common with the requested assembly and which is located in a directory of the application;

a subdirectory of the application which is specified by a search convention;

a location which is specified in a list of directory paths, the list being located in the application's directory;

a location which is specified in a list of file names, the list being located in the application's directory.

14. The computer-readable storage memory of claim 7 , wherein the process comprises performing a binding redirection of the requested assembly, and the process is further characterized in at least one of the following ways:

the implicit_version does not recite an explicit range, and the binding redirection recites that if the currently chosen version is in the range X-Y then use version Z instead;

the implicit_version is found outside a configuration file of the application, and the binding redirection is specified inside the configuration file;

the implicit_version is specified implicitly by the requested assembly without requiring an XML declaration, and the binding redirection is specified by an XML declaration.

15. The computer-readable storage memory of claim 7 , wherein the requested assembly belongs to a framework of assemblies, the process comprises performing a framework unification of the requested assembly, and the process is further characterized in that the implicit_version gets updated with the requested assembly, whereas a unification_version gets updated with the framework of assemblies.

16. A technical process for a computing system to automatically determine whether to load a version of a requested assembly that has been identified to a loader for loading to support execution of an application in the computing system, the technical process comprising the computational steps of:

executing software instructions in the computing system which locate an out-of-band metadata collection in the computing system, the out-of-band metadata collection containing entries which identify out-of-band assemblies, namely, assemblies which are updated more frequently than a predefined framework of assemblies coupled to a managed runtime, the out-of-band metadata collection entries implemented using at least one of the following: a registry key, a log entry, a file system log entry, an element in a list, and element in a tree;

executing software instructions in the computing system to determine that at least one of the following out-of-band assembly conditions is satisfied:

(a) the requested assembly matches an entry in a list of known out-of-band assemblies,

(b) the requested assembly contains an out-of-band-servicing attribute, namely, an attribute which identifies the requested assembly as an out-of-band assembly; and then

executing software instructions in the computing system which place an entry for the requested assembly in the out-of-band metadata collection on the computing system in response to determining that at least one of the out-of-band assembly conditions is satisfied;

and wherein the technical process further comprises:

executing software instructions in the computing system which find an implicit_version in an assembly-specific location; and

executing software instructions in the computing system which compare the implicit_version to an other version after the implicit_version is found.

17. The technical process of claim 16 , wherein the process further comprises determining that the requested assembly is vulnerable to a security flaw and in response to that determination failing to load the requested assembly.

18. The technical process of claim 16 , wherein the process further comprises determining that the requested assembly is not known to be vulnerable to a security flaw and in response to that determination permitting the loader to load the requested assembly.

19. The technical process of claim 16 , wherein the process further comprises determining that the requested assembly is an out-of-band assembly by reading the entry for the requested assembly in the out-of-band metadata collection.

20. The technical process of claim 16 , wherein the process finds the implicit_version in at least one of the following assembly-specific locations:

a file which has a name in common with the requested assembly and which is located in a directory of the application;

a subdirectory of the application which is specified by a search convention;

a location which is specified in a list of directory paths, the list being located in the application's directory;

a location which is specified in a list of file names, the list being located in the application's directory.

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 9, 2013
From: ST. JOHN, ERIC; BHOJANI, MOHAMMAD RAHIM; SHRIRAM, ALOK; KEAN, DAVID; SWARNKAR, DIVYA; KHANNA, KUMAR GAURAV; KOK, GAYE ONCUL; KOTAS, JAN; RAYHELSON, MICHAEL; ROUSOS, MICHAEL; SU, WEITAO; COHN, MATTHEW CHARLES; CHEN, ZHANLIANG
To: MICROSOFT CORPORATION
Reel/Frame 030379/0525 →
Continuity (1)
Related Publication 20140337824A1 · Nov 13, 2014