-
Notifications
You must be signed in to change notification settings - Fork 4.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add fuzzer and OSS-fuzz build script #10326
Conversation
Thanks for your pull request. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please follow instructions at https://git.k8s.io/community/CLA.md#the-contributor-license-agreement to sign the CLA. It may take a couple minutes for the CLA signature to be fully registered; after that, please reply here with a new comment and we'll verify. Thanks.
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here. |
Welcome @AdamKorcz! |
Hi @AdamKorcz. Thanks for your PR. I'm waiting for a kubernetes member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
Please squash the commits. Perusing the OSS-Fuzz documentation, I was not able to find a definition of the API for a fuzz target, particularly not a definition of the integer return values. I also don't see any provision of a seed corpus or dictionary. Shouldn't this be tuned towards JSON? /ok-to-test |
I have not forgotten about this PR. I will ping you once it is ready to review. |
The fuzzer is implemented by way of go-fuzz, and some documentation on the integer return values can be found here: https://github.com/dvyukov/go-fuzz#usage
To be meticulous: We don't have to do this, but it will help the fuzzer significantly. During build process we will clone https://github.com/google/AFL and get the json.dict from there, and we will do the same for the corpus at https://github.com/dvyukov/go-fuzz-corpus. The two commands in the build file moves the dict and zip files to the correct location with the correct names. |
@johngmyers Does it look fine? From my side I consider the corpus and the dict added and all that is needed now is a squash. |
Please squash and I'll approve. |
Done! |
Thanks @AdamKorcz! /lgtm |
/approve |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: AdamKorcz, mikesplain The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
@AdamKorcz is the fuzzing going to be happening on some platform that we can access? you mentioned needing an email address: ideally we could use a distribution list but I don't know if we have one setup other than a few announcement lists |
@rifelpet The fuzzing will be done by OSS-fuzz which offers a dashboard for found bugs, stats and more. The dashboard is available at https://oss-fuzz.com/, and to get access to the kOps project maintainers need to add their email address in the project.yaml file here. For now, please leave all maintainer email addresses in the current integration PR ( google/oss-fuzz#4729 ) as we are currently discussing whether or not kOps and Kubernetes should be in the same integration in OSS-fuzz. Inputs on that thread are welcome. |
This PR adds a go-fuzz fuzzer that targets
WriteToken
as well as a build script to integrate Kops into OSS-fuzz.I have the integration script available for OSS-fuzz and will be happy to finalize the integration. For this, at least one maintainers email is needed for potential bug reports.
Fuzzing is a way of testing programs whereby pseudo-random data is passed to a target application with the goal of finding bugs and vulnerabilities. Kubernetes is already being fuzzed continuously by way of OSS-fuzz, and this has led to finding bugs and vulnerabilities.