[논문 리뷰] Open Problems in Fuzzing RESTful APIs: A Comparison of Tools
이 논문은 19개의 실제 웹 서비스 API에서 JaCoCo와 c8를 통해 실제 코드 커버리지를 측정하면서, 블랙박스 및 WHITELIST 테스팅을 사용하여 7개의 최신 퍼저 툴을 평가한다. 결과적으로 어떤 퍼저 툴도 평균 60% 이상의 라인 커버리지를 달성하지 못했으며, EvoMaster와 Schemathesis가 가장 우수한 성능을 보였고, 스키마가 불완전하거나 외부 서비스와의 상호작용을 처리하지 못하는 등의 주요 열린 문제를 규명하였다.
RESTful APIs are a type of web services that are widely used in industry. In the last few years, a lot of effort in the research community has been spent in designing novel techniques to automatically fuzz those APIs to find faults in them. Many real faults were automatically found in a large variety of RESTful APIs. However, usually the analyzed fuzzers treat the APIs as black-box, and no analysis of what is actually covered in these systems is done. Therefore, although these fuzzers are clearly useful for practitioners, we do not know what are their current limitations and actual effectiveness. Solving this is a necessary step to be able to design better, more efficient and effective techniques. To address this issue, in this paper we compare seven state-of-the-art fuzzers on 18 open-source and one industrial RESTful APIs. We then analyzed the source code of which parts of these APIs the fuzzers fail to generate tests for. This analysis points to clear limitations of these current fuzzers, listing concrete challenges for the research community to follow up on.
연구 동기 및 목표
- 실제 RESTful API에서 최신 퍼저 툴의 실제 코드 커버리지를 평가하여 블랙박스 메트릭을 넘어서는 것을 목표로 한다.
- 실제 웹 서비스 API에서 미커버된 코드 영역을 분석하여 현재 퍼징 기법의 한계를 규명하는 것.
- 블랙박스 및 WHITELIST 테스팅 전략을 모두 활용한 퍼저의 포괄적이고 경험적인 비교를 제공하는 것.
- 특히 스키마 모호성과 외부 서비스 상호작용 문제에 초점을 맞춰, API 퍼저의 효과성에 관한 열린 연구 문제를 부각하는 것.
제안 방법
- 연구는 JVM 기반 13개, Node.js 기반 6개의 총 19개의 RESTful API에서 7개의 퍼저—bBOXRT, EvoMaster, RESTest, RestCT, RESTler, RestTestGen, Schemathesis—를 평가한다.
- 각 퍼저는 1회 실행당 1시간 동안 실행되며, 알고리즘적 랜덤성의 영향을 고려해 총 10회 반복된다.
- 라인 커버리지는 JVM API에 대해서는 JaCoCo, Node.js API에 대해서는 c8를 사용하여 객관적이고 소스 코드 수준의 메트릭을 제공한다.
- 분석에는 원격 SUT를 대상으로 하는 블랙박스 테스팅과 소스 코드 및 커버리지 데이터 접근이 가능한 WHITELIST 테스팅이 포함된다.
- 퍼저 동작에서 반복적으로 나타나는 과제를 규명하기 위해, 미커버된 코드 영역에 대한 상세한 수동 점검을 수행한다.
- 모든 실험 스크립트와 데이터는 오픈소스로 공개되어 재현 가능성을 확보한다.
실험 결과
연구 질문
- RQ1현재 최신 기술의 API 퍼저는 실제 웹 서비스 RESTful API에서 어떤 정도의 실제 코드 커버리지를 달성하는가?
- RQ2이러한 퍼저에서 블랙박스 및 WHITELIST 테스팅 전략 간 커버리지 측면에서의 비교는 어떠한가?
- RQ3퍼저가 더 높은 커버리지를 달성하지 못하는 주요 코드 수준의 제약 조건는 무엇인가?
- RQ4스키마 설계와 외부 서비스 종속성과 관련하여 퍼저 동작에서 반복적으로 나타나는 과제는 무엇인가?
주요 결과
- EvoMaster가 19개의 API 전반에서 가장 높은 평균 라인 커버리지를 기록했으며, Schemathesis가 그 다음으로 뒤따랐지만, 어느 것도 평균 60%를 초과하지 못했다.
- 평균적으로 모든 블랙박스 퍼저가 60% 이하의 라인 커버리지를 기록하여 코드 탐색의 심각한 격차를 보였다.
- WHITELIST 테스팅은 항상 블랙박스 테스팅을 앞섰으며, 테스트 생성에 있어 내부 코드 지식의 가치를 입증했다.
- 주요 제약 조건은 퍼저가 부족하거나 불완전한 OpenAPI 스키마를 처리하지 못해, 테스트 입력 생성이 완전하지 못하다는 점이다.
- 퍼저는 데이터베이스나 제3자 API와 같은 외부 서비스와의 복잡한 로직을 트리거하는 입력을 생성하는 데 어려움을 겪는다.
- 수동 코드 분석을 통해 많은 미커버된 코드 영역이 특정 입력 구조나 외부 상태에 의존하는 조건부 로직을 포함하고 있음을 확인했으며, 현재 퍼저는 이러한 영역을 탐색하지 못하고 있음을 밝혔다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.