Modern programming languages have little support for writing
secure software, making it all too easy to write programs with
exploitable vulnerabilities. In these lectures, we explore a
general technique based on type qualifiers that allows
programmers to write down, in their souce code, their intentions
with respect to security. We will describe how to mechanically
verify that annotated code adheres to the policy. We will
discuss the theoretical foundations and practical implementation
issues. As a particular example, we show how to use type
qualifiers to find format-string vulnerabilities in widely-
deployed C programs and to find other security vulnerabilites in
the Linux kernel. we will also look at alias analysis, another
important program analysis problem, and show how a must-alias
analysis system corresponds to a system for statically checking
access control. This series of lectures will discuss the
requirements, protocols, and components of network security
software on the Internet. Topics will include