Safeguard
Supply Chain•

If your update server is hacked, what stops a malicious update?

A hacked update server should not push code to every install. Client signature checks, keys kept off the server and signed metadata decide that.

Safeguard Security Team
3 min read

What stops it is a signature check on the client, made against a key the server never held. If the update server can sign its own files, a break in gives the attacker every install. If the signing key lives somewhere else, the server can serve a bad file but the app should refuse it.

Three layers, three questions

LayerQuestion it answersExample from the docs
Archive signatureIs this file the one the key holder signed?Sparkle EdDSA signatures on archives
OS code signingDoes the platform trust the publisher?Squirrel.Mac needs a signed app for autoUpdater, per the Electron docs
Signed metadataIs this the newest, unexpired, right set of files?TUF metadata with hashes, versions and expiry

None of these is magic on its own. Together they narrow what an attacker with server access can do.

What the server can still do

Even with signatures, a compromised server can try to:

  • Withhold new releases, so users never learn an update exists. TUF describes this as a freeze: the attacker keeps serving the same file.
  • Serve an older, vulnerable but validly signed version, which TUF describes as a rollback.
  • Change unsigned parts of the feed, such as release notes, unless the feed is signed too.

Version numbers and expiry dates in signed metadata are how an update system defends against the last two.

Where the key must not be

The Sparkle documentation says to keep signing keys off the machine that hosts your product, so a compromised web server cannot expose them. Electron's updating guide lists update sources that put different parties in your delivery path, from a static storage location to a custom server. Whoever can write to that location can replace files, so the signature is the control that matters.

A response checklist

  1. Take the update endpoint offline or pin it to a known good release.
  2. Check the signatures on every file currently served against your key.
  3. Confirm the signing key was never on the server. If it was, treat it as stolen.
  4. Review feed and notes for edits.
  5. Tell users which versions are safe, through a channel the server does not control.

Try it yourself

The demo walks through a continuous check on shipped software. Click through and consider how a regular verification of what your server serves would catch a swapped file.

Click through it at your own pace, or open it full screen.

Quick check

Does HTTPS alone protect an update channel?

No. HTTPS protects the connection to a server, not the server itself. If the server is compromised, it serves bad files over a clean connection. The signature check is what catches that.

Is a valid signature proof the update is safe?

It proves who signed it, not that the build was clean. A compromised build step can sign a bad file with a good key.

Safeguard's policies, gates and SBOM scanning help check what goes into a release before it is signed. A free scan is at gold.safeguard.sh/scan.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.