81 research outputs found
Combining Static and Dynamic Analysis for Vulnerability Detection
In this paper, we present a hybrid approach for buffer overflow detection in
C code. The approach makes use of static and dynamic analysis of the
application under investigation. The static part consists in calculating taint
dependency sequences (TDS) between user controlled inputs and vulnerable
statements. This process is akin to program slice of interest to calculate
tainted data- and control-flow path which exhibits the dependence between
tainted program inputs and vulnerable statements in the code. The dynamic part
consists of executing the program along TDSs to trigger the vulnerability by
generating suitable inputs. We use genetic algorithm to generate inputs. We
propose a fitness function that approximates the program behavior (control
flow) based on the frequencies of the statements along TDSs. This runtime
aspect makes the approach faster and accurate. We provide experimental results
on the Verisec benchmark to validate our approach.Comment: There are 15 pages with 1 figur
Preface
This volume contains the revised version of a selection of papers presented at the
B 2011 Workshop, a satellite event of the 17th International Symposium on Formal
Methods (FM 2011). It took place in Limerick, Ireland, on 21st June, 2011
Formal Analysis of Security Properties on the OPC-UA SCADA Protocol
International audienceIndustrial systems are publicly the target of cyberattacks since Stuxnet [1]. Nowadays they are increasingly communicating over insecure media such as Internet. Due to their interaction with the real world, it is crucial to prove the security of their protocols. In this paper, we formally study the security of one of the most used industrial protocols: OPC-UA. Using ProVerif, a well known cryptographic protocol verification tool, we are able to check secrecy and authentication properties. We find several attacks on the protocols and provide countermeasures
Output-sensitive Information flow analysis
Constant-time programming is a countermeasure to prevent cache based attacks
where programs should not perform memory accesses that depend on secrets. In
some cases this policy can be safely relaxed if one can prove that the program
does not leak more information than the public outputs of the computation. We
propose a novel approach for verifying constant-time programming based on a new
information flow property, called output-sensitive noninterference.
Noninterference states that a public observer cannot learn anything about the
private data. Since real systems need to intentionally declassify some
information, this property is too strong in practice. In order to take into
account public outputs we proceed as follows: instead of using complex explicit
declassification policies, we partition variables in three sets: input, output
and leakage variables. Then, we propose a typing system to statically check
that leakage variables do not leak more information about the secret inputs
than the public normal output. The novelty of our approach is that we track the
dependence of leakage variables with respect not only to the initial values of
input variables (as in classical approaches for noninterference), but taking
also into account the final values of output variables. We adapted this
approach to LLVM IR and we developed a prototype to verify LLVM
implementations
Filtrage et vérification de flux métiers dans les systèmes industriels
National audienceDe plus en plus d'attaques informatiques contre les systèmes indus-triels sont présentées par les médias. Ces systèmes tendent à devenir géo-graphiquement distribués et à communiquer via des réseaux vulnérables tels qu'Internet. Régissant de nos jours des domaines tels que la production et la distribution d'énergie, l'assainissement des eaux ou le nucléaire, la sécurité des systèmes industriels devient une priorité pour les gouver-nements. L'une des difficultés de la sécurisation des infrastructures in-dustrielles est la conciliation des propriétés de sécurité avec les attendus métiers en terme de flux. Pour ce faire, nous regardons comment filtrer les messages en tenant compte des aspects métiers. Ensuite, nous nous intéressons à la vérification formelle des propriétés des protocoles de communication industriels. Enfin nous proposons une approche Model-Based Testing permettant de générer des attaques informatiques contre des sys-tèmes industriels
Filtrage et vérification de flux métiers dans les systèmes industriels
National audienceDe plus en plus d'attaques informatiques contre les systèmes indus-triels sont présentées par les médias. Ces systèmes tendent à devenir géo-graphiquement distribués et à communiquer via des réseaux vulnérables tels qu'Internet. Régissant de nos jours des domaines tels que la production et la distribution d'énergie, l'assainissement des eaux ou le nucléaire, la sécurité des systèmes industriels devient une priorité pour les gouver-nements. L'une des difficultés de la sécurisation des infrastructures in-dustrielles est la conciliation des propriétés de sécurité avec les attendus métiers en terme de flux. Pour ce faire, nous regardons comment filtrer les messages en tenant compte des aspects métiers. Ensuite, nous nous intéressons à la vérification formelle des propriétés des protocoles de communication industriels. Enfin nous proposons une approche Model-Based Testing permettant de générer des attaques informatiques contre des sys-tèmes industriels
Génération systématique de scénarios d'attaques contre des systèmes industriels
National audienceLes systèmes industriels (SCADA) sont la cible d'attaques informatiques depuis Stuxnet [4] en 2010. De part leur interaction avec le mode physique, leur protection est devenue une priorité pour les agences gouvernementales. Dans cet article, nous proposons une approche de modélisation d'attaquants dans un système industriel incluant la production automatique de scénarios d'attaques. Cette approche se focalise sur les capacités de l'attaquant et ses objectifs en fonc-tion des protocoles de communication auxquels il fait face. La description de l'approche est illustrée à l'aide d'un exemple
Lazart: A Symbolic Approach for Evaluation the Robustness of Secured Codes against Control Flow Injections
International audienceIn the domain of smart cards, secured devices must be protected against high level attack potential [1]. According to norms such as the Common Criteria [2], the vulnerability analysis must cover the current state-of-the-art in term of attacks. Nowadays, a very classical type of attack is fault injection, conducted by means of laser based techniques. We propose a global approach, called Lazart, to evaluate code robustness against fault injections targeting control flow modifications. The originality of Lazart is twofolds. First, we encompass the evaluation process as a whole: starting from a fault model, we produce (or establish the absence of) attacks, taking into consideration software countermeasures. Furthermore, according to the near state-of-the-art, our methodology takes into account multiple transient fault injections and their combinatory. The proposed approach is supported by an effective tool suite based on the LLVM format [3] and the KLEE symbolic test generator [4]
- …