Software Security

How Should We Make Software Secure?

University of Washington, Microsoft Research, and Carnegie Mellon University Summer Institute

June 15–18, 2003

Home
Up
Attendees
Challenge Problems
Contact Information

Sunday, June 15

Overview of Institute [.ppt]
Jeannette Wing

Monday, June 16

Session I: Making Security Usable

Software and Security [.ppt]
Butler Lampson

Towards Speech-Generated Cryptographic Keys on Resource Contrained Devices [.pdf]
Mike Reiter

Abstract: Programmable mobile phones and personal digital assistants (PDAs) with microphones permit voice-driven user interfaces in which a user provides input by speaking. In this talk, we summarize our efforts to exploit this capability to generate strong, repeatable cryptographic keys on such devices from a spoken passphrase. Rather than deriving the cryptographic key from merely the passphrase that was spoken---which would constitute little more than an exercise in automatic speech recognition---we strive to generate a substantially stronger cryptographic key with entropy drawn both from the passphrase spoken and how the user speaks it. Moreover, the cryptographic key is designed to resist cryptanalysis even by an attacker who captures and reverse-engineers the device on which this key is generated. We describe some of the hurdles to achieving this on an off-the-shelf PDA bearing a 206 MHz StrongArm CPU and an inexpensive microphone. We also evaluate our approach using multiple data sets, one recorded on the device itself, to clarify the effectiveness of our implementation against various attackers.

This is joint work with Fabian Monrose, Qi Li, Dan Lopresti and Chilin Shi.

Disappearing Security [.pdf]
Dirk Balfanz

Abstract: The Ubiquitous Computing community has been touting the "disappearing computer" for some time now. What they mean is not that there should be no more computers. Rather, they believe that small, unobtrusive computers will be so ubiquitous (think smart wallpaper) that we won't even notice them. In my talk, I will argue that security mechanisms need to "disappear", in the same sense, for two reasons: First, to secure the "disappearing computer" we need to come up with novel, unobtrusive, security mechanisms. Second, "disappearing" security can actually make things more secure, because it gives users less opportunity to get things wrong. I will give some examples of such "disappearing" security mechanisms.

A Rant About Security UI [.ppt]
Dan Simon

Abstract: A set of underlying principles for security UI design will be arrogantly asserted, along with some pointedly illustrative examples and sarcastic critiques.

Session II: Language-Based Security

Attacks Against the Netscape Browser [.ppt]
Jim Roskind

Abstract: The Netscape Communicator client was deployed on millions of desktops.  It was also subject to attacks that attempted to gain unauthorized access to data on the client's computers, if not complete control of the computer. This talk discusses a broad range of examples of attacks that have been proposed against the Communicator application along with ways that the application evolved to block them.

Java Security: Lessons Learned [.ppt]
Li Gong

Abstract: This talk is a retrospective on the first couple of years' work on Java security at Sun, focusing on the total overhaul of the Java security architecture that occured during JDK 1.2. The talk covers the most difficult problems encountered, most critical "life-saving" features present, features that should have gotten in (JDK 1.2) but did not, features that should not but did, as well surprises and headaches.

SPADE and SABER: Improving Systems Through Error Reduction [.pdf]
Larry Koved

Abstract: IBM Research has a long history in programming languages and analysis. More recently, within the Network Security, Privacy and Cryptography department, we have been developing static analysis tools to enable analysis of middleware libraries, the Java runtime itself, parts of the Linux kernel, as well as other large software products. The goal is to reduce the number of coding defects in our own code, as well as in code written by our customers. This talk will briefly cover two of our projects:

SPADE: Security and Privacy Aware Development Environment – Initially this project was focused on Java, where we used the JaBA (JAva Bytecode Analysis) tool we developed to identify authorization requirements for very large Java applications. The tool also allows us to address other security-related questions, including reachability and accessibility of specific objects, as well as mutability of classes. We have subsequently applied the same analysis framework to the analysis of Linux kernel code (e.g., Linux Security Modules) to identify paths that are missing appropriate authorization calls.

SABER: Smart Analysis-Based Error Reduction – this projects analyzes large Web applications to identify errors that are due to violations of the J2EE specification and/or known "best practices". Some of these violations can result in security and/or privacy problems.

Security Types to the Rescue [.pdf]
David Wagner

Abstract: I describe how type systems can be used to improve software security in practice.

Static Analysis Techniques for Identifying Malicious Executables [.ppt]
Somesh Jha

Abstract: Specification-based monitoring compares a process's execution against that program's specification to detect intrusion attempts. Specifications constructed from static program analysis have historically traded precision for efficiency. We address this problem with our Dyck model, the first efficient statically-constructed context-sensitive specification. Our Dyck automaton models both the correct sequences of system calls that a program can generate and the stack changes occurring at function call sites. Experiments show the Dyck model to be an order of magnitude more precise than a context-insensitive finite state machine model. With null call squelching, a dynamic technique to bound cost, the Dyck model operates in time similar to the context-insensitive model.

