Skip to main content
QUICK REVIEW

[논문 리뷰] REST-ler: Automatic Intelligent REST API Fuzzing

Vaggelis Atlidakis, Patrice Godefroid|arXiv (Cornell University)|2018. 06. 26.
Software Testing and Debugging Techniques참고 문헌 14인용 수 9
한 줄 요약

REST-ler는 Swagger 사양을 분석하여 요청 간 의존성을 추론하고 서비스 응답으로부터 잘못된 요청 시퀀스를 동적으로 학습함으로써, REST API를 위한 첫 번째 자동화되고 지능적인 패치 툴이다. 복잡한 API 동작을 효율적으로 탐색하기 위해 지능적인 테스트 시퀀스를 생성하며, GitLab과 같은 실제 서비스에서 보안 관련 버그를 최소한의 수동 작업으로 발견한다.

ABSTRACT

Cloud services have recently exploded with the advent of powerful cloud-computing platforms such as Amazon Web Services and Microsoft Azure. Today, most cloud services are accessed through REST APIs, and Swagger is arguably the most popular interface-description language for REST APIs. A Swagger specification describes how to access a cloud service through its REST API (e.g., what requests the service can handle and what responses may be expected). This paper introduces REST-ler, the first automatic intelligent REST API security-testing tool. REST-ler analyzes a Swagger specification and generates tests that exercise the corresponding cloud service through its REST API. Each test is defined as a sequence of requests and responses. REST-ler generates tests intelligently by (1) inferring dependencies among request types declared in the Swagger specification (e.g., inferring that "a request B should not be executed before a request A" because B takes as an input argument a resource-id x returned by A) and by (2) analyzing dynamic feedback from responses observed during prior test executions in order to generate new tests (e.g., learning that "a request C after a request sequence A;B is refused by the service" and therefore avoiding this combination in the future). We show that these two techniques are necessary to thoroughly exercise a service under test while pruning the large search space of possible request sequences. We also discuss the application of REST-ler to test GitLab, a large popular open-source self-hosted Git service, and the new bugs that were found.

연구 동기 및 목표

  • 클라우드 서비스에서 REST API 보안 테스팅을 위한 자동화되고 지능적인 도구의 부족을 해결하기 위해.
  • 요청 시퀀스의 막대한 탐색 공간을 요청 간 의존성을 추론하고 런타임 피드백에서 학습함으로써 줄이기 위해.
  • 기존의 문법 기반 또는 트래픽 재생 접근 방식을 넘어서 자동화된 API 패치의 효과성과 커버리지를 향상시키기 위해.
  • 실제 운영 환경의 클라우드 서비스인 GitLab과 같은 곳에서 보안 핵심 취약점을 식별하고 보고하기 위해.
  • 지능적이고 피드백 기반의 API 패치가 철저하고 효율적인 테스트를 위해 필수적임을 입증하기 위해.

제안 방법

  • Swagger 사양을 분석하여 이전 응답에서 자원 ID를 확보해야 다음 요청을 호출할 수 있는 등 API 요청 간의 정적 의존성을 추론한다.
  • 서비스 응답을 관찰하여 잘못되거나 거부된 요청 시퀀스를 학습함으로써 동적 피드백 분석을 수행하고, 중복되거나 해로운 테스트 경로를 피한다.
  • 유추된 의존성과 피드백 기반의 잘못된 경로 제거를 바탕으로 요청 및 응답의 시퀀스로 테스트 케이스를 생성한다.
  • 큰 상태 공간의 가능한 API 상호작용을 탐색하기 위해 여러 탐색 전략(예: 깊이 우선, 너비 우선, 피드백 기반 탐색)을 구현한다.
  • 내부 서비스 로직이나 소스 코드를 역공학하지 않고도 HTTP 요청과 응답만 관찰하는 블랙박스 접근 방식을 사용한다.
  • 테스트 다양성과 커버리지를 향상시키기 위해 모델 기반 테스팅과 객체 지향 시스템의 API 테스팅에서 영감을 얻은 학습 메커니즘을 패치에 통합한다.

실험 결과

연구 질문

  • RQ1Swagger 사양에서의 지능적 의존성 추론이 가능한 API 요청 시퀀스의 탐색 공간을 크게 줄일 수 있는가?
  • RQ2서비스 응답으로부터의 동적 피드백이 API 패치의 효과성과 효율성을 향상시킬 수 있는가?
  • RQ3다양한 탐색 전략이 실제 서비스에서 새로운 복잡한 API 동작을 발견하는 데 어떤 영향을 미치는가?
  • RQ4자동화되고 지능적인 API 패치가 기존의 테스팅이나 수동 침투 테스트에서 놓친 보안 관련 버그를 드러낼 수 있는가?
  • RQ5GitLab과 같은 대규모이고 복잡한 실세계 클라우드 서비스에서 이러한 도구가 얼마나 효과적으로 취약점을 발견할 수 있는가?

주요 결과

  • REST-ler는 GitLab에서 데이터베이스 작업의 동시성 관련 문제와 같은 보안 관련 신규 버그를 성공적으로 발견하였으며, 이는 데이터 손상이나 泄露로 이어질 수 있다.
  • 정적 의존성 추론과 동적 피드백 분석의 조합이 잘못되거나 중복된 요청 시퀀스를 피하면서도 높은 테스트 커버리지를 달성하는 데 필수적이었다.
  • 피드백 기반 학습이 탐색 공간을 크게 줄였으며, 이로 인해 REST-ler는 더 깊이 있고 복잡한 API 상호작용 패턴을 효율적으로 탐색할 수 있었다.
  • 평가된 탐색 전략 중에서 피드백 기반 탐색 전략이 깊이 우선 및 너비 우선 접근 방식보다 새로운 복잡한 동작을 더 잘 발견했다.
  • 이 도구는 대규모이고 복잡한 서비스에서 복잡한 상태 의존성을 지닌 REST API에 대한 자동화되고 지능적인 패치가 가능하고 효과적임을 입증했다.
  • 결과적으로 REST-ler는 수동 침투 테스트와의 보완적인 도구로서 클라우드 서비스의 보안 취약점을 식별하는 데 스케일러블하고 효과적인 도구가 될 수 있음을 시사한다.

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

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

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

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