관리 메뉴

개발자비행일지

RVFUZZER: Finding Input Validation Bugs in Robotic Vehicles ThroughControl-Guided Testing 논문 리딩2 본문

카테고리 없음

RVFUZZER: Finding Input Validation Bugs in Robotic Vehicles ThroughControl-Guided Testing 논문 리딩2

Cyber0946 2020. 2. 19. 17:28

#개인 학습용입니다.

 

Abstract

Robotic vehicles (RVs) are being adopted in a variety of application domains. Despite their increasing deployment, many security issues with RVs have emerged, limiting their wider deployment. In this paper, we address a new type of vulnerability in RV control programs, called input validation bugs, which involve missing or incorrect validation checks on control parameter inputs. Such bugs can be exploited to cause physical disruptions to RVs which mady result in mission failures and vehicle damages or crashes. Furthermore attacks exploiting such bugs have a very small footprint: just one innocent-looking ground control command, requiring no code injection, control flow hijacking or sensor spoofing. To prevent such attacks, we propose RVFUZZER, a vetting system for finding input validation bugs in RV control programs  through control guided input mutation. The key insight behind RVFUZZER is that the RV control model, which is the generic theoretical model for a broad range of RVs, provides helpful semantic guidance to improve bug-discovery accuracy and efficiency.Specifically, RVFUZZER involves a control instability detector that detects control program misbehavior, by observing (simulated) physical operations of the RV based on the control model. In addition, RVFUZZER steers the input generation for finding input validation bugs more efficiently, by leveraging results from the control instability detector as feedback. In our evaluation of RVFUZZER on two popular RV control programs, a total of 89 input validation bugs are found, with 87 of them being zero-day bugs.

#밑줄 친 부분 중 feed 백을 다시 input으로 사용한다는 말과 model 이 있다는 말이 state기반의 model-checking을 사용한 것 같다는 추측이 든다.

로봇운송체들은 많은 분야에서 다양하게 적용되고 있으나, 증가하는 보안 문제들로 인해서 배포의 영역을 제한하고 있다. 이 논문에서는 RV 제어 프로그램의 새로운 유형의 취약점을 찾기 위해서 매개변수를 빼먹거나, 올바르지 않은 입력값을 사용해서 의도적, 비의도적 권한상승 및 침투가 가능한지 확인한다. 이런 버그들은 로봇운송체들의 물리적인 중단을 야기하며 이는 운송체의 손상이나 충돌 또는 미션의 실패로 이어진다. 게다가 이런한 버그를 이용한 공격은 풋프린트가 매우 작아서 찾기 어렵다.  공격은 코드 주입, 제어 흐름 하이재킹 또는 센서 스푸핑이 필요 없이 단순히 지상 제어 명령의 입력만으로 수행된다. 우리는 이러한 공격을 방지하기 위해 RVFUZZER를 제안한다. 이 Tool은  RV 제어 프로그램에 돌연변이 입력 값을 통해서 이를 입력 검증을 하기 위한 베팅 시스템이다. RVFUZZER 연구는 광범위한 RV에 대한 특정 모델이 아닌 일반적인 이론적 모델에 대해서 RV 제어 모델을 대상으로 한 버그 발견의 정확도와 효율성을 높이는데 semantic 차원에서 지침을 제공해준다는 것이다. 구체적으로, RVFUZZER는 제어 모델로 시뮬레이션 되는 물리 동작을 통해 제어 프로그램의 불안정성을 탐지하는 검출기를 포함한다.  또한 RVFUZZER는 제어 불안정성 검출기의 결과를 피드백으로 활용하여 입력 검증 버그를보다 효율적으로 찾기 위해 입력 생성을 조정한다. RV Fuzeer를 널리 사용되는 두 가지 RV 제어 프로그램에 대해 적용하여 평가했을 때, 총 89 개의 유효한 입력 버그가가발견되었으며 그 중 87 개는 제로 데이 버그였다.

RVFUZZER Design

In this section, we present the design of RVFUZZER. We first give an overview of RVFUZZER’s architecture and then present detailed design of two key components of RVFUZZER: (1) the control-guided instability detector that monitors the vehicle’s control state to detect controller malfunction and (2) the control-guided input mutator that generates control program inputs for efficient program testing.

이 섹션에서는 RVFUZZER의 설계에 대해 서술한다. 먼저 RVFUZZER의 아키텍처에 대한 개요를 제공 하고, 그 다음 (1) RV의 제어 상태를 모니터링하여 컨트롤러 오작동을 감지하는 제어 불안정성 검출기 그리고 (2) 제어 유도 입력 오류 검출을 위한 효율적인 프로그램 테스트를 위한 뮤테이션 생성기에 대해 말한다. 

