Skip to content
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 basic options and documentations for fuzzing #1601

Merged
merged 5 commits into from
Nov 11, 2020
Merged

Conversation

mmisono
Copy link
Collaborator

@mmisono mmisono commented Nov 8, 2020

Several months ago and the last month, I fuzzed bftrace with AFL and found several bugs. This PR adds the documentation about it and some options useful for fuzzing. There are many fuzzers other than AFL and several techniques. I've been trying to fuzz various ways in my spare time and find some useful ways. I plan to update the document later. Also, I hope for more people to try to fuzz and find bugs and make bpftrace safer :)

Please read each commit messages and docs/fuzzing.md for the details.

Checklist
  • Language changes are updated in docs/reference_guide.md
  • User-visible and non-trivial changes updated in CHANGELOG.md
  • The new behaviour is covered by tests

@mmisono mmisono changed the title Fuzz Add basic options and documentations for fuzzing Nov 8, 2020
Copy link
Member

@danobi danobi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the detailed write up!

src/main.cpp Outdated Show resolved Hide resolved
src/ast/callback_visitor.h Outdated Show resolved Hide resolved
src/ast/callback_visitor.h Outdated Show resolved Hide resolved
src/main.cpp Outdated Show resolved Hide resolved
docs/fuzzing.md Outdated Show resolved Hide resolved
docs/fuzzing.md Outdated Show resolved Hide resolved
This option lets the program stop right after the specified process.
The supported arguments are either 'semantic' or 'codegen'. For example,
`bpftrace --test semantic -e 'BEGIN{}'` does semantic analysis and then
quits. This option is useful for tests and fuzzing.

This option is intended for developers, and its usage is not included in
the reference guide.
src/ast/callback_visitor.h Outdated Show resolved Hide resolved
This visitor calls a callback function on each node.
When doing fuzzing, it is important to limit the number of AST nodes
because otherwise a fuzzer might keep to generate a very long program
that cause a stack overflow.

This introduces `BPFTRACE_NODE_MAX` environment variable, and it
controls the maximum number of AST nodes. This feature is intended for
developers, and its usage is not included in the reference guide.
Copy link
Member

@fbs fbs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice

@fbs
Copy link
Member

fbs commented Nov 11, 2020

Maybe we can try https://github.com/google/oss-fuzz too

@mmisono mmisono merged commit 77a25cf into bpftrace:master Nov 11, 2020
@mmisono mmisono mentioned this pull request Nov 11, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants