IP Library › Granted Patent US 8,011,008
Granted Patent B2
US 8,011,008 · App. 11/939,383 · Granted Aug 30, 2011

Application security model

Assignee: Microsoft Corporation
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 8,011,008
App. No.
11/939,383
Granted
Aug 30, 2011
Kind
B2
Abstract

Performing security sensitive operations with an application security model. Security agnostic code is executed. The security agnostic code is identified as not having authorization to perform a security sensitive operation. Executing the security agnostic code includes calling code identified as security safe critical code. In response to the security agnostic code calling the security safe critical code, the security safe critical code is executed. The security safe critical code includes functionality for performing validity checks. Executing the security safe critical code includes performing an validity check for the security agnostic code. When the security agnostic code passes the validity check, code identified as security critical code is called. In response to the security safe critical code calling the security critical code, the security critical code is executed. The security critical code is authorized to perform the security sensitive operation.

Claims (48)

1. In a computing environment, a method of performing security sensitive operations, the method performed by executing computer executable instructions within a computing system, the method comprising:

executing security agnostic code wherein the security agnostic code is identified as not having authorization to perform a security sensitive operation and wherein executing the security agnostic code comprises calling code identified as security safe critical code;

in response to the security agnostic code calling the security safe critical code, executing the security safe critical code, wherein the security safe critical code comprises functionality for performing validity checks, and wherein executing the security safe critical code comprises performing an validity check for the security agnostic code and when the security agnostic code passes the validity check, calling code identified as security critical code;

determining that each of a set of inheritance rules governing types and methods of each of the security agnostic code, the security safe critical code, and the security critical code are correctly followed, the inheritance rules defining a set of allowed and disallowed inheritance patterns for the types and methods of each of the security agnostic code, the security safe critical code, and the security critical code; and

in response to the security safe critical code calling the security critical code, executing the security critical code, wherein the security critical code is authorized to perform the security sensitive operation.

2. The method of claim 1 , wherein the security agnostic code is derived only from other security agnostic code.

3. The method of claim 1 , wherein the security safe critical code is derived only from other security safe critical code or security agnostic code.

4. The method of claim 1 , wherein the security critical code is derived from other security critical code, security safe critical code or security agnostic code.

5. The method of claim 1 , further comprising, prior to executing the security agnostic code:

identifying the security agnostic code;

identifying the security critical code; and

determining that the security agnostic code is linked to the security critical code only through the security safe critical code, and wherein an error is triggered if the security agnostic code is linked to the security critical code bypassing the security safe critical code.

6. The method of claim 1 , wherein the security agnostic code comprises an attribute identifying the security agnostic code as security agnostic code, the security critical code comprises an attribute identifying the security critical code as security critical code, and the security safe critical code comprises an attribute identifying the security safe critical code as security safe critical code.

7. The method of claim 1 , wherein the security safe critical code provides a layer of safety limiting privileges for security agnostic code.

8. A method of validating code, the method performed by executing computer executable instructions within a computing system, the method comprising:

accessing code, wherein the code comprises:

security agnostic code, wherein the security agnostic code is identified as not having authorization to perform a security sensitive operation;

security safe critical code, wherein the security safe critical code comprises functionality for performing validity checks, and

security critical code, wherein the security critical code is authorized to perform the security sensitive operation, and wherein the security safe critical code is used to link the security critical code to the security agnostic code, and wherein security agnostic code is less privileged than security safe critical code and security critical code;

determining whether or not types in the code are allowed types within a set of inheritance rules governing types and methods for a base type from which they inherit;

determining whether or not methods have an allowed accessibility within a set of inheritance rules governing types and methods from a base method from which they inherit;

determining whether a base class has an access-restricted default constructor;

when the base class has an access-restricted default constructor, then determining if the default constructor a derived class is at least as access-restricted as the default constructor of the base class; and

providing an indication when types in the code are not at least as access-restricted as a base type from which they inherit, methods have changed accessibility from a base method from which they inherit; or the default constructor in a derived class is not at least as access-restricted as the default constructor of the base class.

9. The method of claim 8 , wherein the method is performed statically prior to a runtime of the code.

10. The method of claim 8 , wherein the method is performed statically at compile time of the code.

11. The method of claim 8 , wherein the method is performed statically at installation time of the code.

12. The method of claim 8 , determining if the security agnostic code is derived only from other security agnostic code and providing an indication if the security agnostic code is not derived only from other security agnostic code.

13. The method of claim 8 , determining if the security safe critical code is derived only from other security safe critical code or security agnostic code and providing an indication if the security safe critical code is not derived only from other security safe critical code or security agnostic code.

14. A method of validating code, the method performed by executing computer executable instructions within a computing system, the method comprising:

identifying security agnostic code, wherein the security agnostic code is identified as not having authorization to perform a security sensitive operation;

identifying security critical code wherein the security critical code is authorized to perform the security sensitive operation

identifying security safe critical code wherein the security safe critical code comprises functionality for performing validity checks;

determining whether or not the security agnostic code is linked to the security critical code through the security safe critical code;

allowing the security safe critical code to perform the security sensitive operation when the security agnostic code is linked to the security critical code through the security safe critical code; and

triggering an error when the security agnostic code is not linked to the security critical code through the security safe critical code.

15. The method of claim 14 , further comprising:

determining whether or not types in the code are at least as restrictive as a base type from which they inherit; and

providing an indication when types in the code are not at least as restrictive as a base type from which they inherit.

16. The method of claim 14 , further comprising:

determining whether or not methods have changed accessibility from a base method from which they inherit; and

providing an indication when methods have changed accessibility from a base method from which they inherit.

17. The method of claim 14 , further comprising:

determining if a base class has a default constructor, and if the base class has a default constructor, then determining if a derived class is at least as restrictive as the default constructor of the base class; and

providing an indication when a derived class is not at least as restrictive as the default constructor of the base class.

18. The method of claim 14 , wherein the method is performed statically prior to a runtime of the code.

19. The method of claim 14 , wherein the security agnostic code comprises an attribute identifying the security agnostic code as security agnostic code, the security critical code comprises an attribute identifying the security critical code as security critical code, and the security safe critical code comprises an attribute identifying the security safe critical code as security safe critical code.

20. The method of claim 14 , wherein the security agnostic code is identified as security agnostic code using a keyword, the security critical code is identified as security critical code using a keyword, and the security safe critical is identified as security safe critical code using a keyword.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 11, 2008
From: KIM, HANSUK; LEE, SUNG GUL
To: HITACHI DATA STORAGE KOREA, INC.
Reel/Frame 020610/0364 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 13, 2007
From: DOWNEN, MICHAEL D.; KRISHNASWAMY, RAJA; MOORTHY, ARUN; KAUFMAN, CHARLES W.
To: MICROSOFT CORPORATION
Reel/Frame 020104/0503 →
Continuity (1)
Related Publication 20090126011A1 · May 14, 2009