{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/autopenbench-benchmarking-generative-agents","title":"AutoPenBench: Benchmarking Generative Agents for Penetration Testing","arxiv_id":"2410.03225","date":"2024-10-04","proceeding":null,"authors":["Luca Gioacchini","Marco Mellia","Idilio Drago","Alexander Delsanto","Giuseppe Siracusano","Roberto Bifulco"],"abstract":"Generative AI agents, software systems powered by Large Language Models (LLMs), are emerging as a promising approach to automate cybersecurity tasks. Among the others, penetration testing is a challenging field due to the task complexity and the diverse strategies to simulate cyber-attacks. Despite growing interest and initial studies in automating penetration testing with generative agents, there remains a significant gap in the form of a comprehensive and standard framework for their evaluation and development. This paper introduces AutoPenBench, an open benchmark for evaluating generative agents in automated penetration testing. We present a comprehensive framework that includes 33 tasks, each representing a vulnerable system that the agent has to attack. Tasks are of increasing difficulty levels, including in-vitro and real-world scenarios. We assess the agent performance with generic and specific milestones that allow us to compare results in a standardised manner and understand the limits of the agent under test. We show the benefits of AutoPenBench by testing two agent architectures: a fully autonomous and a semi-autonomous supporting human interaction. We compare their performance and limitations. For example, the fully autonomous agent performs unsatisfactorily achieving a 21% Success Rate (SR) across the benchmark, solving 27% of the simple tasks and only one real-world task. In contrast, the assisted agent demonstrates substantial improvements, with 64% of SR. AutoPenBench allows us also to observe how different LLMs like GPT-4o or OpenAI o1 impact the ability of the agents to complete the tasks. We believe that our benchmark fills the gap with a standard and flexible framework to compare penetration testing agents on a common ground. We hope to extend AutoPenBench along with the research community by making it available under https://github.com/lucagioacchini/auto-pen-bench.","url_abs":"https://arxiv.org/abs/2410.03225v2","url_pdf":"https://arxiv.org/pdf/2410.03225v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"autopenbench-benchmarking-generative-agents","repo_url":"https://github.com/lucagioacchini/auto-pen-bench","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"autopenbench-benchmarking-generative-agents","repo_url":"https://github.com/lucagioacchini/genai-pentest-paper","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"benchmarking","task_name":"Benchmarking"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2410.03225","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2410.03225"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/lucagioacchini/auto-pen-bench","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/lucagioacchini/genai-pentest-paper","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":2,"unverified":3},"by_repo_kind":{"official":{"samples":5,"ran":2,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"59f06d9e44319dae","entry":"create_service","repo":"lucagioacchini/auto-pen-bench","repo_kind":"official","path":"setup/manage_docker_compose.py","file_url":"https://github.com/lucagioacchini/auto-pen-bench/blob/HEAD/setup/manage_docker_compose.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"59f06d9e44319dae"}},{"code_sha256_prefix":"b646c22ac82dc528","entry":"include_messages","repo":"lucagioacchini/auto-pen-bench","repo_kind":"official","path":"benchmark/machines/in-vitro/cryptography/vm0/server.py","file_url":"https://github.com/lucagioacchini/auto-pen-bench/blob/HEAD/benchmark/machines/in-vitro/cryptography/vm0/server.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b646c22ac82dc528"}},{"code_sha256_prefix":"97878fab4951b780","entry":"include_messages","repo":"lucagioacchini/auto-pen-bench","repo_kind":"official","path":"benchmark/machines/in-vitro/cryptography/vm0/source.py","file_url":"https://github.com/lucagioacchini/auto-pen-bench/blob/HEAD/benchmark/machines/in-vitro/cryptography/vm0/source.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"97878fab4951b780"}},{"code_sha256_prefix":"4c87da10d7498457","entry":"load_data","repo":"lucagioacchini/auto-pen-bench","repo_kind":"official","path":"autopenbench/utils/utils.py","file_url":"https://github.com/lucagioacchini/auto-pen-bench/blob/HEAD/autopenbench/utils/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4c87da10d7498457"}},{"code_sha256_prefix":"c14daff9b431e794","entry":"load_milestones","repo":"lucagioacchini/auto-pen-bench","repo_kind":"official","path":"autopenbench/utils/utils.py","file_url":"https://github.com/lucagioacchini/auto-pen-bench/blob/HEAD/autopenbench/utils/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c14daff9b431e794"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}