Patent ID: 7743423

Claim:
A method implemented on a computing device having instructions stored on a computer-readable storage media and executable by a processor, to estimate security requirements needed to execute a managed code for a developer prior to an actual execution of the managed code, comprising: simulating the execution of all calls from an assembly to another assembly for all execution paths of one or more assemblies in the managed code, wherein the assembly comprises one or more files versioned and deployed as a unit, wherein the managed code is a managed shared library or an executable, wherein all managed code is contained within the one or more assemblies, wherein the execution of each assembly is statically simulated without actually running a corresponding managed code to simulate all possible calls and corresponding flow of argument data; finding a set of required permissions for each execution path by one or more simulated stack walks that each include a plurality of the assemblies, wherein each call in each execution path has a corresponding permissions set, wherein each assembly has one or more execution paths representing a different data and a control flow, and wherein the simulated stack walk comprises: entering an execution path corresponding to a static simulation of execution of the assembly; entering a public entry point of a method in the assembly; gathering a permission set for the method in the assembly; determining whether the method in the assembly calls another method in the assembly or in an another assembly; gathering a permission set for the another method called by the method in the assembly; and creating a union of the gathered permission sets; and deriving the security requirements for execution paths corresponding to the one or more assemblies by using the union of the gathered permission sets across the execution paths corresponding to the one or more assemblies, wherein the union estimates the security requirements that will be triggered against the one or more assemblies during the actual execution of the one or more assemblies and whether a security exception will be triggered during the actual execution.