Manav.id
Comparison · 4 min read

A control that needs the internet is a control that has outages

A control that needs the internet is a control that has outages

Security architecture normally asks what happens when a component fails. For verification paths that question is often skipped, and the honest answer is that the control stops working.

What does a verification callback actually add to your risk?

Three things you did not choose: the vendor's availability becomes your availability, the vendor's retention policy decides how long your evidence exists, and every verification tells the vendor something about your operations. None of these are visible in the architecture diagram.

Key takeaways
  • A callback in the verification path makes vendor availability a dependency of your control.
  • The callback also discloses what you are verifying, and when, to a third party — which for transaction metadata can be commercially sensitive.
  • Offline verification removes both, at the cost of revocation freshness, which a signed list handles adequately.

Three things a callback introduces

Your verifieryou control thisYour egress and DNSpartlyThe public internetnot yoursVendor availabilitytheir SLAVendor retention windowtheir policy
Each hop is a dependency you did not choose and cannot fix.
DependencyConsequence
Vendor availabilityTheir outage becomes your outage, on your critical path
Network pathA partition, a DNS problem or a proxy change stops verification
Vendor retentionWhen they purge old records, your historical evidence stops verifying

The third is the one that goes unnoticed for years and then matters all at once, during an audit or a dispute about something from four years ago.

The fail-open trap

Faced with the availability problem, implementations choose. The choice is usually made implicitly, in an exception handler.

# What gets written
try:
    result = vendor.verify(receipt)
except NetworkError:
    log.warn("verification unavailable, proceeding")
    result = ALLOW              # ← the control is now optional

# What an attacker does
#   make the vendor unreachable
#   every verification passes

Nobody designs this deliberately. It arrives because the alternative — blocking business operations during a network problem — is unacceptable to whoever is on call, and the exception handler is where that pressure lands.

The metadata question

A verification call tells the vendor what you are verifying and when. Over time that is a detailed picture.

For many organisations this is acceptable. For some — firms handling material non-public information, organisations with sensitive counterparties, anyone in a competitive procurement — it is not, and the question is rarely raised during vendor selection.

What offline verification requires from the vendor

Less than you would expect, which is why the absence of the feature is usually a choice rather than a limitation.

  1. Publish signing keys at a stable, well-known location.
  2. Keep old keys published for the full retention period.
  3. Document the canonical form so the digest is reproducible.
  4. Publish a revocation list, signed, on a schedule.
  5. Document the verification procedure completely enough for an independent implementation.

None of that is a service, which is exactly the point made elsewhere about business models. It is documentation and a static file.

The revocation trade, honestly

Offline verification gives up real-time revocation. That is a genuine loss and it is smaller than it appears.

Real-time checkSigned list, published each minute
Revocation latencyZero, if uncachedUp to one minute
Behaviour during an outageFails open in practiceCached list still enforced
PrivacyLeaks the subjectLeaks nothing
Effective latency in practiceOften hours, due to cachingOne minute

The fourth row is the one that settles it. Real-time checking is usually not real time, because responses are cached; a list published every minute is often fresher than what the callback actually delivers.

The architectural question to ask

For every control in your environment, one question: what happens when the network is down?

If the answer is that the control stops enforcing, it is not a control — it is a control conditional on connectivity, and an attacker who can affect connectivity can affect it.

This is not an argument against vendors or hosted services generally. It is an argument that the verification step specifically, being the point where trust is established, should not have dependencies that an adversary can influence.

A worked example: the fail-open trap

When the callback times out
Design choiceConsequence
Fail openThe control silently stops existing, exactly when something is wrong
Fail closedYour business stops when the vendor has an incident
Cache the answerYou accept a stale decision of unknown age
Verify offlineNo third choice needed — the question never leaves your network

Most deployments pick the first and do not write it down. It is the option that produces no alerts, which is precisely why it is the one that gets picked.

Objections and honest limits

“Offline verification cannot do revocation.” Honest and correct. Offline verification checks a signature and an expiry, not current status. The trade is a short validity window against a permanent network dependency — and for evidence read years later, the offline property wins outright.

“The metadata is just timing.” Timing and volume. Which of your systems verify, how often, and when the rate changes — that is a picture of your operations, delivered continuously to a third party.

Questions for any verification vendor

  1. Can I verify with no network call? If no, the rest follows from that.
  2. What happens when your service is unavailable? And is fail-open the default.
  3. What do you see when I verify? Volume and timing are also data.
  4. How long do you retain the records? Shorter than your evidence needs, usually.
  5. Can I verify after we stop being a customer? The answer is often no.

Terms used here

Callback verification
Checking validity by calling the issuing vendor, making their availability part of your control.
Fail open
Allowing an action when a control cannot be evaluated — usually the silent default.
Offline verification
Checking a signature against a published key set with no network call to the issuer.

Frequently asked questions

Why do implementations fail open? Because blocking business operations during a network problem is unacceptable to whoever is on call. The decision gets made implicitly in an exception handler.

What does a verification callback disclose? What you are verifying and when. Over time that reveals approval volumes, timing patterns and which staff approve what.

Doesn't offline verification lose real-time revocation? It trades it for a publication interval. Real-time checks are usually cached for hours anyway, so a list published each minute is often fresher in practice.

What does a vendor need to provide? Published keys retained for the retention period, a documented canonical form, a signed revocation list and a complete verification procedure. Documentation and static files.

Is a callback always wrong? No. For short-lived, revocation-sensitive decisions it is reasonable. For evidence read years later it is a dependency that will outlive the vendor.

What is the honest cost of offline verification? No live revocation. You manage it with short validity windows and re-issuance instead.

What should I ask a vendor first? Whether verification works with the network unplugged. Everything else follows from that answer.

Where this fits in Manav

Manav verifies offline against a published JWKS — no callback, no availability dependency, and nothing reported back to us.

See offline verification →

Sources and further reading