[논문 리뷰] Free Lunch for Testing: Fuzzing Deep-Learning Libraries from Open Source
FreeFuzz는 오픈소스 소스에서 코드를 채굴함으로써 딥러닝 라이브러리의 API 수준에서 자동으로 퍼즈링을 수행하는 새로운 완전 자동화된 접근법이다. 문서, 개발자 테스트, 실제 모델에서 추출한 자료를 바탕으로 동적 인스트루멘테이션을 사용해 런타임 시 타입 및 텐서 형태 정보를 추출하고, 이를 바탕으로 타깃화된 API 수준의 퍼즈링을 수행한다. 이는 LEMON 대비 9배 더 많은 1158개의 API를 커버했으며, 오버헤드는 3.5배 낮아졌고, 토치와 텐서플로우에서 49개의 버그를 발견했으며, 그 중 38개는 개발자들에 의해 이전에 알려지지 않은 것으로 확인되었다.
Deep learning (DL) systems can make our life much easier, and thus are gaining more and more attention from both academia and industry. Meanwhile, bugs in DL systems can be disastrous, and can even threaten human lives in safety-critical applications. To date, a huge body of research efforts have been dedicated to testing DL models. However, interestingly, there is still limited work for testing the underlying DL libraries, which are the foundation for building, optimizing, and running DL models. One potential reason is that test generation for the underlying DL libraries can be rather challenging since their public APIs are mainly exposed in Python, making it even hard to automatically determine the API input parameter types due to dynamic typing. In this paper, we propose FreeFuzz, the first approach to fuzzing DL libraries via mining from open source. More specifically, FreeFuzz obtains code/models from three different sources: 1) code snippets from the library documentation, 2) library developer tests, and 3) DL models in the wild. Then, FreeFuzz automatically runs all the collected code/models with instrumentation to trace the dynamic information for each covered API, including the types and values of each parameter during invocation, and shapes of input/output tensors. Lastly, FreeFuzz will leverage the traced dynamic information to perform fuzz testing for each covered API. The extensive study of FreeFuzz on PyTorch and TensorFlow, two of the most popular DL libraries, shows that FreeFuzz is able to automatically trace valid dynamic information for fuzzing 1158 popular APIs, 9X more than state-of-the-art LEMON with 3.5X lower overhead than LEMON. To date, FreeFuzz has detected 49 bugs for PyTorch and TensorFlow (with 38 already confirmed by developers as previously unknown).
연구 동기 및 목표
- 딥러닝 모델 개발의 기초가 되는 딥러닝 라이브러리에 대해 자동화된 테스팅이 부족한 현상(모델 자체에 비해 훨씬 덜 테스트됨)을 보완하기 위함.
- 파이썬 기반 딥러닝 라이브러리의 동적 타이핑으로 인해 자동 테스트 입력 생성 및 타입 추론이 어려운 문제를 해결하기 위함.
- 실제 사용 사례 코드와 런타임 인스트루멘테이션을 활용해 고도로 커버리지가 높고 효율적이며 자동화된 딥러닝 라이브러리 API 퍼즈링을 가능하게 하기 위함.
- 낮은 코드 커버리지, 높은 오버헤드, 입력 다양성 부족 등의 문제를 야기하는 기존의 모델 수준 테스팅 접근법(예: CRADLE, LEMON)을 개선하기 위함.
- 세부적인 API 수준 퍼즈링을 통해 널리 사용되는 딥러닝 라이브러리인 토치와 텐서플로우에서 이전에 알려지지 않은 버그를 탐지하기 위함.
제안 방법
- FreeFuzz는 공식 라이브러리 문서, 개발자 테스트 세트, 공개 저장소에서 확보한 실제 딥러닝 모델을 포함한 세 가지 오픈소스 소스에서 코드와 모델을 수집한다.
- 수집된 모든 코드를 인스트루멘테이션하고 실행하여 API 호출을 런타임 동안 동적으로 추적하며, 매개변수 타입, 값, 입력/출력 텐서의 형태를 기록한다.
- 추적된 런타임 동적 정보를 바탕으로 각 커버된 API에 대해 타입 인식이 가능한 타깃화된 퍼즈 입력을 생성함으로써 정밀하고 효과적인 변형 테스팅을 가능하게 한다.
- API 수준에서 커버리지 지향 퍼즈링 전략을 적용하여, 종단 간 모델 실행이 아닌 개별 라이브러리 함수의 단위 테스트에 집중한다.
- 성능 오버헤드를 최소화하면서도 관찰 가능한 API 동작을 극대화하기 위해 경량 런타임 인스트루멘테이션을 사용한다.
- 퍼즈된 입력 간 출력을 비교함으로써 기존 테스트 오라클과 통합하여 일관성 없는 결과를 탐지함으로써 잠재적 버그를 식별한다.
실험 결과
연구 질문
- RQ1오픈소스 코드와 모델을 효과적으로 채굴하여 딥러닝 라이브러리 API에 대해 다양한 유효한 테스트 입력을 자동으로 생성할 수 있는가?
- RQ2동적 타이핑에도 불구하고 동적 인스트루멘테이션을 통해 파이썬 기반 딥러닝 API의 신뢰할 수 있는 타입 및 형태 정보를 추출할 수 있는가?
- RQ3딥러닝 라이브러리의 코드 커버리지, 효율성, 버그 탐지 측면에서 API 수준 퍼즈링이 모델 수준 테스팅을 능가할 수 있는가?
- RQ4FreeFuzz는 LEMON과 같은 최첨단 접근법과 비교해 커버리지, 오버헤드, 실제 세계의 버그 탐지 측면에서 어떻게 다른가?
- RQ5기존 연구에서 제안된 모델 변형 기법(예: LEMON)이 딥러닝 라이브러리의 코드 커버리지 향상과 새로운 버그 탐지에 실제로 얼마나 기여하는가?
주요 결과
- FreeFuzz는 토치와 텐서플로우의 1158개의 인기 있는 API에 대해 동적 정보를 성공적으로 추적했으며, LEMON이 커버한 128개 API 대비 900% 증가한 결과를 보였다.
- LEMON 대비 런타임 오버헤드가 3.5배 낮아, 인스트루멘테이션 및 실행의 효율성이 뛰어나다는 것을 입증했다.
- FreeFuzz는 토치와 텐서플로우에서 49개의 고유한 버그를 발견했으며, 그 중 38개는 개발자들에 의해 이전에 알려지지 않은 문제로 확인되었다.
- 연구 결과, LEMON의 모델 변형 규칙가 매우 제한되어 있어 코드 커버리지 향상에 크게 기여하지 못하며, 그 효과가 국한됨을 밝혀냈다.
- FreeFuzz를 통한 API 수준 퍼즈링은 저수준의 라이브러리 버그를 탐지하기 위해 모델 수준의 차등 테스팅에 비해 더 확장 가능하고 효과적인 대안을 제공한다.
- 문서 및 오픈소스 모델에서의 실제 사용 사례 코드를 활용함으로써, 합성 또는 사전 훈련된 모델 기반 접근법보다 더 넓고 현실적인 API 커버리지를 확보할 수 있었다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.