Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds two fuzzers for
vault.ParseACLPolicy
andrandom.ParsePolicy
respectively.A bit of context: I have previously worked on fuzzing Vault and the ParseACLPolicy fuzzer has previously found a bug that has led to this fix.
I am therefore committing these two fuzzers with the suggestion of setting up continuous fuzzing for Vault through OSS-fuzz. I will shortly be setting of a draft integration on the OSS-fuzz side, and in case there is interest in completing that integration, all that is needed is to merge the fuzzers and provide at least one maintainers email address. This will allow Google to run the fuzzers continuously and notify maintainers in case bugs are found. The service is offered free of charge to open source projects with the implied expectation that bugs are fixed so that the resources spent on running Vaults fuzzers are put to good use.
Fuzzing has proven effective to find bugs in mature software systems, and in essence it is a technique to test programs whereby pseudo-random data is passed to a target with the goal of uncovering bugs and vulnerabilities. In that regard fuzzing continuously has found vulnerabilities in large projects like Kubernetes in the past.
Naturally a lot more can be done in terms of fuzzing Vault, and these two fuzzers are a way for Vault to get started with fuzz-testing.
The fuzzers in this PR are implemented by way of Dvyukovs go-fuzz engine which is a coverage-guided fuzzer. This means that the fuzzer uses feedback from each run in future input-data creation.