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

Fuzz Test Parsing Logic #394

Open
jonathan-g-davis opened this issue Mar 16, 2025 · 0 comments
Open

Fuzz Test Parsing Logic #394

jonathan-g-davis opened this issue Mar 16, 2025 · 0 comments

Comments

@jonathan-g-davis
Copy link

High level description

Currently, ANISE does not gracefully handle parsing errors and may panic on malformed input. To enhance the robustness and security of ANISE, we are introducing fuzz testing of critical inputs.

Fuzz testing helps uncover edge cases, unexpected inputs, and potential vulnerabilities by automatically generating and feeding random, malformed, or unexpected data into critical functions. By integrating fuzz testing with cargo-fuzz, we can identify and address these failure points, improving error handling and overall resilience.

Requirements

  • Integrate cargo-fuzz for Rust-native fuzz testing
  • Create directory for containing fuzzing targets
  • Populate fuzzing directory with example targets
  • Provide documentation describing fuzzing, recommended practice, and how to extend it in the future

Test plans

  • Identify and fuzz parsing functions containing panic!, unwrap, expect, or unreachable!
  • Confirm that the panic can be reached within a reasonable amount of time (e.g. 15 minutes of fuzzing)

Design

  • Create fuzzing directory within the ANISE core library
    • anise/anise/fuzz
  • Include shared fuzzing code under fuzz library
    • anise/anise/fuzz/src/lib.rs
  • Where required, refactor parsing functions and methods to make them easier to target for fuzzing
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

No branches or pull requests

1 participant