상세 컨텐츠

본문 제목

[PAPER REVIEW] MINER: A Hybrid Data-Driven Approach for REST API Fuzzing (USENIX SEC'23)

ANALYSIS/Paper Review

by koharin 2023. 10. 3. 00:11

본문

728x90
반응형

BACKGROUND

REST API를 통해 클라우드 서비스의 잠재적 오류를 발견하는 연구

  • API 트래픽을 캡쳐하고 메뉴얼로 정의된 규칙으로 requst를 생성 (과거)
  • requst 타입에 따른 의존성을 추론하고 request sequence 생성 (최근)

REST API Fuzzing

  • 클라우드 서비스 테스트하기 위해 제안됨
  • 과정
    1. generation 과정에서 챌린지: 어떻게 sequence 템플릿 구성할지, 어떻게 request 템플릿 내에서 request를 생성할지
    2. request sequence를 이용한 test 과정에서 챌린지: request가 syntax와 semantic을 충족하는지 체크하고 그렇지 않으면 40x로 응답 보내는데, 클라우드 서비스의 경우 DELETE request가 오면 리소스를 삭제하는 등 request에 따른 특정 행위를 수행하고 20x 범위의 응답을 보냄. 정상적으로 요청이 수행되지 않으면 50x 범위의 error state에 대한 응답을 보냄.
    3. 실행 결과 분석: request에 대한 응답을 분석하고 클라우드 서비스 내 state를 트리거했는지 추론
    4. error state에 대한 unique request sequence 수집 예) 만약 응답이 50x가 아니면 security rule을 위반한 것이므로 error state이므로 해당 error state를 유발한 sequence 수집

 

MOTIVATION

  1. sequence construction의 어려움: 기존의 REST API 퍼저는 클라우드 서비스 내 hard-to-reach state를 트리거하기 위한 긴 sequence를 가지면서 well-constructed request를 생성하는데 어려움이 있음.
    • hard-to-reach state를 트리거하지 못하면 깊은 오류나 버그 발견하는데 한계가 있음.
    • 클라우드 서비스의 security bug는 트리거하는데 복잡한 로직이 필요
    • 기존 퍼저는 request sequence 템플릿을 확장하지 못해서 빈번하게 구성된 sequence 템플릿을 잃고 빈 템플릿으로 시작함 → 긴 길이의 sequence 구성이 어려움
  2. request generation의 어려움: request 생성 시 정의되지 않은 파라미터로 발생한 오류를 발견할 수 없음
    • 기존 퍼저는 랜덤하게 request 파라미터의 값을 선택 → 어떤 파라미터를 변형해야 하고 파라미터에 어떤 값이 할당되어야 하는지 모름

⇒ 위의 한계를 해결할 수 있는 MINER 제안

 

DESIGN

  1. Length-orientated sequence construction
    • 유효한 sequence 템플릿 수집
    • 유효한 sequence 템플릿: 과거 퍼징 과정에서 request가 성공적으로 생성되고 클라우드 서비스의 체크를 패스한 sequence 확장 과정에서의 초기 템플릿
    • 긴 sequence 템플릿에 실행을 더 할당
  2. Attention model-based request generation
    • 유효한 request(클라우드 서비스의 체크를 통과한)에서의 파라미터와 사용된 값을 수집하여 변형하고자 하는 key로 지정
    • Attention 신경망 모델 사용하여 key 변형 사이 관계를 학습
    • 모델 사용하여 클라우드 서비스의 다양한 state를 탐색하고 체크를 통과할 수 있는 고품질 request 구성할 수 있는 key 변형에 대한 다양한 조합을 생성 → key request 파라미터를 예측하고 적절합 파라미터 값 제공
    • sequence 템플릿에서 request 생성 품질 향상하기 위해 사용
  3. Request parameter violation checking
    • data-driven security rule checker → 정의되지 않은 파라미터를 사용하는 request를 생성
    • 정의되지 않은 파라미터에 의한 클라우드 서비스의 오류 발견 위해 사용

 

IMPLEMENTATION

RESTler 퍼저 기반으로 MINER 구현

 

EVALUATION

  • GitLab, Bugzilla, WordPress의 11 REST API
  • RESTler보다 평균 23.42% 더 높은 pass rate 달성
  • RESTler보다 평균 97.554% 더 많은 unique error 발견
  • RESTler보다 평균 142.86% 더 많은 재생산 가능한 에러 발견

 

CONCLUSION

CONCLUSION

  • 기존 REST API 퍼저의 한계 해결 위해 3가지 data-driven approach 제안
  • RESTler와 3개의 오픈소스 클라우드 서비스(GitLab, Bugzilla, WordPress)로 비교했을 때 request generation, error discovery에서 더 좋은 성능 보임
  • REST API 퍼저에서 sequence extension, pass rate, error discovery 향상하는데 새로운 방향성 제공

CONTRIBUTION

  • 기존 REST API 퍼저의 한계를 제시하고 이를 해결하기 위한 sequence construction을 위한 과거 데이터 수집, attention model을 통해 desirable 파라미터 값을 갖는 request 생성, 정의되지 않는 차라미터 갖는 request 생성의 3가지 디자인 제안
  • MINER와 RESTler를 3개의 오픈소스 클라우드 서비스로 평가한 결과, MINER가 sequence construction, request generation, error discovery에서 눈에 띄는 성능을 보임
728x90
반응형

관련글 더보기