Each assembly has a set of corresponding grants. If an
assembly needs to execute a method that uses other assemblies, it requests the
.NET runtime for permission to execute. This process is called Security Stack
Walk. According to MSDN, Security stack walk is the process of examining the
permissions of each caller in the stack and determining whether the permission
being demanded has been granted to each caller. If a caller that does not have
the demanded permission is found, the security check fails and a
SecurityException is thrown.