전체 글345 [TheFuzzingBook] Mutation-Based Fuzzing TheFuzzingBook을 읽으면서 제대로 따라가기 위한 글... 정확한 내용은 퍼징북을 참고하세여 앞서 해왔던 randomly generated input은 invalid해서 처리되는 프로그램에 의해 빨리 reject된다. input processing 이상의 기능을 실행하려면 더 많은 valid input이 있어야 하는데, 이를 mutation fuzzing이 할 수 있다. 즉, mutation fuzzing은 valid but new behavior을 만들어낸다. 학습 목표 how to create such mutations how to guide them towards yet uncovered code apply central concepts from AFL fuzzer Fuzzing with .. 2022. 1. 29. [TheFuzzingBook] Code Coverage 이전 개념 assert로 에러처리(error check) fuzzer architecture Runner : Program Under Test Fuzzer : 랜덤값을 만들어내서 Runner에서 실행시키기 Code Coverage 이전 챕터에서처럼 퍼징을 하면 그 effectiveness를 어떻게 측정할까? 찾은 버그의 개수를 확인하는 방법이 있다. - 하지만, 만약 버그가 부족하다면?? 개념 test run동안 실제로 프로그램의 어떤 부분이 실행되는지 알려준다. 이런 coverage를 측정하는 것은 최대한 많은 코드를 커버하려는 test generator에게 매우 중요하다. black-box testing 소프트웨어의 내부 구조와 작동 원리를 모르는 상태에서 소프트웨어 동작 검사 올바른 입력, 올바르지.. 2022. 1. 29. [TheFuzzingBook] Breaking Things with Random Inputs Runner 클래스 PUT 자체라고 볼 수 있음. 어떤 랜덤값을 실행하기 위해 임의로 뭔가 동작을 하는 프로그램 Fuzzer 클래스 랜덤한 문자열을 생성해서 fuzz() Runner 클래스에서 실행시키기 from typing import Dict, Tuple, Union, List, Any import random, os, tempfile, subprocess Outcome = str ################################################# ### Runner ###################################### ################################################# class Runner: PASS = "PASS" FAI.. 2022. 1. 28. gcov, lcov 개념 및 사용하기 gcov 개념 code coverage를 측정하기 위해 사용하는 프로그램 알 수 있는 것 각 라인의 코드가 얼마나 자주 실행되었는가 정확히 어떤 라인의 코드가 실행되었는가 특정 부분의 코드를 실행하는데 얼만큼의 시간이 걸렸는가 gcov 사용법 gcc의 특정 옵션과 함께 테스트하고자하는 프로그램 컴파일 -fprofile-arcs : 이 옵션으로 컴파일한 후, 프로그램을 실행하면 branch와 call이 얼마나 실행되었는지 그리고 리턴을 했는지 기록한다. 이 데이터는 .gcda 파일에 저장된다. -ftest-coverage : 이 옵션으로 컴파일되면, gcov 프로그램이 프로그램의 coverage를 보여줄 때 사용하는 .gcno 파일을 생성한다. --coverage : -fprofile-arcs -ftest.. 2022. 1. 26. 기본적인 fuzz testing algorithm 이해하기 + AFLFast AFL을 어떻게 사용하는지, 어떤 특징이 있는지는 알겠지만 자세히 이해하고 싶어졌다. 하지만 검색 실력의 부족인지.. AFL의 동작을 세세히 분석한 것은 없었고, fuzz testing algorithm을 분석 정리한 포스트를 찾았다. 이를 읽으면서 AFL을 사용한 것을 함께 떠올렸다. 들어가기 ./afl-fuzz -i input -o output -- objdump -x @@ 이 명령어로 이해해보겠다. 용어 정리 PUT : test할 프로그램 -> objdump fuzz input : PUT가 예상하지 못할 input fuzzing : fuzz input을 사용해 PUT(Program Under Test)를 실행하는 것. crash같은 보안 관련 버그 탐색 목적 f.. 2022. 1. 24. [실험] AFL/AFL++ 실험설계 및 수행 binutils 설치 instrumentation : afl-gcc 오류 관련 1. 설치한 binutils 테스트해보려는데 오류남 - binutils 재설치하니까 오류 발생 안함 실험 실험1. power scheduler 비교 - AFL은 power scheduler가 없음. - AFL은 power scheduler를 옵션으로 지정해줄 수 있음. - 가설: AFL++ power schedule로 rare을 줬을 때 같은 시간(24시간)동안 AFL(default)보다 coverage가 넓다. - 방법 AFL default schedule mutator option : default(deterministic + havoc) instrumentation option : afl-gcc (default) fork.. 2022. 1. 21. 이전 1 ··· 9 10 11 12 13 14 15 ··· 58 다음