Overview

RVFUZZER is designed to (1) detect physical instability of the RV during testing and (2) generate test inputs iteratively to achieve high testing efficiency and coverage. 

 

Fig. 3 presents an overview of RVFUZZER, which consists of four main components: a GCS program, the subject control program, a simulator, and a control-guided tester – the core component of RVFUZZER. The roles of the first three components are as follows: the GCS software is responsible for issuing RV control parameter-change commands; the subject control program, as the testing target, controls the operations of the (simulated) RV; and the simulator emulates the physical vehicle and its operating physical environment. We note that (1) the GCS and RV control programs are from real-world GCS and RV; and (2) our simulators [7, 8] are widely adopted for robotic vehicle design and testing.

RVFUZZER’s control-guided tester consists of two submodules(1) control instability detector and (2) controlguided input mutator.During testing, the control instability detector detects non-transient physical disturbances of the target RV (e.g., crash and deviation), as indication of control program execution anomaly caused by an input validation bug. The control-guided input mutator is a feedback-driven input mutator for efficient mutation of control parameter and environmental factor values. Using the results of the control instability detector as feedback, the mutator adaptively mutates control parameter values via a well-defined RV control interface (i.e., GCS commands created and issued by the GCS software). In addition, it mutates environmental factors (e.g., wind) by re-configuring the simulator.

RV Fuzzer는 앞서 언급했듰이 물리적인 불안정성에 대한 검출, 그리고 테스트 효율과 커버리지가 더 좋은 입력 검출을 생성하기위해 설계 되었다. Fig3는 RV Fuzzer의 개요이다. 이는 4개의 핵심 구성요소로 되어있다. 먼저 GCS program, 그리고 대상이되는 control program, 시뮬레이터, 그리고 ccontrol-guided tester이다. 이때, control-guided-tester가 핵심 엔진이다. 처음 세 가지 구성요소들의 역할은 다음과 같다. 먼저 GCS 소프트웨어는 RV의 제어프로그램이 가지는 파라미터의 변화 체인지와 명령들을 말한다. 그리고 subject control program은 타겟시스템으로 시뮬레이션 되는 RV를 조작한다.

그리고 시뮬레이터는 RV의 물리적 동작과 환경을 애뮬레이트 한다. GCS와 RV 제어프로그램과, 시뮬레이터(ardupilot 기반)이 RV 설계와 테스팅에 많이 적용되어 있다는 것을 강조한다. 

# 과연 아듀 시뮬레이터가 어느정도 현실성 있는지 어떤 것을 전제로 physical operation을 시뮬레이션 하는지 고민해볼 필요가 있다. 

RV Fuzzer의 핵심엔진은 2개의 서브 모듈로 구성되어 있다. 먼저 불안정성 검출기와, 뮤테이션 생성기 이다. 테스팅 동안 검출기는 비 일시적인 물리적 교란을 감지했다.(충돌과 편차). 뮤테이터 생성기는 피드백을 통해 보다 효율적인 제어 매개 변수 및 환경 요인을 생성했다. 시뮬레이터는 바람과 같은 환경적인 요인도 factor로 포함한다. 

#이걸 실제 시스템을 대상으로 했을 때와 시뮬레이터를 대상으로 했을 때 어떤 차이를 보이는지를 함께 보일 수 는 없었는지? 해당 논문에서 구현까지 가지 못한 건 아닌지 궁금하다. 

Control Instability Detector

The goal of the control instability detector is to continuously monitor RV control state to determine if a specific GCS command has induced non-transient physical disturbance. Such a physical disturbance can be considered as an indication of an input validation bug. We note that input validation bugs may not lead to program crash, a common indicator of traditional bugs (e.g., memory corruption).We first define a rule to detect physical disturbances, which is tailored for input validation bugs. We then describe the mechanism to monitor the RVFUZZER’s 6DoF control states for detecting such a disturbance.

불안정성 검출기는 지속적으로 RV의 통제 상태를 모니터링 하는 것을 목표로 하는데 이를 통해 특정 GCS 명령이 비 일시적인 물리적인 이상 동작을 야기하는지를 판별하기 위함이다. 이러한 이상 동작은 입력값 버그라고 판달 할 수 있다. 우리는 입력값 버그는 프로그램 크래시가 아니다.(예,메모리 오염은 아니다.) 우리는 먼저 입력 유효성 검사 버그에 맞게 조정 된 물리적 장애를 감지하는 규칙을 정의했고 그 다음 이러한 장애를 감지하기 위해 RVFUZZER의 6DoF 제어 상태를 모니터링하는 메커니즘을 설명합니다.

