Things I build, break, fix, and write about

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 that my observability stack was happily running the wrong thing.

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...

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...

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...

Latest blog posts you might like

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...

13 July 2026
Sitecore cache poisoning coverage after WAF merge

Cloudflare WAF rule merging is exactly the sort of tidy-looking change that can muddle your monitoring. I have seen a live block disappear from a dashboard simply because the rule name moved, which is...