Things I build, break, fix, and write about

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 I want it if the machine might be stolen, tampered with, or left somewhere I do not trust.

15 September 2026
Single-sided BPool joins drain mOCEAN via SideStaking

Ocean Protocol BPool single-sided join exit math is where this one falls apart, and I have a soft spot for bugs that look tidy until another contract...

15 September 2026
ecrecover checks for Lixir Vault permit signatures

Lixir Vault permit signatures looked ordinary until the final check was missing. If `ecrecover` only needs to return a nonzero address, you have not...

14 September 2026
Chaining logic bugs in Microsoft Edge sandbox escape

Microsoft Edge sandbox escape chains do not need memory corruption if the trust checks are loose enough. Orange Tsai’s Pwn2Own chain was nasty...

Latest blog posts you might like

28 August 2026
Gateway API TCPRoute for raw L4 routing

Gateway API TCPRoute finally gives raw L4 routing a proper shape, without the usual controller-specific nonsense. I like it because it stays plain, listener attachment is explicit, and you are not...

27 August 2026
Clipboard hijacking in cryptocurrency transfers

clipboard hijacking works because the address still looks right, until it does not. I prefer to treat the clipboard as hostile, especially with cryptocurrency transfers, where one careless paste is...

27 August 2026
Device encryption limits corporate data theft

Device encryption is useful, but it will not save you from corporate endpoint data theft once a session is live. I have seen the mess that comes from cached files, browser stores, and synced folders;...

26 August 2026
Retaining access logs for healthcare breach notifications

Healthcare breach notifications are only as solid as the logs behind them. I have seen enough broken audits to know that dashboards are no substitute for raw access records, especially when the notice...

26 August 2026
Self-hosted Metabase exposure from unauthenticated SQL

I’ve seen enough self-hosted tools turn into soft centres, and Metabase SQL injection is another reminder. If your analytics box holds credentials, exports and admin access in one place, one bad...

25 August 2026
Patching TrueConf Server 5.3.x before 5.3.9

An exposed TrueConf server is not just a nuisance, it can become a delivery point for poisoned client installers. I would patch first, then check every file it has been serving, because TrueConf...

25 August 2026
Sandboxing agentic AI to block unsafe web actions

Sandboxing agentic AI is less about the model than the exits. If frontier AI evaluations can browse, submit or copy data, the only thing between a test run and a mess is the permission boundary, and I...

24 August 2026
Testing frontier AI for sensitive data handling

frontier AI evaluations are easy to get wrong when the model only sees tidy prompts and harmless files. I care more about where the data ends up, in logs, caches, memory, or a tool call, because that...

23 August 2026
Testing agent boundaries before tool access widens

Frontier AI evaluations are only useful if they fail in the right places. If a model can keep itself safe until the last gate, then the gate is doing the work, not the model, and I would rather find...

22 August 2026
Skia integration for Rust image decoding

Chromium image codecs are where browser safety gets real, because malformed images arrive before anything else useful has happened. I like the Skia route for that reason; it keeps the ugly parsing...