연습삼아 OS X에서 테스트하기 위해 American Fuzzy Lop을 사용해 보았지만 tcsh
실수로 내 시스템의 유용한 파일을 삭제하고 싶지 않았습니다.
퍼즈 테스트에 대해 아무것도 모르기 때문에 다음을 수행했습니다.
Brew를 통해 Fuzzer를 설치했습니다.
$ brew install afl-fuzz
보조 노드로서 tcsh
구성 스크립트는 이 --disable-shared
플래그를 무시하는 것 같습니다.
$ ./configure CC=afl-clang --disable-shared --prefix="$HOME"/opt/fuzzy-local ; make
그런 다음 어리석은 예제 테스트 스크립트를 제공했습니다.samples/sample.csh
echo '45'
그런 다음 한동안 가장 순진한 방식으로 afl-fuzz를 실행했습니다.
$ afl-fuzz -i samples -o afl_findings ./bin/tcsh -f @@
나는 무작위로 생성된 쉘 스크립트가 일부 정크 파일을 생성했다는 사실을 금방 발견했습니다.
$ ls
?d%FF%FFd%A7 ? 5? bin share
?45? 45 afl_findings samples
무작위로 생성된 쉘 스크립트가 수행할 수 있는 작업을 제한하고 해당 스크립트가 관심 있는 파일을 삭제하거나 수정하지 못하도록 방지하는 올바른 방법은 무엇입니까?
계속 노력 중이야
$ chown nobody:nogroup afl-findings
$ sudo -u nobody afl-fuzz -i samples -o all_findings ./bin/tcsh -f @@
그러나 이것이 무작위로 생성된 쉘 스크립트의 기능을 제한하기에 충분한지 확신할 수 없습니다.