Park, Geon/큐컬링

Created Fri, 01 Sep 2023 12:00:00 +0900 Modified Fri, 12 Sep 2025 17:46:02 +0900
384 Words

정의

choose the favored test cases in the queue to mutate and fuzz

AFL

목적 : 커버리지 늘리기 [[top_rated|top_rated]] 맵 기반해서, [[cull_queue|cull_queue]]에서 [[favored|favored]] 플래그 사용해 매김.

0x03 Queue Culling

https://mem2019.github.io/jekyll/update/2019/08/26/AFL-Fuzzer-Notes-2.html 퍼징이 진행됨에 따라 queue의 총 테스트 사례 수가 증가합니다. 그러나 이러한 queue에 포함된 모든 경로를 적중하려면 이러한 테스트 사례의 하위 집합만 필요합니다. AFL은 queue을 선별하여 파일 실행 시간과 파일 크기가 최소화되는 최적의 하위 집합을 선택하려고 합니다.

특정 경로(예: array의 인덱스)를 포괄할 수 있는 최적의 테스트 사례를 기록하는 데 사용되는 전역 변수 struct queue_entry* top_rated[MAP_SIZE]가 있습니다. 이 top_ratedupdate_bitmap_score 함수로 업데이트됩니다. [[top_rated|top_rated]] 업데이트.

AFL에서 큐컬링은, 전체 queue에서 좀 중요한 작은 집합으로 top_rated를 고르고, 거기서 더 중요한 작은 집합인 favored 를 만드는 거.

기타

[[cull_queue|cull_queue]] [[add_to_queue|add_to_queue]]

[[angora|angora]], [[AFL-Sensitive|AFL-Sensitive]]

include additional information, such as the calling stack, the memory access address, and the n basic blocks execution path.