Estou tentando testar o tcsh
no OS X com o American Fuzzy Lop como um exercício, mas não quero destruir acidentalmente nenhum arquivo útil no meu sistema.
Sabendo basicamente nada sobre testes de fuzz, fiz o seguinte:
Eu instalei o fuzzer através da bebida.
$ brew install afl-fuzz
como um nó lateral, o script tcsh
configure parece ignorar o sinalizador --disable-shared
.
$ ./configure CC=afl-clang --disable-shared --prefix="$HOME"/opt/fuzzy-local ; make
Em seguida, fornecemos um script de teste de exemplo estúpido: samples/sample.csh
echo '45'
Então eu corri por um tempo, da maneira mais ingênua possível.
$ afl-fuzz -i samples -o afl_findings ./bin/tcsh -f @@
Logo descobri que os shell scripts gerados aleatoriamente criaram alguns arquivos de lixo.
$ ls
?d%FF%FFd%A7 ? 5? bin share
?45? 45 afl_findings samples
Qual seria a maneira correta de limitar as coisas que os shell scripts gerados aleatoriamente podem fazer e impedir que eles excluam ou modifiquem potencialmente os arquivos que me interessam.
Eu continuei tentando
$ chown nobody:nogroup afl-findings
$ sudo -u nobody afl-fuzz -i samples -o all_findings ./bin/tcsh -f @@
mas não tenho certeza se isso é suficiente para restringir o que scripts shell gerados aleatoriamente podem fazer.