Jamie Taylor

Jamie Taylor

@gaprogman.com

Technology consultant & fractional CTO specializing in .NET architecture & security. Former Microsoft MVP | Host of The Modern .NET Show | Open source contributor

244 followers164 following2.5K posts

Chrome's removal of the eMudhra root is due to reach every device today. The part I keep coming back to: those keys came from a formal, audited ceremony on certified hardware. Debian's weak keys in 2008 came from trusted open source software. ROCA's, in 2017, came from a certified chip.

Last Thursday I was at Leeds Cyber Security Conference. None of the talks were about PHP, and PHP was everywhere. A panellist had been swapped at the last minute because the original was dealing with a PHP vulnerability for clients. There was even an informal "PHP2Shell survivors quiet room".

View full thread

Its advice, like CISA's, was to patch, and where an immediate update is not feasible, to take the system offline until it can be fixed. That building was full of security people. Plenty of businesses running a PHP website have nobody like that at all.

Last Thursday I was at Leeds Cyber Security Conference. None of the talks were about PHP, and PHP was everywhere. A panellist had been swapped at the last minute because the original was dealing with a PHP vulnerability for clients. There was even an informal "PHP2Shell survivors quiet room".

The flaws were in PHP itself, so a site could be built carefully and still be exposed. The NSA's advisory says so directly: "These vulnerabilities are flaws in PHP itself, not in the hosted application or its configuration."

One of the private keys behind a certificate authority trusted by every major browser was the number 4, the same number you get by counting the wheels on a car. Seven more keys from the same company, eMudhra, were numbers below 256. Anyone who looked could work them out.

View full thread

The browsers did their job: Chrome and Firefox blocked the affected certificates within hours of the report. What is left is everything that is not a browser: containers, scripts and pipelines that trust whatever they shipped with. Test your own clients here: emudhra.we-have-a-problem.com/

emudhra.we-have-a-problem.comeMudhra Intermediate CA CompromiseThe private keys of eight eMudhra intermediate CA certificates, trusted by major root programs, have been compromised. Check whether your client is affected and how to protect it.

One of the private keys behind a certificate authority trusted by every major browser was the number 4, the same number you get by counting the wheels on a car. Seven more keys from the same company, eMudhra, were numbers below 256. Anyone who looked could work them out.

In passport terms, it was a passport office whose official seal turned out to be the factory default design. Nobody stole anything. Anyone holding a passport it had stamped could make an identical seal, and anything stamped with it was indistinguishable from the real thing.

Jamie Taylor reposted

.NET has released an out of band security update to address the vulnerability in the Google Brotli library. This is the same library NPM and others use. .NET and ASP.NET Core do not use Brotli by default, you have to opt-in. Details on what to look for in your code are in the advisory.

github.comMicrosoft Security Advisory CVE-2026-111497 - .NET Brotli Decoder Out-of-bounds Write Vulnerability## Executive summary A buffer overflow vulnerability exists in the Brotli decompression library used by .NET. This vulnerability may allow an unauthenticated attacker to read or corrupt process me...

Point to remember: versions 8, 9, and 11 are also vulnerable. But there isn't (as yet) an update for them. Any #dotnet which uses the vulnerable version of the Brotli library is vulnerable. So there MIGHT be out of support versions. Please check. Don't assume you're safe.

A detail from episode 200 worth knowing if you ship containers. When a .NET version leaves support, its container tags do not vanish. In the .NET container team's words: "Unsupported tags and images can still be pulled, but they will no longer receive updates for any reason."

Your build does not break. The image still pulls. It simply stops changing, quietly, and nothing raises an error for anybody to notice. A removal would at least have told someone.

The daily standup has three questions: what did you do yesterday, what will you do today, and what is blocking you. In an agentic team the first two lose their point. Nobody needs a person to stand up and report that the agent built the thing they briefed it on.

The third question becomes the whole meeting. And the honest answer is usually some version of: I do not have a clear enough decision to brief the agent properly.

