Certification through auditing allows to ensure that critical embedded systems are secure. This entails reviewing their critical components and checking for dangerous execution paths. This latter task requires the use of specialized tools which allow to explore and replay executions but are also difficult to use effectively within the context of the audit, where time and knowledge of the code are limited. Fault analysis is especially tricky as the attacker may actively influence execution, rendering some common methods unusable and increasing the number of possible execution paths exponentially. In this work, we present a new method which mitigates these issues by reducing the number of fault injection points considered to only the most relevant ones relatively to some security properties. We use fast and robust static analysis to detect injection points and assert their impactfulness. A more precise dynamic/symbolic method is then employed to validate attack paths. This way the insight required to find attacks is reduced and dynamic methods can better scale to realistically sized programs. Our method is implemented into a toolchain based on Frama-C and KLEE and validated on WooKey, a case-study proposed by the National Cybersecurity Agency of France.
翻译:通过审计进行验证,可以确保关键嵌入系统的安全,这需要审查关键部件和检查危险的执行路径,后一项任务需要使用专门工具,允许探索和重复处决,但在审计中也难以有效使用,因为时间和对代码的了解有限,过失分析尤其困难,因为攻击者可能积极影响执行,使一些通用方法无法使用,并指数性地增加可能的执行路径数量。在这项工作中,我们提出了一个新方法,通过减少与某些安全属性相比仅与某些安全属性最相关的错误注入点的数量来缓解这些问题。我们使用快速和有力的静态分析,以探测注射点,并表明其影响性。然后采用更精确的动态/声波方法来验证攻击路径。通过这种方法,寻找攻击所需的洞察力会减少,动态方法可以更好地推广到现实规模的方案。我们的方法被应用到一个基于Frama-C和KLEEE的工具链中,并在WooKey上验证,这是法国国家网络安全局提出的案例研究。</s>