pilation process. Our new proposition constitutes of
developing AOP weaving capabilities for Gimple to
be integrated into the GCC compiler. These features
allow to compile security concerns and inject them
into the Gimple tree of a program during the GCC
compilation procedures. Beside, this approach is
the first attempt towards adopting the aspect-oriented
concept on Gimple and exploiting this intermediate
representation to allow advising an application writ-
ten in a specific language with security code written
in a different one.
The remainder of this paper is organized as fol-
lows. In Section 2, we review the contributions in the
field of AOP and AOP for securing software. After-
wards, in Section 3, we describe the new approach
where weaving is performed on the Gimple represen-
tation of a software by adopting the aspect-oriented
style. In Section 4, we present the experimental re-
sults of developing a case study for securing the con-
nections of a client application and using the weaving
features implemented in the extended GCC for inject-
ing the required security concerns. Finally, we offer
concluding remarks in Section 5.
2 BACKGROUND AND RELATED
WORK
The proposed approach is based on AOP and target
security concerns. As such, we present in the sequel
a brief summary on AOP and an overview on the ap-
proaches related to the contribution of this paper.
2.1 Aspect-oriented Programming
AOP depends on the principle of "Separation of Con-
cerns", where issues that crosscut the application are
addressed separately and encapsulated within aspects.
There are many AOP languages that have been de-
veloped which are programminglanguage-dependent.
AspectJ (Kiczales et al., 2001) built on top of the Java
programming language and AspectC++ (Spinczyk
et al., 2002) built on top of the C++ programming
language are the most prominent ones. The approach,
which is adopted by most of the AOP languages, is
called the pointcut-advice model. The fundamental
concepts of this model are: join points, pointcuts, and
advices.
Each atomic unit of code to be injected is called
an advice. It is necessary to formulate where to inject
the advice into the program. This is done by the use of
a pointcut expression, which its matching criteria re-
stricts the set of the join points of a program for which
the advice will be injected. A join point is a princi-
pled point in the execution of a program. At the heart
of this model, is the concept of an aspect, which em-
bodies all these elements. Finally, the aspect is com-
posed and merged with the core functionality modules
into one single program. This process of merging and
composition is called weaving, and the tools that per-
form such process are called weavers.
2.2 AOP Approaches for Security
Injection
Most of the contributions (Bodkin, 2004; DeWin,
2004; Huang et al., 2004; Shah, 2003) that explore
the usability of AOP for integrating security code into
applications are presented as case studies that show
the relevance of AOP languages for application se-
curity. They have focused on exploring the useful-
ness of AOP for securing software by security experts
who know exactly where each piece of code should
be manually injected. None of them have proposed
an approach or methodology for systematic security
hardening with features similar to our proposition.
We present in the following an overview on these con-
tributions.
Cigital labs has proposed an AOP language called
CSAW (Shah, 2003), which is a small superset of C
programming language dedicated to improve the se-
curity of C programs. De Win, in his Ph.D. thesis
(DeWin, 2004), has discussed an aspect-oriented ap-
proach that allows the integration of security aspects
within applications. It uses AOP concepts to spec-
ify the behavior code to be merged in the applica-
tion and the location where this code should be in-
jected. In (Bodkin, 2004), Ron Bodkin has surveyed
the security requirements for enterprise applications
and described examples of security crosscutting con-
cerns, with a focus on authentication and authoriza-
tion. Another contribution in AOP security is the Java
Security Aspect Library (JSAL), in which Huang et
al. (Huang et al., 2004) has introduced and imple-
mented, in AspectJ, a reusable and generic aspect
library that provides security functions. Masuhara
and Kawauchi (Masuhara and Kawauchi, 2003) have
defined the dataflow pointcut, which identifies join
points based on the origin of values.
3 WEAVING METHODOLOGY
The initial proposition, which is detailed in (Mourad
et al., 2007; Mourad et al., 2008), is composed of
a framework, a language called SHL and a com-
piler for securing software in a systematic way. SHL
TOWARDS LANGUAGE-INDEPENDENT APPROACH FOR SECURITY CONCERNS WEAVING
461