Things I build, break, fix, and write about

17 September 2026
Require a BitLocker pre-boot PIN

TPM-only BitLocker is tidy until you remember what is left exposed when the machine can unlock itself. BitLocker PINs are the small, awkward step that makes a stolen laptop less cooperative, and I trust that far more than wishful thinking about physical security.

17 September 2026
Secure connectivity principles in water sector OT

Secure connectivity principles only work when the boundary is real, not decorative. I’ve seen too many remote paths that looked neat on paper and fell...

16 September 2026
Monitoring radio, transport and core faults

Private 5G resilience does not come from a cheerful dashboard or a nice radio map. I want to see where the attach failed, which path dropped, and...

16 September 2026
Pre-boot authentication for BitLocker

TPM-only BitLocker is convenient, but convenience is not the same as a proper boundary. BitLocker PINs push that line back to pre-boot, which is where...

Latest blog posts you might like

18 July 2026
How .env theft exposes AI service API keys

A stolen .env file is not just a mess to tidy up, it can hand out API keys that keep working long after the box is gone. That is how autonomous attack workflows stay alive, with one credential quietly...

17 July 2026
OCI image trust for Linux host observability

Inspektor Gadget OCI images make deployment easy, but they also move trust to places people rarely examine. I would rather be awkward about signatures, TLS and build inputs now than discover later...

17 July 2026
Object.prototype pollution in Acrobat Reader DC parsing

Adobe Acrobat PDF parsing is one of those areas where a small trust mistake becomes something much nastier. I spent time tracing how polluted prototypes slip into privileged JavaScript, and the path...

16 July 2026
LiteLLM exploit chains at the auth boundary

LiteLLM exploit chains only work because the auth boundary is doing too much, and failing badly when the database wobbles. I trust a proxy less when a bad lookup can quietly turn into proxy-admin...

16 July 2026
Manual validation in AI-assisted pentesting

AI-assisted pentesting is useful until it starts sounding certain, and that is where I get suspicious. The machine can surface a neat story, but manual validation is where you find out whether it...

15 July 2026
Corecrypto proofs against FIPS 203 and FIPS 204

Apple’s corecrypto formal verification work is interesting because it is properly dull, in the best sense. It ties a portable C implementation back to FIPS 203 and FIPS 204, then leaves the optimised...

15 July 2026
alloc_pipe_info: why soft limits shrink new pipes

When pipe-user-pages-soft bites, the kernel stops being predictable in the way people like to assume. I prefer to check F_GETPIPE_SZ and watch the slab class shift for myself, because the difference...

14 July 2026
Detecting hosting infrastructure abuse in transit

A clean brand can hide a dirty transport chain, and that is where hosting infrastructure abuse detection starts to matter. I care less about the logo than the packets, because if the upstream changes...

14 July 2026
Proxmox VE 9.2 VM migration after storage changes

Proxmox VE 9.2 VM migration gets awkward the moment storage changes underneath it. I have seen a VM boot happily on one node, then fall over on the next because the disk still points at the old...

13 July 2026
Coordinating upgrades in Proxmox Datacenter Manager 1.1

Proxmox Datacenter Manager 1.1 only behaves if you keep the control plane ahead of the mess underneath. I prefer to upgrade the manager first, then watch the inventory like a hawk, because stale state...