For the past few weeks I have been sharing some of the interesting slides from last month's LLVM Developers' Meeting in San Jose, California. Among the interesting technical sessions covered so far were on ThreadSanitizer and MemorySanitizer, how Google treats Clang compiler errors, the state of 64-bit ARM, Clang analyzing code comments to auto-generate documentation, LLVM/Clang being ported to a super computer, and Intel's Shevlin Park project that uses LLVM/Clang to make Microsoft's C++ AMP framework cross-platform. There's one more interesting presentation that may interest many Phoronix readers and the slides for that session were recently uploaded.
Jared Carlson of GoToTheBoard has been involved with a research project being financed by DARPA, a division of the US Department of Defense. The talk comes down to leveraging LLVM and LLDB (the LLVM debugger) for dynamic and static security tasks. "The talk discusses incorporating both static and dynamic analysis techniques by using LLVM and LLDB components and that these can easily be integrated back into LLVM development workflow. These tools will help find exploitable bugs within the llvm development environment, illustrate their consequences and are customizable and easily shared within the community. Funded by DARPA as a Cyber Fast Track effort, we are currently incorporating LLDB and other open source python libraries along with re-written static analysis scripts so that the tools can be easily integrated and altered into a workflow...The talk will discuss how we use the tools to investigate bug severity, utilize artificial intelligence techniques to predispose fuzzing, draw conclusions, and utilize the LLVM technology quite to target various architectures if desired."
Project goals for the US government were to create a tool to find exploitable bugs within a "normal" environment, illustrate consequences of these bugs, educate and interact wit hthe developer, and allow for community improvement and sharing. The areas then covered in the presentation were on static analysis, function graph, data dependency, hypothesis engine, and the fuzzer.
An alpha version of this project was delivered to DARPA in September. A beta version was to be delivered around the end of November. After the project has finished, the plan is to release the code to the open-source community which should happen any day now -- the presentation states the release aim as "early December or thereabouts."
For those wanting to learn more about this LLVM research project, see the 41 PDF slides.