System and method for executing a permissions recorder analyzer

Information

  • Patent Application
  • 20070277222
  • Publication Number
    20070277222
  • Date Filed
    May 26, 2006
    20 years ago
  • Date Published
    November 29, 2007
    18 years ago
Abstract
System and method for accurately determining security policy for an application based on dynamic code analysis of application runtime execution(s). A dynamic recorder, dynamic code analyzer and security policy analyzer can evaluate and determine the security decisions and access to secure resources made during a security event within one or more executions of an application in order to identify an existing security policy that best matches an application's security needs. Security events may be analyzed to determine which security decisions and access to secure resources are necessary and which can be eliminated or replaced with alternative decisions or resources.
Description

DESCRIPTION OF DRAWINGS


FIG. 1 is a high-level block diagram, according to an embodiment of the invention.



FIG. 2 is a flow diagram according to an embodiment of the invention.





DETAILED DESCRIPTION

The present invention offers a method for obtaining more accurate information about the security permissions required by an application to run. The required permissions to execute properly are a subset of the all the permissions that can be required by the application (e.g. setup code, configuration, administrative tasks). Analysis on dynamically recorded application execution data can identify the executed permissions and the context in which they are executed. In comparison, a static analysis will detect, indiscriminately, all permissions and, even then, misses the permission required if some code is loaded dynamically. The gathered information (i.e. evidences, permissions, context) can be used to determine an application specific security policy or the best match to a pre-existing security policy. As such, many factors may be considered in assigning a security policy. A security policy may be characteristic of the permissions that an application is allowed to have. A permission set and security policy may be determined based on various factors of the application's runtime.



FIG. 1 is a high-level block diagram of an exemplary system for a method of the invention. One or more applications may be presented for execution on a computer 10. Application code (12, 14) may be downloaded to a computer 10 through a network connection. Other application sources may be included (e.g., hard disk, CD, drive storage). Thus, application code (12, 14) on a computer 10 may originate from various sources that are either secure, un-secure, or semi-secure.


Execution of applications may be carried out using a runtime module 16 (e.g., Common Language Runtime, ECMA runtime, etc.). Code Access Security (CAS) 18 allows the runtime module 16 to restrict the permissions allowed to an application based on the applicable security policy or policies. Runtime module 16 and CAS 18 are generally known in the art. A novel aspect of the system includes the dynamic recorder 28, records database 32, dynamic code analyzer 20 and the security policy module 22. A dynamic recorder 28 may dynamically record permission related data (e.g., access requests, edit, write, store, delete permissions), context related data, and evidence related data that occurs during application code execution to a records database 32. Multiple execution instances may be recorded in order to analyze the application more completely. Database 32, or other location, may store dynamically record data from application execution runtime. The application execution data may include, but is not limited to, information from each resource the application invoked during execution including permission checks (e.g., Link, Inheritance and Demand); the data used in the security decision process (e.g. stack); and the results (e.g., success or failure); the evidence of the executing code, the XML representation of the requested permissions; access to secure resources 24 including shared directories 26, assembly cache 25, and/or code libraries 27. Resource access to other sources may also exist. The recorded data may be characterized into events and recorded for further analysis. The data may be sent to a remote location if desired.


The dynamic code analyzer 20 and the security policy module 22 interpret the recorded data. The dynamic code analyzer 20 may parse the dynamically collected data to identify various security and/or other observed events. The dynamic code analyzer 20 may also interpret the recorded permissions, among other things, into useful information regarding security. Security policy module 22 may further process the information from the dynamic code analyzer 20 to determine a minimal security policy for executing the application. A minimal security policy may be defined by the most restrictive security policy that still allows the application to execute normally. The security policy module 22 may create a minimal security policy using one or a combination of implementations including perfect fit, best fit and incorporating suggested changes. Information regarding a created security policy and/or previously created security policy (e.g., existing security policies) may be stored at security policies database 30, or other location.


