메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

TWINFUZZ: Differential Testing of Video Hardware Acceleration Stacks

noriwiki
TWINFUZZ: Differential Testing of Video Hardware Acceleration Stacks
AuthorMatteo Leonelli, Addison Crump, Meng Wang, Florian Bauckholt, Keno Hassler, Ali Abbasi, Thorsten Holz
ConferenceNDSS
Year2025

개요

Video codec decoding(비디오 코덱 디코딩)은 여러개의 소프트웨어와 하드웨어계층으로 이루어져 있고, 내려갈수록 State를 관측하기 힘들어, Fuzzing이 어려워진다. 이를 해결하기 위해서 White box인 부분으로 Black box인 부분의 State를 추측하여서 Coverage에 반영하도록 하였고, 결과적으로 좋은 성능을 얻을 수 있었다.

Motivation & Importance

Hardware fuzzing을 하기 위해서는 Application => Driver => Kernel => Hardware firmware => Hardware이어지는 Stack을 타고 가야 한다. 불행히도, 이러한 깊은 구조(Deep state structure)는 Fuzzer가 지금 Hardware에 의미있는 Input을 주고 있는지, 아니면 단지 Software stack에서 무의미한 작업을 반복하고 있는지를 알아내는 것을 복잡하게 만든다.

Main Idea

논문은 크게 2개의 아이디어를 제시하고 있다.

  1. Software only stack으로 Fuzzing을 진행하여 Covereage를 얻어내고 이를 이용하여 Hardware 가속기의 Coverage를 유추할 수 있다.
  2. Software only stack의 결과와 Hardware accelerator의 결과를 비교하는 Differential testing으로 Bug가 있는지 없는지 알아 낼 수 있다.

Desgin

논문에서 주장하는 Design은 다음과 같다. 우선 Input은 동시에 Software-only stack과 Hardware-accelerated stack에서 처리된다. Covereage는 Software-only stack의 것만을 사용해서 계산한다. 최종적으로 나오는 결과를 Frame단위로 분석해서 만약 일치하면 버그가 없는 것이지만, 불일치할 경우 버그가 있는 것으로 간주, 버그를 리포트 한다. 여기서 중요한 것은 도출되는 버그가 Hardware stack의 버그가 아니고, 전체 스택의 버그일 가능성이 있음으로, 어느곳에서 발생했는지 알아내야 한다는 사실이다. 이 문제는 해결하기 어려운 것으로 Discussion파트에서는 여러 방법을 소개하고 있지만, 명확한 해결방법은 없음을 명시하고 있다.