Tagged
#security
18 posts
Attacking the Lies About Disk Layout
A flag hidden in the RAM disk with no name, a crafted directory entry that reads it right out, and the one-field fix that turns 'in the image' into 'in the data.' A bounds check is only as trustworthy as the bound it compares against.
ReadThe confused deputy
I planted a flag on a kernel-only page and wrote a ring-3 program to steal it. The CPU stopped the direct read cold — then my own syscall handed the flag over the moment it dereferenced a caller-chosen pointer. The one door the hardware cannot guard for you.
ReadThe first wall
Ring 3, a syscall gate, and the two bits that turn 'the kernel is the only program' into 'the kernel runs code it doesn't trust.' The first time in this project that the hardware, not my kernel's goodwill, holds code back.
ReadThe whole point, arrived at
Subdirectories, cd/pwd/ls/cat, and the moment the core arc — boot, memory, tasks, shell, files — is complete. Along the way I learned the hard way that a termination proof is not a safety proof: my validator provably terminated and still hid two denial-of-service bugs.
ReadFiles are just convincing lies about disk layout
I built a read-only filesystem for my from-scratch kernel, and the lesson is what a 'file' actually is: a directory table of {name, offset, length} over a flat run of bytes. The hard, security-relevant code isn't the reading — it's the refusing.
ReadTen Rounds of Breaking My Own App: The Tools, and the Lessons
The bespoke tooling that made a ten-round self-pentest possible, the attacks that failed, the full round-by-round scoreboard, and the lessons that outlive the app. Part 4 of a four-part series.
ReadOne CVE, Two Ecosystems: a Kopia RCE Check for Metasploit and Nuclei
CVE-2026-45695 is an argument-injection RCE in Kopia's SFTP ProxyCommand handling. I shipped a detection for it twice — a Metasploit exploit and a Nuclei template — and the two idioms disagree in instructive ways.
ReadThe Flagship Encryption Feature That Never Actually Turned On
The eighth round of a self-pentest found MoodHaven's flagship 'encrypted at rest' feature had never engaged on any build — then a custom attack tool and a fix-the-fixes round closed the campaign. Part 3 of a four-part series.
ReadMy First Metasploit Module to Land: an Audiobookshelf Auth Bypass
CVE-2025-25205 is an unauthenticated auth bypass in Audiobookshelf caused by matching a whitelist regex against the full request URL — query string and all. Here's the bug, the crash-safe detection module I wrote for it, and what it took to get my first PR merged into the Metasploit Framework.
ReadAttacking the AI Stack: Teaching garak to Smuggle Exploits Through a Model
The LiteLLM scanner attacked the gateway. These two garak probes attack the layer above it — getting the model itself to hand you a shell command or a Mongo operator, on the bet that something downstream will run it. Here's how the probes work, and why the detectors are the hard part.
ReadI Pentested My Own Ask Bot
I put the 'Ask Me' bot on this site through a real security pass — prompt injection, jailbreaks, input fuzzing, and an automated LLM scanner from a Kali box. Here's what held, what surprised me, and the one latent bug I found.
ReadWriting a Metasploit Module for a Pre-Auth SQLi in an LLM Gateway
How I turned CVE-2026-42208 — a time-based blind SQL injection in LiteLLM's proxy — into a benign, lab-verified Metasploit detection module, and what the Rapid7 review cycle taught me about shipping upstream.
ReadA Header You Were Never Supposed to Send: Detecting the Next.js Middleware Bypass
CVE-2025-29927 lets an external request skip Next.js middleware entirely — and with it every auth check built there — by sending one header the framework only ever meant to talk to itself. Here's the bug, and the Metasploit scanner I wrote to detect it without touching the data behind the gate.
ReadThe Bugs I Found Attacking My Own Journaling App — and the Bugs My Fixes Created
The confirmed vulnerabilities from a ten-round self-pentest of MoodHaven Journal: a readable database, silently lost edits, keys leaking over the LAN — and the critical bugs my own fixes introduced. Part 2 of a four-part series.
ReadHow I Tried to Break My Own Encrypted Journaling App — Ten Times
Why I ran a ten-round penetration test against my own privacy-first journaling app — the attack lab, the AI-orchestrated workflow, and the rules of engagement. Part 1 of a four-part series.
ReadSo We Rooted the Phone and Went Deeper
The unrooted phone told us our encryption held. Root let us check whether we were telling ourselves the truth. We weren't, entirely — and that was the point.
ReadI Tried to Break Into My Own Journaling App on an Unrooted Pixel 9
A weekend attacking my own encrypted journaling app. The only foothold I got was my own debug build, my standard MITM playbook failed completely, and figuring out why taught me the most.
ReadChanging a Password Is a One-Liner — Unless You Encrypt Everything
Crash-safe master-password rotation in a zero-knowledge journaling app: re-encrypting across two layers and two runtimes with a single atomic flip a kill -9 can't corrupt.
Read