Industrial control systems (ICSs) are types of cyber-physical systems in which programs, written in languages such as ladder logic or structured text, control industrial processes through sensing and actuating. Given the use of ICSs in critical infrastructure, it is important to test their resilience against manipulations of sensor/actuator inputs. Unfortunately, existing methods fail to test them comprehensively, as they typically focus on finding the simplest-to-craft manipulations for a testing goal, and are also unable to determine when a test is simply a minor permutation of another, i.e. based on the same causal events. In this work, we propose a guided fuzzing approach for finding 'meaningfully different' tests for an ICS via a general formalisation of sensor/actuator-manipulation strategies. Our algorithm identifies the causal events in a test, generalises them to an equivalence class, and then updates the fuzzing strategy so as to find new tests that are causally different from those already identified. An evaluation of our approach on a real-world water treatment system shows that it is able to find 106% more causally different tests than the most comparable fuzzer. While we focus on diversifying the test suite of an ICS, our formalisation may be useful for other fuzzers that intercept communication channels.
翻译:工业控制系统(ICS)是网络物理系统的类型,在这些系统中,以阶梯逻辑或结构化文字等语言书写的程序通过感测和激活来控制工业过程。鉴于在关键基础设施中使用ICS,重要的是要测试其抗控感官/活化器投入的操纵。 不幸的是,现有方法未能全面测试这些系统,因为它们通常侧重于为测试目标寻找最简单到手动的操纵,并且也无法确定测试是什么时候仅仅是另一个测试的微小变异,即根据同样的因果关系事件。在这项工作中,我们提出一种有指导的模糊方法,通过传感器/活化器操纵战略的一般正规化,为ICS找到“意为不同”的测试。我们的算法在测试中确定了因果关系事件,将其概括到一个等效类,然后更新模糊战略,以便找到与已经查明的测试有因果关系的新测试。我们对现实世界水处理系统所采用的方法的评估表明,它能够找到比最具有可比性的正式测试渠道更具有因果关系的106%的测试。我们的重点可能是其它具有可比性的测试系统。