This class is designed to introduce students to the best tools and technology available for automating vulnerability discovery and crash triage with a focus on delivering a practical approach to applying this technology in real deployments.
We will take a deep dive into fuzzing, covering all aspects of this practical approach to finding bugs including targeting open source libraries, binary targets, network protocols, and OS kernels with full system snapshot fuzzing. Class attendees will learn to use the best tools and techniques available to fuzz several real-world pieces of software on both Windows and Linux. Students will learn strategies for analyzing attack surface, writing grammars, and generating effective corpus. We will explore in detail the latest innovations such as harnessing code coverage for guided evolutionary fuzzing and symbolic reasoning for concolic fuzzing.
We approach crash analysis through the lens of scriptable debuggers and program analysis. We will apply tools like reverse debugging and memory debuggers to assist in interactively diagnosing root cause of crashes. Then we will leverage the power of dynamic taint tracking and graph slicing to help isolate the path of user controlled input in the program and identify the exact input bytes influencing a crash. Lastly, we will look at possible ways to determine the impact of a vulnerability.
This class will focus on x86/x64 architecture and target file parsers, network parsers and kernel attack surface on both Windows and Linux environments.
This class is meant for professional developers or security researchers looking to add an automation component to their software security analysis. Students wanting to learn a programmatic and tool driven approach to analyzing software vulnerabilities and crash triage will benefit from this course.
Students should be prepared to tackle challenging and diverse subject matter and be comfortable writing functions in C/C++ to complete exercises involving completing plugins for the discussed platforms. Attendees should have basic experience with debugging native x86/x64 memory corruption vulnerabilities on Linux or Windows.
Students should have the latest VMware Player, Workstation, or Fusion working on their machine.
Note: Attendees will receive all materials for the above topics, however new snapshot fuzzing material may limit the time available to cover some of the later topics and the browser fuzzing module has been converted to self-learning. The topics are covered in sequential order.
Richard Johnson is a computer security specialist with a focus on software vulnerability analysis. Founder of Fuzzing IO and Metaframe AI, research and development companies offering professional training and services in cybersecurity and agentic AI. Richard offers over 20 years of professional expertise and leadership in the information security industry, previously Director of Security Research at Oracle Cloud leading software and hardware vulnerability research teams and at Cisco Talos as the founder of the VulnDev team that finds hundreds of zeroday vulnerabilities each year. Richard has delivered training and presented annually at premier industry conferences for over two decades including Black Hat, Defcon, OffensiveCon, RECON, CanSecWest, and many more.
Richard was also co-founder of the Uninformed Journal and was on program committees for the USENIX Workshop on Offensive Technologies, Recon, Hack in the Box, and Toorcon.
Richard Johnson