{"id":21098883,"url":"https://github.com/yuntongzhang/vulnfix","last_synced_at":"2025-10-29T00:02:10.974Z","repository":{"id":44829092,"uuid":"489889964","full_name":"yuntongzhang/vulnfix","owner":"yuntongzhang","description":"Program Vulnerability Repair via Inductive Inference","archived":false,"fork":false,"pushed_at":"2023-12-21T09:18:59.000Z","size":24932,"stargazers_count":20,"open_issues_count":4,"forks_count":6,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-16T16:50:05.131Z","etag":null,"topics":["program-repair"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yuntongzhang.png","metadata":{"files":{"readme":"README.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,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-05-08T08:41:37.000Z","updated_at":"2025-04-14T02:16:59.000Z","dependencies_parsed_at":"2025-05-16T16:46:51.591Z","dependency_job_id":null,"html_url":"https://github.com/yuntongzhang/vulnfix","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yuntongzhang/vulnfix","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuntongzhang%2Fvulnfix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuntongzhang%2Fvulnfix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuntongzhang%2Fvulnfix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuntongzhang%2Fvulnfix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yuntongzhang","download_url":"https://codeload.github.com/yuntongzhang/vulnfix/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuntongzhang%2Fvulnfix/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268623998,"owners_count":24280145,"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","status":"online","status_checked_at":"2025-08-03T02:00:12.545Z","response_time":2577,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["program-repair"],"created_at":"2024-11-19T22:56:58.147Z","updated_at":"2025-10-18T03:54:32.497Z","avatar_url":"https://github.com/yuntongzhang.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VulnFix\n\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![docker pull](https://img.shields.io/docker/pulls/yuntongzhang/vulnfix)](https://hub.docker.com/repository/docker/yuntongzhang/vulnfix)\n![docker build](https://github.com/yuntongzhang/vulnfix/actions/workflows/docker-image.yml/badge.svg)\n\n\nVulnFix - An automated program repair technique for fixing security vulnerabilities via inductive\ninference.\n\nVulnFix targets security vulnerabilities in C/C++ programs, such as buffer overflows, integer\noverflows, and NULL dereferences. It works by first exploring the states at the patch location\nwith a combination of input-level fuzzing and state-level mutations, and then generalizing\na _patch invariant_ from the observed states.\nA patch invariant is a formula that evaluates to true for the benign states and false for\nthe vulnerable states, which can be used to generate a patch later on.\n\n## Getting started\n\n_New changes has been added to VulnFix since the ISSTA22 publication. To get the version during\nISSTA22 period and steps for using that version, please refer to [ISSTA22.md](doc/ISSTA22.md)._\n\n\u003e TODO: Add getting started instruction for the new tool version.\n\nFirstly, certain OS configurations are required to be set for VulnFix and its dependencies (e.g. AFL).\nTo set these, run:\n\n```bash\necho core | sudo tee /proc/sys/kernel/core_pattern\ncd /sys/devices/system/cpu\necho performance | sudo tee cpu*/cpufreq/scaling_governor\n\necho 0 | sudo tee /proc/sys/kernel/randomize_va_space\n```\n\nThe VulnFix tool and its dependencies are available in docker container. (Please refer to\n[doc/INSTALL.md](doc/INSTALL.md) for instructions on building it from source.)\n\nTo start:\n\n```bash\ndocker pull yuntongzhang/vulnfix:latest-manual\ndocker run -it --memory=30g --name vulnfix yuntongzhang/vulnfix:latest-manual\n```\n\nOnce inside the container, invoke it on one example (e.g. CVE-2012-5134) with:\n\n```bash\n# clone and build the target project\ncd /home/yuntong/vulnfix/data/libxml2/cve_2012_5134\n./setup.sh\n# run vulnfix to repair\ncd /home/yuntong/vulnfix\nvulnfix data/libxml2/cve_2012_5134/config\n```\n\nAfter VulnFix finishes, the results (generated invariants and patches) can be found in\n`/home/yuntong/vulnfix/data/libxml2/cve_2012_5134/runtime/result/`.\n\n## Documentation\n\nMore details can be found in the documentation in the `doc` folder. [MANUAL.md](doc/MANUAL.md)\ndescribes how to use VulnFix in more detail; [DEVELOP.md](doc/DEVELOP.md) contains useful\ninformation for hacking and extending VulnFix.\n\n\n## Bugs\n\nVulnFix should be considered alpha-quality software. Bugs can be reported\n[here](https://github.com/yuntongzhang/vulnfix/issues).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuntongzhang%2Fvulnfix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuntongzhang%2Fvulnfix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuntongzhang%2Fvulnfix/lists"}