  The stack-based access control mechanism plays a fundamental role in the
security architecture of Java and Microsoft CLR (common language runtime). It
is enforced at runtime by inspecting methods in the current call stack for
granted permissions before the program performs safety-critical operations.
Although stack inspection is well studied, there is relatively little work on
automated generation of access control policies, and most existing work on
inferring security policies assume the permissions to be checked at stack
inspection points are known beforehand. Practiced approaches to generating
access control policies are still manually done by developers based on
domain-specific knowledges and trial-and-error testing. In this paper, we
present a systematic approach to automated generation of access control
policies for Java programs that necessarily ensure the program to pass stack
inspection. The techniques are abstract interpretation based context-sensitive
static program analyses. Our analysis models the program by combining a
context-sensitive call graph with a dependency graph. We are hereby able to
precisely identify permission requirements at stack inspection points, which
are usually ignored in previous study.
