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

3 July 2026
Why Kubernetes CVE records still flag unfixed issues

Kubernetes CVE records can say “fixed” when nothing was actually fixed, and scanners will believe them. I have seen that sort of paperwork mistake turn into quiet false negatives, then loud surprises...

3 July 2026
Spotting API access in DDoS-as-a-Service panels

DDoS-as-a-Service platforms rarely hide what they are doing; the panel, the payment flow, and the API tend to sit out in the open. I pay more attention to the selling machinery than the noise, because...

2 July 2026
23andMe breach notification gaps and account risk

23andMe breach notification gaps are the part that still bothers me, because people were left guessing whether they had a password problem or something much wider. If you reused a login anywhere,...

2 July 2026
Malware delivery through chatgpt.com/s links

ChatGPT share links can look boringly legitimate, which is exactly the problem. Once a trusted domain starts rendering attacker-controlled HTML, I stop trusting the address bar and start checking...

1 July 2026
cifs.upcall root trust and NSS lookup risk

A forged `cifs.spnego` request should die in the kernel, but on affected builds it reaches root-owned helper code instead. The ugly bit is `cifs.upcall`, where CIFS authentication key descriptions can...

1 July 2026
Harden PAN-OS by disabling auth override cookies

PAN-OS GlobalProtect authentication bypass is not a clever trick, it is a trust error with a neat finish. I prefer the boring fix, disable auth override cookies, then check the portal and gateway...

30 June 2026
Conditional access still anchors ZTNA policy

Zero Trust Network Access looks tidy until you test the policy against a failed identity provider, a stale token, or a changing location. I have seen too many setups where conditional access does all...

30 June 2026
ZTNA access policies for self-hosted services

ZTNA access policies only work when I treat the service, not the subnet, as the thing being protected. Once you start drawing the boundary around the app, rather than the VLAN, the gaps show up...

29 June 2026
Persisting federated users in AWS Cognito

AWS Cognito writes the user record before most people notice the decision point has gone, so I keep the real check in AWS Cognito PreSignUp_ExternalProvider. Anything later is tidying up after the...

29 June 2026
fits_open_file can copy arbitrary paths before validation

CFITSIO Extended Filename Syntax is the bit that makes me distrust a filename on sight. If `fits_open_file` gets attacker input, it can copy, fetch, or touch paths before FITS validation even starts,...