Using Information Flow Policies to Construct Secure Distributed Systems [.pdf]
Andrew Myers

Abstract: Our critical infrastructure depends increasingly on the security of distributed computer systems. Despite many useful mechanisms for constructing these systems, such as  symmetric and public-key encryption, digital signatures, and access control, it is currently difficult to obtain assurance that the use of these mechanisms results in a system with the desired security properties.

This talk describes a metholodogy for building systems that are secure by construction. We start from a description of the information security requirements of the system and the computation to be performed. The code need not contain any explicit references to distribution. From this description, a special compiler back end automatically partitions and replicates the code and data of the program, generating a distributed system that enforces the security of the various principals that have a stake in it. This program partitioning approach has been implemented in a prototype system called Jif/split. Programs written in the security-typed language Jif can be automatically transformed into distributed code that uses a variety of conventional mechanisms, such as encryption, replication, and capabilities, as needed to satisfy security declarations in the program.

Tuesday, June 17

Session III: Distributed Systems and Network Security

Exploits of Large-Scale Web Services and Counter-Measures [sorry, slides will not be available]
Udi Manber

Abstract: In addition to the traditional security risks, web companies that provide large scale applications to millions of users face new kinds of exploits, which consist of a combination of several legitimate acts that together make up abusive behavior. I will give many examples of such exploits, discuss existing counter measures, and present open problems.

Security Issues with Names [.ppt, dialog transcript: What Dave Did]
Carl Ellison

Abstract: Security systems almost always involve one or more human beings. The system is enforcing the wishes of a human being (often called a "security policy"). Therefore, the human interface is an important element of such a system. Current practice, when dealing with other human beings (e.g., one human granting rights to another) or with companies, is to use human readable names as identifiers for these humans or companies. That practice turns out to be a major source of security weakness. This talk addresses one reason for that weakness, gives examples of the weakness and proposes several possible solutions to it.

``Humans are incapable of securely storing high-quality cryptographic keys, and they have unacceptable speed and accuracy when performing cryptographic operations. (They are also large, expensive to maintain, difficult to manage, and they pollute the environment. It is astonishing that these devices continue to be manufactured and deployed. But they are sufficiently pervasive that we must design our protocols around their limitations.)'' [Network Security / PRIVATE Communication in a PUBLIC World by Charlie Kaufman, Radia Perlman, & Mike Speciner (Prentice Hall 1995)]

Honeyd - A Virtual Honeypot Daemon [.html]
Niels Provos

Abstract: Honeypots are closely monitored network decoys serving several purposes: they can distract adversaries from more valuable machines, they can provide early warning of and response to new attacks and they allow in-depth examination of adversaries during and after exploitation of a honeypot. However, deploying physical honeypots is often time intensive and expensive as different operating systems require specialized hardware and every honeypot requires its own physical system. This talk presents Honeyd, a framework for virtual honeypots, that simulates virtual computer systems at the network level. To fool network fingerprinting tools, Honeyd simulates the networking stack of different operating systems and can provide arbitrary routing topologies and services for an arbitrary number of virtual systems. The Honeyd framework can help in many areas of system security; examples range from detecting worms and distracting adversaries to preventing the spread of spam email.

Security for Peer-to-Peer Networks [.pdf]
Dan S. Wallach

Abstract: Peer-to-peer (p2p) networking technologies have gained popularity as a mechanism for users to share files without the need for centralized servers. A p2p network provides a scalable and fault-tolerant mechanism to locate nodes anywhere on a network without maintaining a large amount of routing state. This allows for a variety of applications beyond simple file sharing. Examples include multicast systems, anonymous communications systems, and web caches. We survey security issues that occur in the underlying p2p routing protocols, as well as fairness and trust issues that occur in file sharing and other p2p applications. We discuss how techniques, ranging from cryptography, to random network probing, to economic incentives, can be used to address these problems.

Trustworthy Services from Untrustworthy Components: An Overview [.ppt]
Fred Schneider

Abstract: It is indeed possible to build a trustworthy system from untrustworthy components, but not by implementing the fault-tolerance and security separately. Separation of concerns just does not apply. This talk will therefore discuss the role of threshold cryptography and weak computing models in building fault-tolerant and secure services.

Session IV: Managing and Measuring Security

CERT Experience with Security Problems in Software [.pdf]
Tom Longstaff

Abstract: Longstaff will cover the current software security problems recently reported to the CERT/CC and will cover some of the research projects underway at the CERT Research Center to address a few of the root causes.

Inside Microsoft's Secure Windows Initiative [.ppt, .html]
Steve Lipner

Abstract: In this presentation, Michael will outline the security issues facing the software industry, and how Microsoft is changing its development process to accommodate evolving threats.

Session V: Worms

Network Worms: Research and Engineering Challenges [.ppt]
Stefan Savage

