AFL

    [하드웨어 해킹] 퍼징 기술

    퍼징은 2살짜리 아이에게 장난감이나 공구를 주는 것과 같다. 아이는 가능한 모든 방법으로 주어진 도구를 사용하려고 애쓴다. 퍼저는 여러 입력값을 넣어가며 프로그램을 깨부수고(break) 만다. 변이 기반 퍼징(Mutation-based fuzzing) 유전자 알고리즘(Genetic Algorithms, GAs)은 초기 입력을 주고 변형시키며 최적의 결과를 나타내는 값을 찾아내는 방법이다. 입력값이 더 나아질수록 코드 커버리지는 넓어진다. 원칙적으로 GA 구현과 입력값 생성은 AFL에 의해 자동화된다. 어떤 유전자가 살아남을 것인가를 판단하는 적합도 함수(Fitness Function)를 사용하는 대신 다른 함수(Novelty Function)을 사용해 입력값의 가짓수를 최대로 늘려 코드 커버리지를 향상시..