[논문 리뷰] Deriving Semantics-Aware Fuzzers from Web API Schemas
이 논문은 Hypothesis 테스팅 라이브러리를 사용하여 OpenAPI 및 GraphQL 스키마에서 의미론적 인지, 구조 인지 퍼저를 자동으로 유도하는 성질 기반 퍼저인 Schemathesis를 제시한다. 기존 도구보다 우수한 성능을 보이며, 실세계 웹 서비스 100%를 치명적인 오류 없이 처리하고, 다음으로 우수한 퍼저보다 1.4배에서 4.5배 더 많은 고유한 결함을 발견한다. 또한 사용자 정의 입력 생성과 의미론적 검증을 가능하게 한다.
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의 수축 및 중복 제거 기법을 활용해 최소화하고 고유한, 실행 가능한 결함을 보고한다.
- 확장 가능한 테스트 허브를 통해 사용자가 데이터 생성 전략과 의미론적 검증을 사용자 정의할 수 있도록 한다.

실험 결과
연구 질문
- RQ1성질 기반 테스팅 기법이 웹 API 스키마에서 의미론적 인지 퍼저를 효과적으로 파생하는 데 적합한가?
- RQ2스키마 인지 퍼저 생성 기법이 기존 퍼징 기법보다 실세계 웹 서비스의 실제 결함을 탐지하는 데 얼마나 우수한가?
- RQ3퍼저가 실세계 OpenAPI 및 GraphQL 스키마의 전체 다양성, 특히 드문 또는 복잡한 기능까지 얼마나 잘 처리할 수 있는가?
- RQ4의미론적 검증 통합이 순수 구문적 또는 구조적 퍼징에 비해 결함 탐지 능력을 얼마나 향상시키는가?
- RQ5성질 기반 테스팅 워크플로우가 웹 API 퍼징에서 결함 일관성과 보고서 품질에 미치는 영향은 무엇인가?
주요 결과
- Schemathesis는 평가 대상 중 유일하게 16개의 실세계 웹 서비스를 치명적인 내부 오류 없이 처리하며, 스키마 강건성 면에서 다른 도구들을 능가한다.
- 모든 타겟에서 두 번째로 우수한 퍼저보다 1.4배에서 4.5배 더 많은 고유한 결함을 발견했으며, 16개 서비스 중 4개에서 유일하게 결함을 발견한 유일한 도구였다.
- 대부분의 경우 결함당 하나의 최소 입력만 보고하여, Hypothesis의 수축 및 중복 제거 기능 덕분에 보고서 품질이 매우 높았다.
- 특히 장시간 실행할 경우 상태 기반 최첨단 도구보다 Schemathesis가 더 높은 일관성 있는 결함 탐지 능력을 보였다.
- 16개의 실세계 웹 서비스와 8개의 퍼저를 포함한 평가 코퍼스는 오픈소스로 공개되었으며, 향후 연구에 재사용 가능하다.
- 연구 결과는 의미론적 검증과 스키마 인지 입력 생성을 통합할 경우 구문적 또는 블랙박스 접근 방식보다 결함 탐지 능력이 크게 향상됨을 확인했다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.