Out-of-Cancel: A Vulnerability Class Rooted in Workqueue Cancellation APIs
This article uses the espintcp vulnerability (CVE-2026-23239) as a case study to look at the structure in which the Out-of-Cancel bug class shows up, and to walk through how combining complex kernel interleavings makes the bug actually exploitable.
A Race Within A Race: Exploiting CVE-2025-38617 in Linux Packet Sockets
A step-by-step guide to exploiting a 20-year-old bug in the Linux kernel to achieve full privilege escalation and container escape, plus a cool bug-hunting heuristic.
CVE-2025-38352 (Part 3) - Uncovering Chronomaly
Walking through the exploit development process of the Chronomaly exploit for CVE-2025-38352.
CVE-2025-38352 (Part 2) - Extending The Race Window Without a Kernel Patch
Improving the PoC from the part 1 by extending the race window from userland.
CVE-2025-38352 (Part 1) - In-the-wild Android Kernel Vulnerability Analysis + PoC
Analyzing and writing a PoC for CVE-2025-38352.
100+ Kernel Bugs in 30 Days
We used AI agents to reverse engineer Windows kernel drivers to find zero-days. It worked better than expected. Which is bad.
Linternals: Exploring The mm Subsystem via mmap [0x02]
In this part we'll use our case study to explore how the Linux kernel maps private anonymous memory.
Linternals: Exploring The mm Subsystem via mmap [0x01]
In this series we'll explore the Linux kernel's memory management subsystem, using a simple userspace program as our starting point.
Linternals: The Slab Allocator
This time we're going to build on that and introduce another memory allocator found within the Linux kernel, the slab allocator, and it's various flavours. So buckle up as we dive into the exciting world of SLABs, SLUBs and SLOBs.
Linternals: Introducing Memory Allocators & The Page Allocator
I know you've all been waiting for it, that's right, we're going to be taking a dive into another exciting aspect of Linux internals: memory allocators!
Linternals: The Kernel Virtual Address Space
In this part of our journey into virtual memory in Linux, we cover the mystical kernel memory map and all it entails.
Linternals: The User Virtual Address Space
We continue our journey to understand virtual memory in Linux, as we take a closer look at the user virtual address space.
CVE-2022-0435: A Remote Stack Overflow in The Linux Kernel
Recently I discovered a vulnerability in the Linux kernel that's been lurking there since 4.8 (July 2016)! CVE-2022-0435 is a remotely and locally exploitable stack overflow in the TIPC networking module of the Linux kernel
Linternals: Introducing Virtual Memory
Alright, let's get stuck into some Linternals! As the title suggests, this post will be exploring the ins and outs of virtual memory with regards to modern Linux systems.
Setting Up A Virtualised (Linux) Empire on Apple Silicon
Follow me on my journey moving my virtualisation workflow as a Linux security researcher from Linux x86_64 to MacOS aarch64.
Linternals: The (Modern) Boot Process [0x02]
Welcome to the second part of my totally-wasn't-meant-to-be-a-one-part Linux internals post on the modern boot process!
Linternals: The (Modern) Boot Process [0x01]
What more appropriate way to kick off a series on Linux internals than figuring out how we actually get those internals running in the first place? This post is going to cover the process that takes us from pressing a power button, to a fully usable Linux operating system.
Kernel Exploitation Techniques: Turning The (Page) Tables
This post explores attacking page tables as a Linux kernel exploitation technique for gaining powerful read/write primitives.
ZDI-24-821: A Remote UAF in The Kernel's net/tipc
In this post I discuss a vulnerability which allows a local, or remote attacker, to trigger a use-after-free in the TIPC networking stack on affected installations of the Linux kernel.
Exploring Linux's New Random Kmalloc Caches
Let's explore the modern kernel heap exploitation meta and how the new RANDOM_KMALLOC_CACHES tries to address it.