Join our Newsletter — 33% off our NHI Course

What are the signs that a cache poisoning attempt is failing in a browser but working in a proxy tool?

The usual sign is a request mismatch. A browser may send a different cache key than Burp or Repeater because of added parameters, header rewriting, or encoding changes. Compare the exact request from the browser developer tools with the proxy log, then make sure both requests match on every keyed component before testing again.

Why This Matters for Security Teams

A cache poisoning test that works in Burp but fails in a browser is often a sign that the browser is not sending the same cache key material that the proxy tool is replaying. That matters because browser caching behavior is shaped by normalisation, cookie scope, redirects, and header handling, while proxy tools can preserve or alter details in ways the origin and intermediary cache may treat differently. For defenders, this is not just a lab annoyance. It can hide real exposure, especially when response caching is influenced by secrets, session state, or user-specific data. Guidance from NIST SP 800-53 Rev 5 Security and Privacy Controls reinforces the need to monitor and validate request handling paths, because subtle request transformation can change the security outcome. In NHI-heavy environments, the same problem appears when token-bearing requests are cached incorrectly or when automation tools reproduce requests without the browser’s exact context. Security teams should treat a mismatch as a signal to compare the full request path, not just the visible URL. In practice, many teams only discover the mismatch after a cache leak or authentication bypass has already been observed in production.

How It Works in Practice

The failure pattern usually comes from one of three places: the browser, the proxy tool, or the cache key logic itself. A browser may add headers such as Accept-Encoding, send cookies with stricter scope rules, or normalize query parameters in a way that Burp does not mirror by default. Conversely, a proxy tool may preserve a crafted payload exactly, which is useful for testing but can make the request unrealistically clean.

The practical approach is to compare the request at three layers:

  • the browser developer tools request, including full headers, cookies, and query ordering
  • the proxy log, to confirm no hidden rewriting occurred
  • the cache key inputs, including any vary headers, path normalization, and encoding rules

Current guidance suggests checking whether the cache key depends on headers the browser automatically changes, such as HTTP caching semantics in RFC 9111, because intermediaries often vary on fields the tester has not intentionally modified. NHIMG research on DeepSeek breach shows how exposed secrets and poorly controlled request paths can amplify downstream impact when data is reused unexpectedly. If the browser and proxy differ, align them by reproducing the exact user session, then test one keyed component at a time. These controls tend to break down in single-page apps with service workers and layered reverse proxies because each layer can rewrite or revalidate requests independently.

Common Variations and Edge Cases

Tighter request matching often increases test complexity, requiring practitioners to balance fidelity against speed. Some failures are not true negatives at all. Browser cache isolation, partitioned cookies, service workers, and content security controls can make a browser appear immune while a proxy tool still reaches a vulnerable intermediary. That is especially true when a request is only cacheable for anonymous users but becomes uncacheable once a session cookie is present.

There is no universal standard for this yet, but current guidance suggests treating the following as common edge cases:

  • encoded versus decoded query strings that change the cache key
  • header injection tests that a browser blocks but a proxy allows
  • redirect chains that alter the final request path
  • user-specific cookies that disable caching in the browser but not in a replay tool

When testing NHI-adjacent applications, the same mismatch can occur if an API gateway strips auth headers before cache evaluation, or if a token is replayed outside the browser’s normal session scope. For broader identity and access hardening, the request path should be checked against NIST controls and the local cache policy together, not in isolation. A browser-only failure often means the vulnerable condition is narrower than expected, while a proxy-only success often means the lab request is more privileged, cleaner, or less normalized than the real user flow.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP Non-Human Identity Top 10 address the attack and risk surface, while NIST CSF 2.0, NIST SP 800-63, NIST Zero Trust (SP 800-207) and NIST AI RMF set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
OWASP Non-Human Identity Top 10 NHI-03 Cache poisoning often involves misuse of secrets or tokens in request paths.
NIST CSF 2.0 PR.DS-1 Data handling and transport controls relate to poisoned cache content exposure.
NIST SP 800-63 Browser and proxy differences can change authenticated session context.
NIST Zero Trust (SP 800-207) AC-4 Context-aware access decisions align with request-path validation during testing.
NIST AI RMF AI-assisted tooling and automated testing need governance for request replay accuracy.

Review whether cached responses vary on NHI-bearing headers and tokens, then remove secret-dependent cache keys.