https://hugogascon.com/publications/2015-securecomm.pdf
https://github.com/hgascon/pulsar

주의

지극히 개인적인 의견만 들어가 있습니다. (본인도 뭘 썼는지 모르겠음)

선정 이유

AFLNet을 사용하려 시도하였지만 afl instrumentation 과정에서 실패하였다. 이에 따라 AFLNet을 포기하고 새롭게 black-box network fuzzer를 작성하였지만 feedback이 낮아 취약점을 찾지 못하는 것을 확인하였다. 따라서 feedback을 어떻게 줄 수 없을까 고민 끝에 논문을 하나 더 읽기로 결정하였고, 이에 따라 black-box network fuzzer이면서 feedback을 받아 작동하는 해당 퍼저의 논문을 읽게 되었다.

요약

구조

PULSAR는 크게 3단계로 작동한다.

  1. 모델 유도: 대상 프로토콜의 샘플 패킷 캡쳐를 통해 프로토콜 모델을 학습한다. 이는 프로토콜 상태 머신에 대한 마르코브 모델을 포함한다.
  2. 테스트 케이스 생성: 추출된 템플릿과 규칙들은 통신 과정 중 어떤 메세지 필드에 어떤 값이 들어가는지 알려준다. 이를 이용해서 테스트 케이스를 생성한다.
  3. 모델 커버리지: 모델에 대한 커버리지를 최대한 높이기 위해 시도한다.

상세 내용

기본적으로 아이디어와 구현 방법은 AFLNet과 비슷한 것 같다. Mutation이나 model coverage 개념, protocol exploration 방법이 동일하게 구현되어 있으므로 해당 내용들은 예전에 정리해 놓은 AFLNet을 보면 될 것 같다. (애초에 AFLNet에서 현재 논문을 참조한다) AFLNet과 다른점이라면 이 논문의 경우 passive learning, 즉 주어진 테스트 케이스만 가지고 프로토콜 모델을 만든다면 AFLNet의 경우 grey-box 방식으로 프로토콜 모델을 만들어 나간다. 해당 차이를 제외하고 큰 차이가 보이지 않는다.

총평

Black-box에서 피드백을 참조할 수 있게 해준다는 점에서 장점이 큰 것 같다. 하지만, 퍼징 자체가 테스트 케이스를 어떻게 주는지에 따라 달라지기 때문에 매우 불안정한 것 같다. 또한, VM 환경의 경우 해당 논문의 방법을 사용하기 힘든 것이 VM 에뮬레이터의 경우 통상적인 프로토콜을 사용하고 (proprietary protocol이 아니다) 이에 따른 테스트 케이스를 잘 생성하기가 힘들다. 따라서 네트워크 퍼징 방법에 대해 배울 수 있는 좋은 논문이지만, 참고자료로 사용하기 어려운 점이 아쉽다.

+ Recent posts