{"id":13792760,"url":"https://github.com/profuzzbench/profuzzbench","last_synced_at":"2025-05-12T14:32:24.546Z","repository":{"id":40345338,"uuid":"329264164","full_name":"profuzzbench/profuzzbench","owner":"profuzzbench","description":"ProFuzzBench - A Benchmark for Stateful Protocol Fuzzing","archived":false,"fork":false,"pushed_at":"2023-10-10T08:40:25.000Z","size":31034,"stargazers_count":207,"open_issues_count":10,"forks_count":49,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-04-05T22:36:59.735Z","etag":null,"topics":["benchmarking","fuzzing","security"],"latest_commit_sha":null,"homepage":"https://arxiv.org/pdf/2101.05102.pdf","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/profuzzbench.png","metadata":{"files":{"readme":"README-StateAFL.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-01-13T09:58:00.000Z","updated_at":"2024-03-30T21:17:40.000Z","dependencies_parsed_at":"2024-01-20T23:44:26.309Z","dependency_job_id":null,"html_url":"https://github.com/profuzzbench/profuzzbench","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/profuzzbench%2Fprofuzzbench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/profuzzbench%2Fprofuzzbench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/profuzzbench%2Fprofuzzbench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/profuzzbench%2Fprofuzzbench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/profuzzbench","download_url":"https://codeload.github.com/profuzzbench/profuzzbench/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":213860522,"owners_count":15648787,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["benchmarking","fuzzing","security"],"created_at":"2024-08-03T22:01:15.688Z","updated_at":"2024-08-03T22:07:05.950Z","avatar_url":"https://github.com/profuzzbench.png","language":"Shell","readme":"# StateAFL: A Coverage-Driven (Greybox) Fuzzer for Stateful Network Protocols\n\nStateAFL is a fuzzer designed for network servers. It extends the original idea of the AFL fuzzer, which automatically evolves fuzz inputs to maximize code coverage. In addition to code coverage, StateAFL seeks to maximize protocol state coverage. StateAFL automatically infers the current protocol state of the server, by taking snapshots of long-lived data within process memory, and by applying fuzzy hashing to map the in-memory state to a unique protocol state.\n\nFor more information about StateAFL, please check the repository at \u003chttps://github.com/stateafl/stateafl\u003e\n\n# Running StateAFL with ProFuzzBench\n\nProFuzzBench comes with Dockerfiles and scripts to run StateAFL with the benchmark.\nEvery target includes a `Dockerfile-stateafl` that builds the StateAFL fuzzer, and a re-builds the target to be run with StateAFL. This Dockerfile builds on top of the default Dockerfile for the target.\n\nTo build a target for StateAFL:\n```bash\ncd $PFBENCH\ncd subjects/FTP/LightFTP\ndocker build . -t lightftp\ndocker build . -f Dockerfile-stateafl -t lightftp-stateafl\n```\n\nTo build all targets for all fuzzers, you can run the script [profuzzbench_build_all.sh](scripts/execution/profuzzbench_build_all.sh). To run the fuzzers on all targets, you can use the script [profuzzbench_exec_all.sh](scripts/execution/profuzzbench_exec_all.sh).\n\nYou can fuzz an individual target with StateAFL in the same way of other fuzzers. For example:\n```bash\ncd $PFBENCH\nmkdir results-lightftp\n\nprofuzzbench_exec_common.sh lightftp-stateafl 4 results-lightftp stateafl out-lightftp-stateafl \"-P FTP -D 10000 -q 3 -s 3 -E -K -m none -t 1000\" 3600 5\n```\n\nPlease see the main [README.md](README.md) for more information about how to run and analyze experiments with ProFuzzBench.\n\n","funding_links":[],"categories":["Resources","Shell"],"sub_categories":["By Purpose"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprofuzzbench%2Fprofuzzbench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprofuzzbench%2Fprofuzzbench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprofuzzbench%2Fprofuzzbench/lists"}