def setupProject(project): # Use non trival program to make sure that libc uses many environment variables # COMMAND = ['/bin/bash', '-c', 'echo "Hello World!"'] COMMAND = ['python', '-c', 'print "Hello World!"'] MAX_COUNT = 5 # Run program with fuzzed environment variables vars = list(LIBC_VARIABLES) if False: # AVOID libc bugs vars.remove('LD_HWCAP_MASK') vars.remove('MALLOC_TOP_PAD_') if False: var = EnvVarInteger(vars, max_count=MAX_COUNT) elif False: var = EnvVarLength(vars, max_count=MAX_COUNT) elif False: var = EnvVarRandom(vars, max_length=200, max_count=MAX_COUNT) var.characters = LETTERS | PUNCTUATION else: var = EnvVarRandom(vars, max_length=2000, max_count=MAX_COUNT) process = ProjectProcess(project, COMMAND) process.env.add(var) # Watch process failure with its PID WatchProcess(process) # Watch process failure with its text output stdout = WatchStdout(process) stdout.words['failed'] = 0
def setupProject(self): self.project.debugger.enabled = False FuzzedHttpServer(self.project, 8898) process = ProjectProcess( self.project, [ 'python3', '-m', 'wpull', '127.0.0.1:8898', '--timeout', '2.0', '--tries', '1', ], ) process.max_memory = 500000000 process.env.set( 'PYTHONPATH', os.path.join(os.path.abspath(os.path.dirname(__file__)), '..', '..')) WatchProcess(process, exitcode_score=0.45) stdout_watcher = WatchStdout(process) stdout_watcher.ignoreRegex(r'Read timed out', ) stdout_watcher.ignoreRegex(r'Error parsing status line', ) stdout_watcher.ignoreRegex( r'WARNING Invalid content length: invalid literal for int') stdout_watcher.ignoreRegex(r'encountered an error: zlib error: ')
def setupProject(project): process = ProjectProcess(project, ['xterm', 'ls'], timeout=1.0) setupX11Process(process) process.env.add(EnvVarLength('PATH', max_length=1000)) WatchProcess(process, timeout_score=0) WatchStdout(process)
def setupProject(project): VIM = EnvVarLength(['VIM', 'VIMRUNTIME'], max_length=10000) process = ProjectProcess(project, ['vim', '--version']) process.env.add(VIM) WatchProcess(process) WatchStdout(process)
def setupProject(project): # project.session_timeout = 1.0 process = ProjectProcess(project, ['/bin/bash'], timeout=5.0) AttackProc(project) WatchProcess(process, timeout_score=0) WatchStdout(process) syslog = Syslog(project) for watch in syslog: watch.ignoreRegex('info="invalid command"') watch.show_not_matching = True
def setupProject(self): self.project.debugger.enabled = False self.config.process_max_user_process = 50 FuzzedHttpServer(self.project, 8898) process = ProjectProcess( self.project, [ 'python3', '-X', 'faulthandler', '-m', 'wpull', '127.0.0.1:8898', '--timeout', '2.0', '--tries', '1', ], ) process.env.set( 'PYTHONPATH', os.path.join(os.path.abspath(os.path.dirname(__file__)), '..', '..')) WatchProcessSpecificStatusCode(process) stdout_watcher = WatchStdout(process) stdout_watcher.ignoreRegex( r'WARNING Invalid content length: invalid literal for int') stdout_watcher.ignoreRegex(r'WARNING Unable to parse URL ') stdout_watcher.ignoreRegex(r'WARNING Failed to read document at ') stdout_watcher.ignoreRegex(r'WARNING Content overrun') stdout_watcher.ignoreRegex(r'ERROR Fetching ') stdout_watcher.ignoreRegex(r'DEBUG ') stdout_watcher.ignoreRegex(r'INFO Fetch(ed|ing) ')
def setupProject(self): ProjectProcess(self, ['echo', 'Hello World!'])
def setupProject(self): self.project.debugger.enabled = False self.config.use_cpu_probe = False self.config.process_max_user_process = 50 port = 8848 seed = random.randint(0, 60000) timeout = 60 * 60 server_process = ProjectProcess(self.project, [ 'python3', '-m', 'huhhttp', '--port', str(port), '--seed', str(seed), '--fuzz-period', '500', '--restart-interval', '250', ], timeout=timeout) WatchProcess(server_process) process = ProjectProcess(self.project, [ 'python3', '-X', 'faulthandler', '-m', 'wpull', '127.0.0.1:{0}'.format(port), '--timeout', '5', '--warc-file', 'fusil-test', '-r', '--debug', '--page-requisites', '--delete-after', '--tries', '2', '--retry-connrefused', '--database', 'wpull.db', '--span-hosts-allow', 'page-requisites,linked-pages', '--no-check-certificate', '--concurrent', str(random.randint(1, 10)), ], timeout=timeout) process.env.set( 'PYTHONPATH', os.path.join(os.path.abspath(os.path.dirname(__file__)), '..', '..')) process.env.set('OBJGRAPH_DEBUG', '1') process.env.set('FILE_LEAK_DEBUG', '1') WatchProcessSpecificStatusCode(process) stdout_watcher = WatchStdout(process) stdout_watcher.max_nb_line = None stdout_watcher.ignoreRegex( r'WARNING Invalid content length: invalid literal for int') stdout_watcher.ignoreRegex(r'WARNING Unable to parse URL ') stdout_watcher.ignoreRegex(r'WARNING Failed to read document at ') stdout_watcher.ignoreRegex(r'WARNING Content overrun') stdout_watcher.ignoreRegex(r'ERROR Fetching ') stdout_watcher.ignoreRegex(r'DEBUG ') stdout_watcher.ignoreRegex(r'INFO Fetch(ed|ing) ') stdout_watcher.ignoreRegex(r'lsof: WARNING: ')
def setupProject(self): # Create an agent: don't store the object, it's already done # in the agent constructor ProjectProcess(self.project, ['echo', 'Hello World!'])