A perfect fit security policy may utilize a dynamic code analyzer 20 to analyze logged execution data. The dynamically recorded execution(s) may be analyzed to identify one or more security related events associated with application execution. A security policy module 22 may create a security policy corresponding to the identified one or more security related events of the recorded execution. Thus, the perfect fit security policy is determined based on each applications unique execution events.


A best fit security policy may be determined based on comparing and matching a pre-existing security policy to the recorded execution and/or the determined perfect fit security policy. For example, a perfect fit security policy may be compared with existing policies, including system defaults, in order to identify an existing policy that provides a minimal superset to the perfect fit policy. This allows the application to be matched to an existing policy without limiting any functions of the application and avoids having to create an entirely new security policy for each application which in turn the computer system has to store and manage. If the only matching existing security policy is found to be a security policy with the least secure permissions as compared with other existing policies (e.g., Full Trust), than a match may not be recognized. This may allow the creation of a new security policy to be established having greater permissions than the least secure permissions policy but less than or equal to the permissions required. In essence, the new policy may be created between the two. However, in same cases the policy with the least secure permissions may be used a a valid minimal superset.


Even after the matching process it is still possible to have a suboptimal security policy (e.g. the perfect-fit policy requires too many permissions or the best-fit policy allows too many permissions). To further change the security policy may require a change to the permissions themselves. This may not be done directly as the permissions are requested by the events generated by the applications. However, the events themselves can be analyzed and alternative programming solutions, leading to similar events but with different security requirements, can be suggested (e.g., suggesting the use of isolated storage instead of the normal file based storage). Determination of alternatives may result in a list of suggested security changes for the running application. Once the suggested changes are applied to the application (by making changes to the source code) the whole process can be started again. The suggested changes, if implemented, will yield a more accurate and secure security policy when combined with the perfect fit policy or identified best fit security policy. It is possible, but not necessary, to iterate this process several times until no more changes can be applied to the application source code.


Alternatively, more restrictive security permissions may be selected that do limit the applications functions, but do not render the application fully unusable. For example, an application which results in incoming access to secure resources 24 from an outside source (e.g. the Internet) may be prevented, while outgoing access from the computer 10 may still be allowed. Thus an application may have limited ability without disabling all application capabilities.



FIG. 2 is a flow diagram that illustrates a method of the invention according to an embodiment of the invention. At runtime execution an application may proceed to execute on the computer 10 (operation 50). During application runtime execution, data associated with the actions and events of application runtime execution are recorded and stored (operation 52 and 54). At operation 56, analysis may include parsing the data from one or more application runtime execution instances. The security events and/or other runtime actions may be identified in analysis, which may be carried out to varying degrees. Information about the identified events, particularly security events, may be further processed to determine a security policy (operation 58). In operation 60, a perfect fit security policy may be determined. The perfect fit security policy may be matched with one or more existing security policies (operation 62). A match may be determined based on whether an existing security policy is a superset of the determined perfect fit security policy. The matching existing policy that is the minimal superset (e.g., the superset the closest to the perfect-fit policy), is identified as the best fit policy for which the application gets assigned (operation 64). However, if the superset is too large, (e.g., too few permissions) then a good match may not be recognized. Operation 66 may identify, based on logged runtime data (e.g., security events), possible changes to the application that, if implemented, would reduce the security requirements for executing the application, without affecting its capabilities. For example, alternative suggestions may include, using Isolated Storage versus normal file access; accessing “safe” intranet resources instead of similar public internet resources; using managed resources instead of invoking native code and/or; asserting certain permissions that are know to be safe in the particular context. Furthermore, upon analysis, if a permission request is found to be unnecessary it may be eliminated.


The alternatives may be suggested to the user so that a developer (or other entity) may determine whether it is possible to incorporate one or more of them into the application (operation 68). If so, the method may return to operation 50 and restart analyzing the new application with all, or some of, the suggested changes. Such iterations may be done multiple times for an application until there is no more changes judged acceptable to the developer. Otherwise, a new security policy may be created and stored for use with the application (operation 70). For subsequent processing of application security policies, the security policy created in operation 70 may be referred to as an existing security policy.


