on underlying infrastructure to compose them together. Aspects allow to precisely and
selectively define and integrate security objects, methods and events within application,
which make them interesting solutions for many security issues [1–5]. However, AOP
was not initially designed to address security issues, which resulted in many short-
comings in the current technologies [6, 7]. We were not able to apply some security
hardening activities due to missing features. Such limitations forced us, when applying
security hardening practices, to perform programming gymnastics, resulting in addi-
tional modules that must be integrated within the application, at a definitive runtime,
memory and development cost.
As a result, the specification of new security related AOP primitives is becoming
a very challenging and interesting domain of research. In this context, we propose in
this paper AOP primitives that are needed for security hardening concerns, named ex-
portParameter and importParameter. They allow to pass parameters from one pointcut
to the other through the programs’ context-insensitive call graph. We find this feature
necessary because it is needed to perform many security hardening practices and none
of the existing AOP features can provide this functionality.
This paper is organized as follows: We first cast a quick glance at security harden-
ing and the problem that we address in Section 2. Afterwards, in Section 3, we define
parameter passing and show how parameter passing can be specified by an extension of
the existing AOP syntax for advices. Then, in Section 4, we present the methodology
of implementing the proposed primitives, as well as experimental results. We move on
to the related work in Section 5, and then conclude in Section 6.
2 Security Hardening
Software security hardening is any process, methodology, product or combination thereof
that is used to add security functionalities and/or remove vulnerabilities or prevent their
exploitation in existing software. Security hardening practices are usually applied man-
ually by injecting security code into the software. This task requires from the security
architects to have a deep knowledge of the code inner working of the software, which
is not available all the time. In this context, we elaborated in [8] an approach based on
aspect orientation to perform security hardening in a systematic way. The primary ob-
jective of this approach is to allow the security architects to perform security hardening
of software by applying proven solutions so far and without the need to have expertise
in the security solution domain. At the same time, the security hardening is applied in
an organized and systematic way in order not to alter the original functionalities of the
software. This is done by providing an abstraction over the actions required to improve
the security of the program and adopting AOP to build our solutions. The result of our
experimental results explored the usefulness of AOP to reach the objective of having
systematic security hardening. During our work, we have developed security harden-
ing solutions to secure connections in client-server applications, added access control
features to a program, encrypted memory contents for protection and corrected some
low-level security vulnerabilities in C programs. On the other hand, we have also con-
cluded the shortcomings of the available AOP technologies for security and the need to
124