Indication of Control State Deviation Exploitation of an input validation bug will cause an RV’s failure to stabilize its control states and/or complete its mission. To accurately detect bug-nduced physical disturbance, RVFUZZER must be equipped with the capability of control state deviation detection. Among the possible physical disturbances experienced by an RV, there are two types of control state deviation: (1) observed state deviation and (2) reference state deviation. Accordingly, we define a detection rule to determine if one of he two types of control state deviation has occurred. The first type – observed state deviation – is the case where a controller (e.g., the primitive x-axis velocity controller) fails to stabilize its observed state (x(t)) according to its reference state (r(t)). In the theoretical control model, a controller always tries to keep x(t) close to r(t) (Section 2). Consequently, if the difference between x(t) and r(t) keeps increasing and exceeds a certain threshold, the observed state will be considered deviating from the reference state. To quantify the observed state deviation, we leverage the integral absolute error (IAE) formula [47] which is widely used as a stability metric in control systems.

Given a time window w and starting from a certain time instance t, the formula quantifies the level of deviation(deviation(t)). If deviation(t) is larger than a pre-determined threshold t, our rule will determine that there is a control state deviation starting at t.We will describe how to experimentally determine w and t for each 6DoF control state in Appendix A.

제어 상태 편차의 표시 입력 검증 버그를 악용하면 RV가 제어 상태를 안정화하지 못하거나 미션을 완료하지 못합니다.RV가 경험할 수있는 물리적 장애 중에는 두 가지 유형의 제어 상태 편차가 있습니다. (1) 관찰 된 상태 편차와 (2) 기준 상태 편차. 따라서 두 가지 유형의 제어 상태 편차 중 하나가 발생했는지 여부를 판별하는 감지 규칙을 정의합니다.

첫 번째 유형 – 관찰 된 상태 편차 – 컨트롤러 (예 : 기본 x 축 속도 제어기)가 참조 상태 (r (t))에 따라 관찰 된 상태 (x (t))를 안정화하지 못하는 경우입니다. 이론적 제어 모델에서 컨트롤러는 항상 x (t)를 r (t)에 가깝게 유지하려고합니다 (섹션 2). 결과적으로, x (t)와 r (t)의 차이가 계속 증가하고 특정 임계 값을 초과하면, 관찰 된 상태는 기준 상태에서 벗어난 것이다. 관측 된 상태 편차를 정량화하기 위해 제어 시스템에서 안정성 지표로 널리 사용되는 적분 절대 오차 (IAE) 공식 [47]을 활용한다.

주어진 시간 윈도우 동안 공식은 편차의 총량을 계산한다. 만약 편차가 미리 정의 된 쓰레스 홀드보다 크면 우리의 규칙은 이를 통제상태의  이상의 시작이라고 한다. 우리는 Appendix A를 통해 t실험적으로 w와 t를 결정하는지에 대해 말한다. 

The second type – reference state deviation – is the case where an RV deviates from its given mission. A controller is expected to adjust its reference state to track its mission. If a controller fails to do that, it is considered malfunctioning. To detect such a deviation, our rule will check whether the  difference between the reference state and the mission target becomes persistently greater than a threshold.

We note that our detection rule only considers non-transient control state deviation. An RV may experience transient control state deviation during normal operation but can effectively recover from it, thanks to the robustness features of the controllers such as the extended Kalman filter [46, 51, 60].

두 번째 유형, -참조된 상태의 편차- RV 편차가 주어진 미션에서 벗어난 경우를 말한다.(미션 실패) 컨트롤러는 미션 트랙에 맞는 상태로 다시 돌아 가도록 기대되지만 많약 컨트롤러가 이에 실패 한다면 이는 미션실패를 야기하는 오작동으로 볼 수 있다. 이러한 편차를 탐지하기 위해 우리의 규칙은 미션 목표와 상태의 편차가 쓰레스 홀더 이상인 상태가 지속되는지 확인한다. 

RV는 일시적인 통제상태 편차는 지속적으로 겪지만 칼만 필터로 인해 가지는 robustness 특징으로 금새 회복하기 때문에 우리는 우리의 검증 규칙이 비일시적인 통제상태 편차에만 집중했다.