Episode 200 of The Modern .NET Show is out, and it is a public service announcement instead of a retrospective. Microsoft's support for .NET 8 and .NET 9 ends on 10 November. Check their lifecycle pages before acting on that; one of these dates has already moved once.

View full thread

The rule I would keep from it: across three pairs of similar names, the one with Core in its name, or the higher version number, is the one with a deadline. .NET Framework, System.Web and Windows PowerShell 5.1 follow Windows instead.

Episode 200 of The Modern .NET Show is out, and it is a public service announcement instead of a retrospective. Microsoft's support for .NET 8 and .NET 9 ends on 10 November. Check their lifecycle pages before acting on that; one of these dates has already moved once.

First, the reassuring part, in Microsoft's own words: "Applications built on .NET 8 or .NET 9 will continue to run." No kill switch, no licence check, no expiry. What stops is the supply of security fixes for problems found after that date.

"Working software is the primary measure of progress." That is from the principles behind the Agile Manifesto. Not points, not velocity, not the area under a burndown curve. Somewhere in the last two decades a great many teams swapped the measure for the proxy.

View full thread

Sprints survive, because a regular boundary to stop and steer is useful for reasons that have nothing to do with points. The question at that boundary changes, from how many points we closed to how close we are to shipping something useful. And retros matter more than ever.

"Working software is the primary measure of progress." That is from the principles behind the Agile Manifesto. Not points, not velocity, not the area under a burndown curve. Somewhere in the last two decades a great many teams swapped the measure for the proxy.

It held up while building was slow enough that effort and progress looked roughly the same from a distance. Agents have pulled them apart. Ask how a story point is supposed to map onto the tokens an agent burns through, and the question answers itself.

So what does velocity measure in an agentic team? At best, nothing useful. At worst, spend: the team closing the most points is often just the team with the largest inference budget. You are left holding a chart that tracks your model bill.

We very rarely get to choose the tech stack that we're stuck with, so let's focus on how we can help our fellow binary wranglers rather than make fun. This can, and likely will, happen to your tech stack in the coming months and years.

Tomorrow I am at Leeds Cyber Security Conference, at Northern Ballet. It is organised by YorCyberSec, Lee and Katie Gilbank's Yorkshire firm, and 100% of the ticket price goes to charity. When I went in 2023 every talk was practical, and nobody spent forty minutes selling me a licence.

The published schedule, which says talks are subject to change, includes Hacking Pacemakers, Stopping the Attack with Agentic AI, and AI and Data Protection Law from Blacks Solicitors. The agentic one sits close to what I have been writing about all year.

One line from How to Winter I did not have room to do justice to on Friday. Kari Leibowitz writes about "wanted changes that still hurt". Organisations are bad at those, because they only have language for changes that are clearly good or clearly bad.

The promotion a team is genuinely pleased about still takes their best engineer off the team. The rewrite that ships on time, to general relief, also makes three years of somebody's careful work obsolete, and the person who wrote it is expected to be delighted.

Jamie Taylor reposted

๐Ÿ›‘ Do you need to step away from the upgrade button. ๐Ÿ˜… .NET Framework 4.8 follows the lifecycle of the Windows version it runs on. So modernization math is more nuanced than โ€œold = unsupported.โ€ Cost โž• benefit โž• lifecycle โž• constraints = the real decision. ๐ŸŽง msft.it/63320aSTOQ

I once worked with a five-person team whose lead ran planning poker against two hard caps. No more than twenty-one story points in a sprint, across the whole team. No single task bigger than eight. If the tally crept past either, the team re-estimated until the numbers fit.

So a piece of work that plainly felt like a thirteen was never sent back to be specified more tightly. It was re-estimated downward until it read as a seven. The cap was the rule, and the estimate was the thing that had to give.

The points had stopped measuring the work and started measuring compliance with a ceiling. That team has not adopted agentic development yet. The currency was already hollow. New post on Friday about what agents do to it.