Pull up your browser's developer tools right now. Open the Network tab. Click the little download icon labeled "Save All As HAR." That single button — present in Chrome, Edge, Firefox, and Safari — captures every request and response your browser made on the current site, including the Cookie: header on every authenticated request. If your support team ever asks a customer to "send us a HAR file so we can debug," you have just normalized the practice of emailing live credentials over Zendesk.
The 2023 Okta support-system breach is the textbook case, but it is not a one-off. 1Password, Cloudflare, and BeyondTrust independently noticed the pattern in their own telemetry weeks before Okta publicly disclosed. The attackers were not exploiting a CVE in the Okta product. They were using session cookies — exactly as designed, exactly as the protocol allows — from authenticated administrators whose browsers had captured those cookies into a file that lived on a support engineer's laptop.
What happened
The timeline, reconstructed from public statements by Okta, BeyondTrust, Cloudflare, and 1Password between October and November 2023:
- Customer admins, troubleshooting various Okta integration issues, were asked by Okta support to capture and upload HAR files. Each HAR contained the customer admin's active Okta session cookie.
- An attacker compromised a single Okta support-engineer service account — credentials reportedly saved in a personal Google profile signed in to a corporate browser.
- The attacker accessed the Okta support case-management system, downloaded HAR files attached to recent cases, and extracted session cookies for 134 distinct customer tenants.
- The attacker replayed those cookies against the relevant Okta customer admin consoles. Because each cookie was a fully-formed authenticated session, no password was needed and no MFA was required. The attacker walked in as the admin.
- 1Password's security team detected the activity on September 29, 2023 — eleven days before Okta publicly disclosed. BeyondTrust spotted it on October 2. Cloudflare on October 18. Each independently called Okta to report the anomaly. Each was initially told it appeared isolated to their environment.
The cookie-based bypass continued working for as long as the captured sessions remained valid. Okta's default session lifetime at the time was up to two hours of idle plus a maximum of twelve hours absolute, but admins with extended sessions or active workflows kept sessions alive longer. Some captured cookies were still being replayed weeks after the initial HAR upload.
Why it kept working
A session cookie is the equivalent of a password — usually a stronger equivalent, because it has already passed MFA. The browser sends it automatically with every request. The server, if it does nothing else, treats whoever presents the cookie as the user who originally authenticated. That is not a flaw in Okta. That is HTTP, RFC 6265, and forty years of web architecture working exactly as specified.
The reason this exact technique works against most identity providers — not just Okta — is that the canonical session cookie has historically been bound to nothing except itself. There is no client certificate. There is no requirement that the cookie return from the same IP it was issued to. There is no proof-of-possession. Whoever holds the cookie is the user. The protocol is bearer-token by default, and bearer tokens are fungible: hand them to anyone and they work.
On top of that protocol baseline, browsers ship an "export everything" button. The HAR format was standardized in 2007 to help web developers debug performance issues. Nobody designing it imagined that support workflows in 2023 would routinely involve customers emailing those files to vendor employees over case-tracking systems hosted on third-party clouds. But that is what happened, and the format faithfully preserves Set-Cookie response headers and Cookie request headers exactly as they crossed the wire.
HAR sanitizers exist. Okta released one after the breach. Browser extensions claim to redact sensitive headers. None of them are universally deployed, none are mandatory, and none are present at the moment a tier-1 support agent says "can you grab a HAR for me." The sanitizer runs after the dangerous artifact is already created and stored.
What to check today
You do not need to wait for your identity provider to redesign cookie binding. Five things you can implement this week:
- Ban HAR uploads to support — period. Replace the workflow with screenshots, screen recordings (which capture rendered pixels, not headers), or curated request/response logs that the customer manually filters. If a vendor's troubleshooting playbook insists on a HAR file, push back. Most performance issues can be diagnosed from a
chrome://net-exportcapture run with cookies disabled, or from server-side request logs the vendor already has. - Bind sessions to a network signal. Most enterprise IdPs now offer some form of session binding: source ASN, geo-velocity, or — ideally — a device-bound token tied to a TPM-backed key (FIDO2 device-bound passkeys, Apple device-bound tokens, Microsoft MFA session binding). Turn it on. Audit which apps still accept unbound sessions.
- Shorten admin session lifetimes aggressively. A 12-hour admin session is a 12-hour key. Drop admin sessions to 60 minutes idle, 4 hours absolute. Force step-up MFA on every privileged action, not just at login. Yes, your admins will complain. Yes, this is the price.
- Monitor session-cookie replay signals. Track session-ID reuse across distinct source IPs, ASNs, or user-agents within short windows. Most modern SIEM rules will fire on this if you give them the auth-event stream. The cookie-replay tell is identical across IdPs: same session ID, dramatic shift in network metadata, no preceding logout/login event.
- Audit your support-vendor security model. Every vendor with a support portal that accepts file uploads from your administrators is a potential cookie-exfil channel. Map them. Restrict who can attach files. Require uploads to go to a sanitizing intermediary, not directly to the vendor's case-management system.
How CELVEX Group tests for this
The CELVEX Group test catalog includes IDENTITY-SESSION-COOKIE-BINDING-001, defined in core/test_catalog/_supplement_identity_2026-03.py. The test verifies four properties of any session cookie issued by your identity provider or by your application:
- Network binding. The test captures a session cookie from one source IP, replays it from a different ASN, and flags the session as unbound if the request succeeds without re-authentication.
- Device binding. The test re-issues the cookie from a clean browser profile (no client certificate, no platform credential) and flags failure-to-reject as a finding.
- Lifetime and idle policy. The test enumerates session cookies, parses
Max-AgeandExpires, and flags absolute lifetimes greater than 12 hours or idle timeouts greater than 8 hours for privileged sessions. - Cookie attributes. Missing
HttpOnly, missingSecure, missing or weakSameSite, and missing__Host-or__Secure-prefixes on auth cookies are all individual findings rolled into the parent test.
The test runs against your customer-facing applications, your admin consoles, and — where you've authorized it — your IdP's tenant configuration. We surface the results as a chained finding: a session cookie that is unbound, long-lived, missing SameSite=Strict, and accessible via JavaScript is a category of risk one severity higher than any of those four properties alone, because it is the exact configuration the Okta HAR exfil exploited.
Bottom line
Every session cookie is a password that has already passed MFA. The protocol does not care who holds it. Your IdP does not care who holds it unless you have explicitly opted into binding. Your support workflow does not care who holds it because nobody told the L1 agent that "send us a HAR" is the same sentence as "email me your password."
The Okta HAR breach is not a story about a flaw in Okta. It is a story about a forty-year-old protocol assumption — bearer tokens are fungible — meeting a fifteen-year-old browser feature — export-everything-as-HAR — meeting a five-year-old support workflow — case attachments are routine and unfiltered. The compounding of all three is the breach. Fixing any one of them prevents it.
The vendors that detected the activity early — 1Password, Cloudflare, BeyondTrust — did so because their internal security teams treat session-cookie replay as a first-class detection. That is the discipline that separates customers who got compromised from customers who got a heads-up. You can build that discipline before the next vendor incident, or you can wait for the disclosure email.
Sources
- Okta: Unauthorized access to Okta's support case management system (Nov 2023)
- 1Password: October 2023 incident report
- Cloudflare: How Cloudflare mitigated yet another Okta compromise
- BeyondTrust: Okta support unit breach
- RFC 6265: HTTP State Management Mechanism
- CELVEX Group platform: Identity testing and session-cookie binding audits
Run a free Exposure Check — 60 seconds, no signup
See whether your customer-facing session cookies are bound, properly attributed, and short-lived enough to survive a HAR exfil. No account required.
Start your Exposure Check