Dev News Daily ENDE

A September security update broke paste in Excel, and the fix so far covers one version

A September Microsoft update that addressed remote code execution and information disclosure introduced a second problem, which Microsoft acknowledged: in Excel 2024, 2021, 2019 and 2016, the paste operation could fail silently — the source stays selected, the destination is unmodified, and, in Microsoft's own words, users get "no indication of the failure, such as a beep or error message". Paste Special worked for some. The Register reports that a fix has now shipped for Excel 2016 only.

A September security update broke paste in Excel, and the fix so far covers one version
A September security update broke paste in Excel, and the fix so far covers one version — Dev News Daily

What it means

The detail that matters to anyone who builds software is not the Excel bug — it is the silent part. A failure with no signal is worse than a crash, because the user believes the operation succeeded and finds out later, in a spreadsheet, with no way to tell which paste was the one that did nothing.

Two things follow, and neither is about Office:

  • A security patch is a change like any other change. It ships on a schedule nobody in your team controls, and it can alter behaviour your application depends on. If your release process treats vendor patches as invisible, it will find out this way.
  • Design the failure signal before the feature. "Do nothing and say nothing" is the default when an operation is guarded by a check that was added late — which is exactly what a security fix is.

Why a security fix breaks ordinary behaviour so often

The mechanism is almost always the same. A memory-safety or code-execution fix adds a check to a path that previously had none, and the check has to decide what to do when it fails. Returning an error means touching every caller; logging means somebody has to read the log; so the quiet option wins, and the operation simply does not happen.

That decision is invisible in the patch notes, because from the vendor's side nothing failed — the guard did exactly what it was written to do. It is visible only from the other end, where a person pressed Ctrl+V and nothing happened.

What to check on your own code this week: search for the places where a guard was added after an incident. Every one of them is a candidate for the same behaviour, and the fix is cheap — a failure that is reported is a bug report, and a failure that is silent is a support ticket six weeks later with no evidence attached.