Proceedings of the 19th ACM Conference on Computer and Communications Security (CCS 2012); pages 145-156; Raleigh, North Carolina; October 16-18, 2012.
When servers manage resources on behalf of multiple, mutually-distrusting clients, they must mediate access to those resources to ensure that each client request complies with an authorization policy. This goal is typically achieved by placing authorization hooks at appropriate locations in server code. The goal of authorization hook placement is to completely mediate all security-sensitive operations on shared resources.
To date, authorization hook placement in code bases, such as the X server and postgresql, has largely been a manual procedure, driven by informal analysis of server code and discussions on developer forums. Often, there is a lack of consensus about basic concepts, such as what constitutes a security-sensitive operation.
In this paper, we propose an automated hook placement approach that is motivated by a novel observation---that the deliberate choices made by clients for objects from server collections and for processing those objects must all be authorized. We have built a tool that uses this observation to statically analyze the server source. Using the X server and postgresql as real-world examples, we show that the hooks placed by our method are just as effective as hooks that were manually placed over the course of years while greatly reducing the burden on programmers.
DOI: [ 10.1145/2382196.2382215 ]