Practical Browser Fuzzing
Patrick Ventuzelo

Dates

22nd-25th of May 2023

Capacity

20

Price

4.000€

Overview

Web Browsers are one of the world's most used and critical software. Using millions of lines of code, they handle, sanitize, and interpret all kinds of (untrusted) data from the web. To be honest, It’s impossible for developers to write such complex pieces of software (involving compilers, interpreters, and parsing libraries) without introducing any bugs.

As shown in the last years, fuzz testing is the most efficient and scalable testing technique to find software bugs. In this training, we will apply fuzzing to find critical vulnerabilities in different web browser implementations.

First, this course will give you all the prerequisites to understand modern web browsers' architecture and significant components. Then, you will create and set up a testing environment allowing you to easily replay, debug, minimize and analyze existing issues, CVEs, and PoCs. Over dedicated modules, you will discover and fuzz the main browser components such as DOM, JS engines, JIT compilers, WebAssembly, and IPC. You will learn how to use famous tools (Honggfuzz, Domato, Dharma, Fuzzilli, Afl++) and create your custom fuzzers to apply different fuzzing techniques (coverage-guided, grammar-based, in-process fuzzing) to find vulnerabilities/bugs.

A lot of hands-on exercises will allow you to internalize concepts and techniques taught in class. This course will mainly focus on Google Chrome, Firefox, and WebKit/JSC. 

Course Topics

Module 1: Browser Internals and Fuzzing Basics

    • Introduction to fuzzing
    • Modern browser architecture & major components
    • Setting up a testing and debugging environment
    • Compile and explore famous browser codebases
    • Fuzzing web browsers fundamentals
    • Improving your fuzzing workflow & automation 

Module 2: Fuzzing DOM & Rendering engines

    • Introduction to the rendering engine
    • HTML/CSS/XML parsing
    • Analysis of existing CVEs, issues, and PoCs
    • Blink, Gecko & WebKit fuzzing
    • DOM rendering & implementation
    • Fuzzing DOM using grammar-based fuzzing

Module 3: Fuzzing JavaScript Engines & JIT Compilers

    • JavaScript engine internals & APIs
    • Memory management and garbage collection
    • Analysis of existing CVEs, issues, and PoCs
    • V8, Spidermonkey & JavaScriptCore fuzzing
    • JIT compilers internals
    • TurboFan and IonMonkey fuzzing

Module 4: Fuzzing WebAssembly Compilers & APIs

    • Introduction to WebAssembly
    • VM architecture & implementation
    • Analysis of existing CVEs, issues, and PoCs
    • Fuzzing WebAssembly JavaScript APIs
    • WebAssembly compilers internals
    • WebAssembly In-process fuzzing

Module 5: Fuzzing IPC and other Components

    • Inter-Process Communication (IPC) internals
    • Analysis of existing CVEs, issues, and PoCs
    • Fuzzing Chrome Mojo/Legacy IPC
    • Discovery of other components' implementation
    • Networking/Data Persistence APIs
    • Fuzzing media and other plugins 

KEY LEARNING OBJECTIVES

    • Discover the architecture and components of modern web browsers.
    • Learn how to create a testing environment for browser fuzzing.
    • Analyze existing CVEs, issues, and PoCs to learn from other researchers.
    • Discover how to use and customize the most famous browser fuzzing tools.
    • Learn how to replay, minimize and analyze crashes.
    • Learn how to apply different fuzzing techniques against browser components.

PREREQUISITES

    • Familiarity with scripting (Python, Bash) and Linux.
    • A working laptop capable of running virtual machines
    • 8GB RAM required, at a minimum
    • 80 GB free Hard disk space
    • VirtualBox
    • Administrator/root/USB access MANDATORY
    • SKILL LEVEL: BEGINNER / INTERMEDIATE 

WHO SHOULD ATTEND

This training is designed for security engineers, vulnerability researchers, bug bounty hunters, and anyone who wants to learn more about web browser internals and discover how to find critical bugs using different fuzzing techniques.

Bio

Patrick Ventuzelo is a senior security researcher, CEO & founder of Fuzzinglabs. After working for the French Ministry of Defense, he specialized in fuzzing, vulnerability research, and reverse engineering. Over the years, Patrick has created multiple fuzzers, found hundreds of bugs, and published various blog posts/videos/tools on topics like Rust, Go, Blockchain, WebAssembly, and Browser security. Patrick is a regular speaker and trainer at various security conferences around the globe, including BlackHat USA, OffensiveCon, REcon, RingZer0, PoC, ToorCon, hack.lu, NorthSec, SSTIC, and others.

Patrick Ventuzelo

Patrick Ventuzelo

Limited Seats - Remember to reserve your ticket!

register now