FuzzVizz

One small step for man, one giant leap for mankind

Margaret Hamilton

While the Apollo 11 mission is celebrated for the historic achievement of landing the first humans on the Moon, the success of this mission was also greatly enabled by the tireless efforts of a pioneering computer scientist - Margaret Hamilton. As the lead software engineer responsible for developing the onboard flight software for NASA's Apollo missions, including Apollo 11.

On the left, you can see Margaret Hamilton next to the printout of the source code of the Apollo flight software, together with its documentation. If we are generous to Ms. Hamilton, the stack of papers is about 2 meters high.

Nowadays, all of us browse the web, and the lines of code for Chromium and your favorite operating system amount to about 100 million lines of code. If we imagine printing this code, we would get a stack of 370 meters (assuming 27 lines per page and a thickness of 0.1mm per page).

While 2 meters of complexity landed humanity on the Moon in 1969, today we need 370 meters of complexity to surf the web.

The growth in software complexity is a testament to the incredible advancements in technology, but it also highlights the challenges faced by developers and security researchers in navigating and understanding these vast codebases.

As software systems evolve, their codebase expands exponentially, making it increasingly difficult to maintain a comprehensive understanding of their inner workings. Below visualization offers a unique perspective, tracking the growth of different projects over time. By leveraging Git history, we can visualize the steady accumulation of code, highlighting the sheer scale of modern software development and the pressing need for effective testing strategies.

Ruby

WebKit

Lua

Untangling the Web of Bug Reports

Fuzz testing often generates an overwhelming number of bug reports, many of which may be duplicates or share common root causes. Clusters visualization tackles this challenge head-on, leveraging semantic clustering techniques to group related bug reports and uncover patterns that would otherwise remain obscured. By visualizing these clusters, developers can gain valuable insights into the characteristics and underlying issues within their codebase, streamlining the debugging process and reducing the burden of manual analysis.

Ruby

WebKit

Navigating the Labyrinth of Code Coverage

At the heart of fuzz testing lies the pursuit of comprehensive code coverage – the holy grail of uncovering hidden vulnerabilities. Our coverage visualization offers a unique perspective, combining a hierarchical treemap layout with interactive exploration. Users can dive deep into the codebase, inspecting coverage at the module, file and function level, empowering them to identify the elusive blind spots that fuzzers struggle to reach. By shedding light on the coverage landscape, FuzzVizz equips developers and security researchers with the insights they need to refine their testing strategies and maximize the impact of their fuzzing campaigns.

Lua

LuaJIT

Luau

CPython

PHP

MicroPython

Ruby

Mruby