RSS 프로젝트 제로
팔로우
돌연변이 문법 퍼징의 효과에 관하여
변이 문법 퍼징은 퍼저가 샘플의 구조를 설명하는 미리 정의된 문법을 사용하는 퍼징 기술입니다. 샘플이 변이될 때, 변이는 결과 샘플이 여전히 문법 규칙을 준수하도록 발생하므로, 샘플의 구조는 변이 프로세스에 의해 유지됩니다. 커버리지 기반 문법 퍼징의 경우, (변이 후) 결과 샘플이 이전에 보지 못한 코드 커버리지를 트리거하면, 이 샘플은 샘플 코퍼스에 저장되어 향후 변이의 기반으로 사용됩니다. 이 기술은 복잡한 문제를 찾는 데 효과적임이 입증되었으며, 저는 과거에 웹 브라우저의 XSLT 구현 및 JIT 엔진 버그를 찾는 데 성공적으로 사용했습니다. 그러나 이 접근 방식이 효과적임에도 불구하고, 일반적인 퍼저 사용자에게는 명확하지 않을 수 있는 단점이 있습니다. 이 블로그 게시물에서는 변이 커버리지 기반 문법 퍼징 접근 방식의 단점이라고 생각하는 점을 소개합니다. 또한, 이러한 단점에 대응하기 위해 제가 퍼징 실행에서 사용하는 매우 간단하지만 효과적인 기술을 설명하겠습니다.