Thus, the method described may be used to determine whether an application can properly execute using reduced permissions. This allows permissions to be mapped into the existing policy that best fits the permissions set needed for an application to run successfully. Also based on information logged and evaluated using a dynamic recorder 28, dynamic code analyzer 20 and security policy module 22 an accurate specific security policy may be created for the application and stored at security policy database 30. Thus, the system and method of the invention provides a less complex method for managing security policies while providing a more accurate security policy for applications.


In the foregoing specification, the invention has been described with reference to specific embodiments thereof. Various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

Claims
  • 1. A computer implemented method for determining a security policy based on execution of application code, comprising logging execution data for an application;creating a security policy based on one or more security related events of the application from the logged execution data; anddetermining whether an existing security policy matches the security policy, if yes, suggest the matching existing security policy for the application;if not, suggesting a custom security policy for the application;
  • 2. A computer implemented method of claim 1, wherein the new security policy corresponds to an existing security policy.
  • 3. A computer implemented method of claim 1, wherein logged execution data comprises one or more recorded instances of application execution.
  • 4. A computer implemented method of claim 1, wherein the matching existing security policy is a minimal superset to the security policy.
  • 5. The computer implemented method of claim 1, wherein the one or more security related events include at least one of: evidence of the executing code, XML representation of requested permissions, results of permission request, or attempted access to secure resources.
  • 6. The computer implemented method of claim 5, wherein secure resources include shared directories, assembly cache, and code libraries.
  • 7. The computer implemented method of claim 1, wherein the logged application execution data is stored in memory.
  • 8. The computer implemented method of claim 1, wherein the at least one security event is a request for access to a resource.
  • 9. The computer implemented method of claim 1, wherein the step of suggesting a custom security policy further includes determining and suggesting a list of compatible functionalities that require alternative security permissions and still enable proper execution of the application code.
  • 10. The computer implemented method of claim 9, wherein the suggested compatible functionalities do not limit the application's functionalities.
  • 11. The computer implemented method of claim 9, wherein the suggested compatible functionalities do limit at least one application functionality without rendering the application unusable.
  • 12. A computer implemented system for determining a security policy based on execution of application code, comprising a dynamic recorder for logging application execution data for an application;a dynamic code analyzer for creating a security policy based on one or more security related events of the application from the logged execution data; anda security policy module for determining whether an existing security policy matches the security policy, if yes, assigning the matching existing security policy to the application;if not, suggesting a custom security policy for the application.
  • 13. A computer implemented system of claim 12, wherein the new security policy corresponds to an existing security policy.
  • 14. A computer implemented method of claim 12, wherein logged application execution data comprises one or more recorded instances of application execution.
  • 15. A computer implemented system of claim 12, wherein the assigned matching existing security policy is a minimal superset to the security policy.
  • 16. The computer implemented system of claim 12, wherein the one or more security related events include at least one of: evidence of the executing code, XML representation of requested permissions, results of permission request, or attempted access to secure resources.
  • 17. The computer implemented system of claim 16, wherein secure resources include shared directories, assembly cache, and code libraries.
  • 18. The computer implemented system of claim 12, wherein the logged application execution data is stored in memory.
  • 19. The computer implemented system of claim 12, wherein the at least one security event is a request for access to a resource.
  • 20. The computer implemented system of claim 12, wherein the step of suggesting a custom security policy further includes determining and suggesting a list of compatible functionalities that require alternative security permissions and still enable proper execution of the application code.
  • 21. The computer implemented method of claim 20, wherein the suggested compatible functionalities do not limit the application's functionalities.
  • 22. The computer implemented method of claim 20, wherein the suggested compatible functionalities do limit at least one application functionality without rendering the application unusable.