Abstract: It has been clear since 1998 that self-propagating code can quickly spread across a network by exploiting the vulnerabilities in a homogeneous infrastructure. However, in the last several the frequency and virulence of such "worm" epidemics has increased dramatically. Outbreaks such as CodeRed have infected hundreds of thousands of hosts in less than a day, while the recent Slammer/Sapphire worm probed an equivalent number of hosts in a matter of minutes. This talk focuses on the research and engineering challenges posed by building defenses against such worms. I will discuss the requirements that we currently understand, the technologies that are being developed to meet them, and the significant open problems left to be solved.

End-Point Counter-Worm Mechanism Using Automated Software Patching [.pdf]
Angelos Keromytis

Abstract: I will present an end-point, reactive mechanism to network worms that patches vulnerable software using a number of heuristics, guided by analysis of the worm's infection vector in a software sandbox. A preliminary analysis of the effectiveness of the mechanism indicates a success rate of 82% against 17 known vulnerable applications. Contrary to traditional security measures that typically terminate a targeted application, our approach ensures not only the safety but also the availability of vulnerable services. Furthermore, the performance overhead is minimal, since fixes are localized, "near" the vulnerability itself. Many challenges remain, such as determining the correctness of the patches application and dealing with other classes of software vulnerabilities.

Wednesday, June 18

Session VI: Computer Architecture and Bit-Level Security

NGSCB: Description, Applications, Security Model and Policy Implications [.ppt]
John Manferdelli

Abstract: I’ll discuss the general design and security model of the Next Generation Secure Computing Base including the hardware changes, software architecture and the important privacy and policy implications which governed its design. In addition, I’ll discuss its suitability as the foundation of a Trusted Computing Base for Credential based security in the style of Lampson, Abadi, Wobber and Rivest. If there’s enough time I’ll try and explain how anyone could change the name of a project from Palladium to NGSCB.

Enabling Trusted Software Integrity [.ppt]
Darko Kirovski

Abstract: Preventing execution of unauthorized software on a given computer plays a pivotal role in system security. The key problem is that although a program at the beginning of its execution can be verified as authentic, while running, its execution flow can be redirected to externally injected malicious code using, for example, a buffer overflow exploit. Existing techniques address this problem by trying to detect the intrusion at run-time or by formally verifying that the software is not prone to a particular attack.

We take a radically different approach to this problem. We aim at intrusion prevention as the core technology for enabling secure computing systems. Intrusion prevention systems force an adversary to solve a computationally hard task in order to create a binary that can be executed on a given machine. In this paper, we present an exemplary system |SPEF| a combination of architectural and compilation techniques that ensure software integrity at run-time. SPEF embeds encrypted, processor-specific constraints into each block of instructions at software installation time and then verifies their existence at run-time. Thus, the processor can execute only properly installed programs, which makes installation the only system gate that needs to be protected.

Originally presented at ASPLOS 2002 based on a paper by Darko Kirovski (Microsoft Research), Milenko Drinic (Microsoft Research), Miodrag Potkonjak (University of California, Los Angeles)

Making My Code Look Like Your Code [.pdf]
Christian Collberg

Abstract: In this talk I will discuss three types of attack on the intellectual property contained in software, and three corresponding technical defenses. A defense against malicious reverse engineering is obfuscation, a process that renders software unintelligible but still functional. A defense against software piracy is watermarking, a process that makes it possible to determine the origin of software. A defense against tampering is tamper-proofing, so that unauthorized modifications to software (for example to remove a watermark) will result in non-functional code.

I will also discuss the design of SandMark, our framework for studying the obfuscation, watermarking, and tamper-proofing of Java bytecode.

Session VII: Beyond Code

Privacy Architectures [.pdf]
Doug Tygar

Getting Past Buffer Overflows: Why Architecture is the Key to Software Security [.ppt]
Gary McGraw

Software Security for Open-Source Systems [.ppt]
Crispin Cowan

Abstract: Debate over whether open-source software development leads to more secure or less secure software has raged for years. Neither is intrinsically correct: open-source software gives both attackers and defenders greater power over system security. Fortunately, several security-enhancing technologies for open-source systems can help defenders improve their security. We survey and categorize some of these technologies.

RISE: Randomization Techniques for Software Security [.ppt]
Dawn Song

Abstract: Randomization is a powerful technique that can be used to hide system internal details and hence make it more difficult for the attacker to exploit system vulnerabilities. In this talk, we first discuss how to use randomization techniques to mitigate buffer overflows. We propose three methods for mitigating buffer overflows by using operating system randomization: randomization of system call mappings, randomization of global library entry points, and randomization of stack placement. These mechanisms are light weight. They increase the heterogeneity of systems and make it more difficult for attackers to exploit buffer overflow vunerabilities. We also discuss other applications of randomization techniques to improve system security.

Security and Software Engineering [.pdf]
Steve Bellovin

Abstract: Most security holes are due to buggy software. We discuss how standard software engineering techniques can help if viewed through a security-colored lens. In particular, security must be one of the criteria for dividing programs into modules.

Home | Attendees | Schedule | Challenge Problems | Contact Information

For problems or questions regarding this website contact wing@microsoft.com
Last updated: 04/03/03.