Ruzzy를 LibAFL로 확장하기 노트

Ruzzy를 LibAFL로 확장하기

이 게시물은 Ruby 퍼저인 Ruzzy에 LibAFL을 통합하는 과정을 자세히 설명합니다. 작성자는 LibAFL의 장점과 libFuzzer를 대체하려는 의도를 먼저 강조합니다. Dockerfile 내에서 LibAFL의 libFuzzer 라이브러리를 빌드하고, ENV 변수를 통해 LibAFL을 사용하도록 Ruzzy의 빌드 프로세스를 약간 수정합니다. 링크 중에 ".preinit_array section is not allowed in DSO"라는 문제가 발생하며, 이 오류를 해결하기 위해 GNU ld 대신 LLVM의 링커(lld)를 사용해야 합니다. 작성자는 Dockerfile과 extconf.rb를 수정하여 링커를 지정합니다. 빌드 문제가 해결된 후 작성자는 퍼저를 실행하려고 시도합니다. 그러나 "No maps available; cannot fuzz!" 오류가 발생하며, 이는 SanitizerCoverage 초기화에 문제가 있음을 나타냅니다. 작성자는 이 문제를 탐색하고 해결할 계획입니다. 결과적으로 작성자는 cargo 기능을 사용하여 preinit_array 섹션을 방지함으로써 상류에 적절한 수정을 제안할 계획입니다. 마지막으로 게시물은 퍼저 실행에 초점을 맞추고 위생 문제를 해결하기 위한 예상되는 다음 단계를 마무리합니다.