Hello,

I’m looking for feedback on whether there would be project interest /
support on me creating an initial fuzz test suite for some core GRUB
functions and then integrating these fuzzers into the OSS-Fuzz project that
would run them and automate bug reporting to project owners / maintainers
on some predefined periodic basis.
https://github.com/google/oss-fuzz

Fuzzing helps find program correctness issues like out of bounds accesses,
use after free, crashes, etc. that can sometimes be used for malicious
purposes.

To get a sense of what a fuzzer suite looks like you could reference an
existing project integrated into oss-fuzz like GNUTLS:
https://gitlab.com/gnutls/gnutls/-/tree/master/fuzz?ref_type=heads

There is some project setup as well in the oss-fuzz repo similar to:
https://github.com/google/oss-fuzz/tree/master/projects/gnutls

If there is favorable feedback I would perform the following general steps:
1. Identify core GRUB functions to fuzz first (likely those usable in
lockdown and seen as most likely to be widely used at first, and that are
seen as a possible source of untrusted input).
2. In a private fork of GRUB (with core GRUB maintainers invited):
  a. Get a fuzz target added to the build system.
  b. Implement fuzzers for the core features.
  c. Fix issues identified by the fuzzers, if any.
  d. Create docs around how to build the fuzzers, run them, and locally
troubleshoot issues
   e. Submit patches to the maintainers and (if not sensitive due to
uncovered vulnerabilities) to this mailing list for review.
   f. With maintainers support, get the fuzzers merged to GRUB mainline.
3. Open a new project request in the oss-fuzz repo following their
documentation:
     a.
https://github.com/google/oss-fuzz/blob/master/docs/getting-started/accepting_new_projects.md
     b.
https://google.github.io/oss-fuzz/getting-started/new-project-guide/
4. If the project approves I’d be willing to serve as the maintainer of the
fuzzing and oss-fuzz components to ensure build failures are corrected and
newly identified issues are worked and triaged.
5. Over time we can work to improve code coverage via the fuzzers.


Pros:
1. Increase the code robustness
2. Quickly find robustness issues caused by future changes
Cons:
1. Requires up front development to get going- I’m happy to do as much of
this as I can but it will require support from the busy project maintainers
for reviews and such
2. Requires staying on top of new fuzz failures prior to the oss-fuzz
disclosure deadline (I’m happy to support this as much as I can) - ref
https://google.github.io/oss-fuzz/getting-started/bug-disclosure-guidelines/


Please let me know your thoughts.

Thanks,
Andrew
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to