CCIS | ECE | NU HOME
About the Institute
Organizations
People
Research Areas
Communication/Networks
Data Mining
Software and Architecture
Groups
Education
Courses
Other Resources
Contact Information
 
 Research Areas > Software and Architecture Security

The College of Computer and Information Science and the College of Engineering have active research programs in software and architecture security. Software security goes beyond communication security, network security and cryptographic security to address the issues of software and hardware vulnerabilities. The goal is to produce software execution that is less likely to be compromised by attackers. The faculty involved in this thrust include:

  • Kenneth Baclawski (CCIS)
  • Matthias Felleisen (CCIS)
  • David Kaeli (ECE)
  • Karl Lieberherr (CCIS)
  • Riccardo Pucella (CCIS)
  • Xinping Zhu (ECE)

Aspectual Security

Karl Lieberherr is working on treating security concerns as aspects. He is researching how to reduce vulnerabilities by writing software at a higher level of abstraction, avoiding the typical tangling that occurs.

We follow the motto: the closer the program is to a design, the easier it is to understand and the less likely it will contain design vulnerabilities. Making programs closer to a design is achieved by using better separation of concerns. Better separation of concerns means that first the concerns are properly separated and implemented as aspects AND second, the concern implementations (aspects) are loosely coupled so that a change to one aspect does not have too many repercussions on the other aspects. We achieve the loose coupling by using a generative approach. When one aspect changes, we regenerate code of other aspects, sometimes after small manual updates to those other aspects.

A theme we pursue is the investigation of security-specific aspect languages. We started our investigation with implementing different version of the Chinese Wall policy language. The goal of this approach is to study multiple policy languages and how the rules they contain crosscut the application code. This leads to interesting insights about safely deploying security policies and how to use aspect technology to safely inject the policy code at the right places in the application. A related project with the architecture group is elaborated on later in this thrust outline.

The security-specific aspect languages (SALs) not only address information security issues but also software security issues. For example, a SAL that is used in the context of web applications will enforce rules that guarantee that form changing attacks (e.g., price changing attacks), SQL attacks and cross-site scripting attacks can not happen. Our future work will explore collaborations of SALs. In the context of web applications, a SAL can be viewed as an application-level firewall programming tool. Code from a SAL is translated into code for a security gateway that checks HTTP requests and also code that is woven into clients demonstrating the cross-cutting features of the security concern.

An important topic in software security is to analyze security issues in the presence of aspects.On the one hand, aspect-oriented software development (AOSD) helps to better address security issues but on the other hand it also puts more tools into the hands of attackers. An important question is how to control AOSD so that it is safe.

The group also works in the space of general-purpose aspect languages and their application to software security. For example, AspectJ is a general-purpose aspect language that is useful for run-time monitoring of programs but also for static checking of programs with respect to security properties. However, AspectJ is not expressive enough for some problems, for example to detect buffer overflows easily. We are investigating the expressiveness of various kinds of selector languages to choose points in the execution of a program. In collaboration with Ravi Sundaram we evaluate the computational complexity of various problems/selector languages.

Computer Architecture

The Northeastern University Computer Architecture Research Laboratory (NUCAR) is presently supported on an NSF-funded project to develop architectural approaches to preventing malicious code attacks and accelerate anti-virus application execution.

In 1988, the Morris Worm Incident raised the awareness of the computing public to the potential impact of malicious software, spreading a worm that corrupted over 6000 computers (approximately 10% of all Internet users at that time). The Morris Worm gained access through Unix send mail, fingerd, rsh/rexec and weak passwords, using a buffer overflow. The Morris Worm Incident prompted the creation of the Computer Emergency Response Team (CERT), which has tracked computer security and vulnerability issues. We have studied the CERT vulnerability incident reports and have used this information to guide our current approach to remedy these security holes.

More recently, the Code Red and Nimbda worms used buffer overflow to compromise Microsoft's Internet Information Server (IIS). Buffer overflow-based attacks have been the most commonly exploited form of security vulnerability, as reported by CERT. In 1998, 9 of 13 CERT advisories were due to buffer overflows, and in 1999 more than half of the advisories were due to buffer overflows.

