sources such as reading from a database. In addition,
there might be the case where multiple sensitive data
are provided as input, the monitoring of multiple sets
of traces is then required, which can turn to be too
expensive, and may lead to loss of precision.
In their work ”Detecting Temporal Logic Pred-
icates in Distributed Programs Using Computation
Slicing” (Sen and Garg, 2003), Alper Sen and Vijay
K.Grag adopted an approach that models the possible
executions of the program in finite traces of events,
and performs ”computational slicing”, that is, slicing
with respect to a global predicate. Their approach is
based on the dynamic behavior of the program, which
requires a sufficient number of test cases and is quite
time-consuming, yet it cannot ensure a verification of
the entire set of paths of the program to analyze.
Aora¨ı plugin (Stouls and Prevosto, ) provides the
means to automatically annotate C programs with
LTL formulas that translate required properties. The
tool provides the proofs that the C program behav-
ior can be described by an automaton. The mapping
between states and code instructions is made based on
the transition properties that keep track of the pre- and
post- conditions of the methods invocation; those con-
ditions refer to the set of authorized states respectively
before and after the method call. The tool is only fo-
cused on the control dependencies between method
calls, and the analysis is not extended to the data level.
PIDGIN (Andrew et al., 2015) introduces an ap-
proach similar to our work. The authors propose the
use of PDGs to verify security guidelines. The speci-
fication and verification of security properties rely on
a custom PDG query language that serves to express
the policies and to explore the PDG and verify satisfi-
ability of the policies. The parameters of the queries
are labels of PDG, which supposes that the developer
is fully aware of the complex structure of PDGs, iden-
tify the sensitive information and the possible sinks
they might leak to. PIDGIN limits the verification to
the paths between sinks and sources, however, there
might be information leakage that occurs outside this
limited search graph. The authors do not provide the
proof that their specification is formally valid. It is not
also explained how the feedback will be presented to
the developer, or how we might be guided through the
correction phase.
8 CONCLUSION AND FUTURE
WORK
We presented in this paper a first proof-of-concept re-
garding the feasibility of our approach that aims at ex-
tending the guidelines verification and validation on
the different phases of the software development life-
cycle. We proposed a first attempt to fill the gap of
the formal verification of guidelines provided in in-
formal way. We stressed the difficulty encountered
when the security guideline involves dependent infor-
mation flows that can’t be specified separately. This
requires security expertise to specify the dependent
information flows. We make the strong assumption
that the security expert extracts the key concepts from
the guidelines textual descriptions and builds upon
them the formulas using the MCL formalism. Our
framework makes use of this specification to carry out
the model checking on the Labeled Transition System
we built from the Program Dependence Graph that we
have augmented with details such as the customized
annotations and the implicit dependencies.
The verification phase output indicates whether
the guideline is met, or it is violated, and the viola-
tion traces are returned. Using this output, we will be
able to provide a precise and useful feedback to the
developer to understand the source of the violation,
and possibly how to fix it. Future work includes the
representation of the model checking output on the
Program Dependence Graph, and on the code level
in the Integrated Development Environment. We aim
also at covering a wider range of security guidelines,
hence to extend the Security Knowledge Base in or-
der to capture more security concepts, and possibly,
to cover different programming languages.
REFERENCES
Aderhold, M., Cu?llar, J., Mantel, H., and Sudbrock, H.
(2010). Exemplary formalization of secure coding
guidelines. Technical report, TU Darmstadt and
Siemens AG.
Akeel, F., Salehi Fathabadi, A., Paci, F., Gravell, A., and
Wills, G. (2016). Formal modelling of data integra-
tion systems security policies. Data Science and En-
gineering, pages 1–10.
Andrew, J., Lucas, W., and Scott, M. (2015). Exploring
and enforcing security guarantees via program depen-
dence graphs. PLDI 2015 Proceedings of the 36th
ACM SIGPLAN Conference on Programming Lan-
guage Design and Implementation, pages 291–302.
Arnold, A. (1994). Finite transition systems. Semantics of
communicating sytems. Prentice-Hall. ISBN 0-13-
092990-5.
CERT. Do not allow sensitive information to leak outside a
trust boundary.
CERT. Sei cert oracle coding standard for java.
Chen, Z., editor (2011). Specification and Management
of Security Requirements for Service-Based Systems.
Proquest, Umi Dissertation Publishing.