Skip to main content
QUICK REVIEW

[논문 리뷰] Deriving Semantics-Aware Fuzzers from Web API Schemas

Zac Hatfield-Dodds, Dmitry Dygalo|arXiv (Cornell University)|2021. 12. 20.
Software Testing and Debugging Techniques인용 수 4
한 줄 요약

이 논문은 Hypothesis 테스팅 라이브러리를 사용하여 OpenAPI 및 GraphQL 스키마에서 의미론적 인지, 구조 인지 퍼저를 자동으로 유도하는 성질 기반 퍼저인 Schemathesis를 제시한다. 기존 도구보다 우수한 성능을 보이며, 실세계 웹 서비스 100%를 치명적인 오류 없이 처리하고, 다음으로 우수한 퍼저보다 1.4배에서 4.5배 더 많은 고유한 결함을 발견한다. 또한 사용자 정의 입력 생성과 의미론적 검증을 가능하게 한다.

ABSTRACT

Fuzzing -- whether generating or mutating inputs -- has found many bugs and security vulnerabilities in a wide range of domains. Stateful and highly structured web APIs present significant challenges to traditional fuzzing techniques, as execution feedback is usually limited to a response code instead of code coverage and vulnerabilities of interest include silent information-disclosure in addition to explicit errors. Our tool, Schemathesis, derives structure- and semantics-aware fuzzers from web API schemas in the OpenAPI or GraphQL formats, using property-based testing tools. Derived fuzzers can be incorporated into unit-test suites or run directly, with or without end-user customisation of data generation and semantic checks. We construct the most comprehensive evaluation of web API fuzzers to date, running eight fuzzers against sixteen real-world open source web services. OpenAPI schemas found in the wild have a long tail of rare features and complex structures. Of the tools we evaluated, Schemathesis was the only one to handle more than two-thirds of our target services without a fatal internal error. Schemathesis finds 1.4 times to 4.5 times more unique defects than the respectively second-best fuzzer for each target, and is the only fuzzer to find defects in four targets.

연구 동기 및 목표

  • 웹 API 스키마에서 사용자 정의, 의미론적 인지 퍼저를 생성하기 위한 확장성 있고 재사용 가능한 방법을 개발하는 것.
  • 피드백이 HTTP 상태 코드에 국한되는 상태 기반, 구조 기반 웹 API에서 기존 퍼징 기법의 한계를 해결하는 것.
  • 응답 일치, 누락된 헤더, 암묵적 정보 유출 등의 의미론적 검증을 통합하여 결함 탐지 능력을 향상시키는 것.
  • 포괄적인 벤치마크 세트를 활용해 실세계 환경에서 웹 API 퍼저의 효과성을 평가하고 비교하는 것.
  • 미래 연구를 위해 실세계 웹 서비스, 스키마, 퍼저를 포함한 재사용 가능한 오픈소스 평가 코퍼스를 제공하는 것.

제안 방법

  • OpenAPI 또는 GraphQL 스키마 정의에 기반해 구조적이고 유효한 입력을 생성하기 위해 Hypothesis 성질 기반 테스팅 라이브러리를 활용한다.
  • 스키마에 정의된 타입, 제약 조건 및 형식 어노테이션을 사용해 의미론적으로 유효한 테스트 입력 및 요청 시퀀스를 생성한다.
  • 응답 본문 일치, 헤더 존재 여부, 상태 코드 정확성 등의 의미론적 검증 체크를 퍼저 워크플로우에 통합한다.
  • ASGI/WSGI 통합을 통해 내부에서 퍼저링을 수행하여 코드 커버리지 피드백과 더 깊은 인스트루멘테이션을 가능하게 한다.
  • Hypothesis의 수축 및 중복 제거 기법을 활용해 최소화하고 고유한, 실행 가능한 결함을 보고한다.
  • 확장 가능한 테스트 허브를 통해 사용자가 데이터 생성 전략과 의미론적 검증을 사용자 정의할 수 있도록 한다.
Figure 1. Sorting unique defects by the number of runs detecting them, we see that Schemathesis (black) is less consistent but discovers more than other fuzzers. Defect IDs are consistent between runs but not between fuzzers.
Figure 1. Sorting unique defects by the number of runs detecting them, we see that Schemathesis (black) is less consistent but discovers more than other fuzzers. Defect IDs are consistent between runs but not between fuzzers.

실험 결과

연구 질문

  • RQ1성질 기반 테스팅 기법이 웹 API 스키마에서 의미론적 인지 퍼저를 효과적으로 파생하는 데 적합한가?
  • RQ2스키마 인지 퍼저 생성 기법이 기존 퍼징 기법보다 실세계 웹 서비스의 실제 결함을 탐지하는 데 얼마나 우수한가?
  • RQ3퍼저가 실세계 OpenAPI 및 GraphQL 스키마의 전체 다양성, 특히 드문 또는 복잡한 기능까지 얼마나 잘 처리할 수 있는가?
  • RQ4의미론적 검증 통합이 순수 구문적 또는 구조적 퍼징에 비해 결함 탐지 능력을 얼마나 향상시키는가?
  • RQ5성질 기반 테스팅 워크플로우가 웹 API 퍼징에서 결함 일관성과 보고서 품질에 미치는 영향은 무엇인가?

주요 결과

  • Schemathesis는 평가 대상 중 유일하게 16개의 실세계 웹 서비스를 치명적인 내부 오류 없이 처리하며, 스키마 강건성 면에서 다른 도구들을 능가한다.
  • 모든 타겟에서 두 번째로 우수한 퍼저보다 1.4배에서 4.5배 더 많은 고유한 결함을 발견했으며, 16개 서비스 중 4개에서 유일하게 결함을 발견한 유일한 도구였다.
  • 대부분의 경우 결함당 하나의 최소 입력만 보고하여, Hypothesis의 수축 및 중복 제거 기능 덕분에 보고서 품질이 매우 높았다.
  • 특히 장시간 실행할 경우 상태 기반 최첨단 도구보다 Schemathesis가 더 높은 일관성 있는 결함 탐지 능력을 보였다.
  • 16개의 실세계 웹 서비스와 8개의 퍼저를 포함한 평가 코퍼스는 오픈소스로 공개되었으며, 향후 연구에 재사용 가능하다.
  • 연구 결과는 의미론적 검증과 스키마 인지 입력 생성을 통합할 경우 구문적 또는 블랙박스 접근 방식보다 결함 탐지 능력이 크게 향상됨을 확인했다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.