GNAT DAS: AI Automated Fuzz Testing for C using LLMs
Internship
AdaCore
Bristol, UK
AdaCore: Helping Developers Build Software that Matters
Everything we do at AdaCore is centered around helping developers build safe, secure and reliable software.
For 30 years, we've partnered with global leaders in aerospace & defense, air traffic management, space, railway and financial services. We've developed tools and services simplifying high-integrity software development through a subscription-based model.
Our 150 global experts based in the US, France, Germany, the UK, and Estonia, collectively develop cutting-edge technologies to address the challenges of high-grade software development.
Joining AdaCore is about joining a culture of innovation, openness, collaboration and dependability.
Context
Developed at AdaCore, the GNAT DAS tool suite includes GNATfuzz, an advanced fuzz testing solution for Ada applications. The next phase in the evolution of this product is to replicate the success of GNATfuzz for Ada by supporting the C programming language. There are multiple challenges to overcome in the automation of test cases and test harnesses for C applications and libraries; these include automated build infrastructures and support for buffers and pointers. Utilization of AI forms a part of the strategy of this internship; AdaCore would like to better understand the benefits of AI over more traditional forms of static analysis. Candidates for this position should have a strong interest in automated dynamic analysis verification and a good understanding of Large Language Models (LLMs) and other AI components. A good working knowledge of C and Python programming languages is essential. Experience with Libclang is highly beneficial.
Goals
1. Goal 1: Automatic generation of C test harnesses
* Create a manual harness for marshaling primitive C types (ignore pointers initially) from binary test cases.
* Genericize the test harness design into a template that can be populated via the fuzzing tool.
* Automate a static analysis of user code bases to capture required data elements and populate the test harness template.
1. Goal 2: Investigate the benefits of AI for test harness generation
* Groupings of pointers to buffers and buffer sizes.
* Help with advanced concepts like function pointers.
* Identification of interesting subprograms for fuzzing.
* Identification of code regions not suitable for fuzzing.
* Auto-mocking of non-fuzzable function calls.
2. Goal 3 (stretch): Automatic generation of interesting values (corpus generation)
* Generate a corpus via static analysis tooling like Libclang.
* Investigate the benefits of corpus generation via AI.
Skills required/nice to have
* Experience/interest in fuzz testing or other forms of dynamic analysis.
* Good programming skills in Python and C.
* Experience/interest in C language interfaces (libclang).
* Solid understanding and interest in LLMs and other primary aspects of AI.
Timeframe & Location
During 2025 - 3 to 9 months - Bristol office.
Beyond the job
We're a global organization driven by diverse backgrounds, fostering innovation through an open exchange of ideas. We welcome applicants of all backgrounds, celebrating diversity.
Our commitment is to help our teammates feel comfortable and satisfied, by encouraging flexibility to ensure them a healthy work-life balance. Additionally, we prioritize individual development by offering continuous training from day one.
#J-18808-Ljbffr