Monday, April 18th, 2016 at 12:00 PM in Rice 242
Advisor & Committee Chair: Westley Weimer
Committee Members: Baishakhi Ray
Title: N-Prog: A Framework for Proactive Coarse-Grained Diversity
Software diversity contributes to the resilience of program deployments, protecting against both unanticipated changes in the environment and targeted attacks. This idea, known as N-variant systems, allows executing software systems to detect and protect against certain classes of attacks by, for example, randomizing memory layouts. N-variant systems execute multiple versions of a program in parallel, using a monitor to check whether the outputs of the different versions ever diverge. Earlier N-variant efforts require semantics-preserving transformations, and thus cannot protect against logical errors in the original program.
We present N-Prog, an extension of this approach, which generates coarse-grained transformations of source code, including those that are small semantic variants of the original program. N-Prog uses two mutation operators to produce candidate transformations, evaluates each mutated program separately, and then combines them in clusters to increase the diversity of each variant. The resulting set of n program variants detects defects both in the original program and in its test suite. We evaluate N-Prog on 1,141 defect scenarios from 16 benchmark programs totaling over 1.5 million lines of code and guarded by over 30,000 tests, finding that N-Prog detects 887 (77%) of these program defects.