dmk.sh /research
Posts

Research and writeups

Long-form notes on engagements, methodology, and the patterns I keep finding. Filter by topic; chronological below.

Filter
Research

A kiosk is not a boundary: threat-modeling Cage, Wayland, and Chromium

Part one of a practical series on building a real-world Linux kiosk environment with Debian Trixie, Wayland, Cage, Chromium, TypeScript, CSS, HTML, and a Python backend.
Apr 28, 2026 · 13 min read · LinuxWaylandKiosk
2026-04-27

The PHP concat operator interruption — a bug I sat on for thirteen years

A first-person account of an unreported bypass of CVE-2010-2191 I found around 2010, never disclosed, and which lived on in shipped PHP until 8.3.0 in November 2023. What I did, what I didn't, and what the project did and didn't.

PHPMemory SafetyUse-After-FreeDisclosureRetrospective
12 min
2026-03-08

Defeating PHP's internal boundaries — a hardening guide for PHP 8.5

Why every PHP-internal security control collapses in front of FFI or a single memory-corruption primitive — including a practical answer to whether FFI escapes Docker — and what your hardening posture actually needs to look like in 2026.

PHPHardeningDefenseMemory SafetyOperations
37 min
2026-01-22

Two audiences, one report: the structure I use for every engagement

The board wants to know whether you're a bigger or smaller problem than the last firm. The engineers want to know which line of code to change. A report that addresses only one of them is not finished.

MethodologyReportingProcess
8 min
2010-07-22

PHP strrchr() userspace interruption — reference mutation during error handling

In PHP 5.2, strrchr() kept using a referenced haystack zval after attacker-controlled error-handler code could retype it during needle conversion, leaking heap memory across PHP-side hardening boundaries.

CVEPHPMemory SafetyUse-After-FreeDisclosure
medium 9 min