The research we are pursuing will both complement and improve upon the current virus protection technology available. We are developing novel architectural features that will dynamically detect viruses using hardware, and we are proposing to develop new architectural features to accelerate the execution of anti-virus softwares. The goals of our present research are:

 •  Develop new architectural features that will aid in the runtime detection of viruses.
 •  Propose a multi-threaded microarchitecture that allows for the transparent detection of and recovery from viruses.
 •  Produce a characterization of the most frequently used commercial anti-virus softwares.
 •  Propose new architectural features that can accelerate the execution of anti-virus software.

We have published three papers describing this work. We have also started anew workshop that focuses on Architectural Support for Security and Anti-virus (WASSA), which was held in October 2004 with the ACM ASPLOS Conference

Languages and Ontology-based Security

Ken Baclawski is the leader of an NSF project entitled Achieving Interoperability of Emergency Response Teams Using Model Driven Architecture and Software Defined Radios. This project ad- dresses a number of software security issues. The overall goal of this project is to develop a Proof of Concept that: demonstrates optimized dynamic interoperability between different emergency response teams and different unattended sensors, specifies the performance and the Quality of Service measures, and establishes approaches to verification of conformance to analytical standards. which addresses software security issues.

The work on software contracts by Prof. Matthias Felleisen is important for checking software vulnerabilities because contracts can detect mismatches and assign blame properly. The work by Wand and Clinger on provably secure compilers is important for software security because compilers can be hidden sources of Trojan horses. Felleisen is developing a new programming language that supports more powerful interfaces. Using such a programming language will lead to fewer software vulnerabilities because the programming language will do more checking.

Virtual Machines

There exists a broad class of vulnerabilities that are difficult to remedy mainly because they appear to be safe upon initial download and/or inspection, but exhibit malicious behavior at some later time. Two examples of this kind of attack include Trojan horses and back doors. We have studied CERT reports associated with Trojan horses and have tried to develop a defense against such attacks.

We are proposing to develop a virtual machine approach to detect and guard against this class of attacks. Some examples of the characteristic behavior we are trying to detect include:

1. Control flow that jumps to frozen code (i.e., code accessed for the first time); if so, consider the following:

  • is the control flow dependent on user supplied or remote data?
  • is there an 'if' argument hard-coded in the binary?

2. Hard-coded data in the binary; if so, consider the following:
  • does the data refer to a file name?
  • does the data refer to an IP addresses?

3. self modifying code.

The software and architecture groups have joined forces to address this class of vulnerabilities.The objectives of this joint effort include:

 •  Design a policy language that can be used to specify levels of trust associated with an application (initially we will utilize Demeter AspectJ in this work).
 •  Develop a static compilation environment (initially, based on the Microsoft Phoenix Compiler and Tools Framework) to identify potential security problems in downloaded source.
 •  Implement a novel runtime environment (just-in-time profiler) that can identify potential malicious behavior.
 •  Implement this system in the IBM Jikes RVM. An implementation will enable us to evaluate how well we can guard against Trojan horse attacks by dynamically monitoring runtime behavior.

In this work we intend to utilize Aspect-Oriented Programming (AOP) to facilitate our run-time profiling framework. AOP is a fairly recent programming paradigm that allows cross-cutting concerns to be modularized . This model fits well with our requirements to perform behavior monitoring. We have utilized AOP in previous work for monitoring program control flow and heap accesses. The work on heap monitoring (for adaptive garbage collection) included an implementation with AspectJ in the Jikes RVM.

In this project we will develop both static and dynamic access control language and mechanisms that monitor program access behavior. The goal is to enable the user to access safe regions of the system unfettered, while preventing an untrusted application to access sensitive information or perform potentially dangerous actions.


 

202 WVH • 360 Huntington Avenue • Boston, MA 02115 • Phone: (617) 373-5413