Software Monitoring in Theory and Practice

Lujo Bauer    Jay Ligatti    David Walker


A run-time program monitor is a process that executes in parallel with an unknown and untrusted application program and examines actions (e.g., method calls or state updates) from the application's instruction stream. If the sequence of program actions deviates from a specified security policy, the monitor transforms the sequence or terminates the program. Monitors may thus be used to implement any number of common tasks including auditing and logging of program actions, access control, resource monitoring, denial of service prevention, visualization of program execution, online program transformation, and others.

The Polymer project studies all facets of the theory, design, and implementation of software program monitors and monitor-specification languages. We are particularly interested in understanding the range of security properties that can be enforced by program monitors and using monitors to provide secure and reliable platforms for executing untrusted (mobile) code. We have developed an extension of Java that facilitates the implementation of complex program monitors. Our language, called Polymer, provides high-level constructs for specifying complex policies as compositions of simpler policy modules.


Apr 10 2010: Download polymer-v.0.8.2.tgz (minor bug fixed in a script)

Oct 18 2008: Instructions for compiling Polymer with JDK 6.

Mar 19 2007: Download polymer-v.0.8.1.tar.gz (build scripts have been improved over version 0.8)

Feb 28 2007: An alternative Polymer package is available at Tine Verhanneman's webpage for the "Practicum Ontwerpen van Veilige Software" (Developing Secure Software) course at Katholieke Universiteit Leuven.

Nov 1 2005: Download polymer-v.0.8.tar.gz


Secure Internet Programming Home

Last updated 2010.04.10.