skip to content

Your browser-provider account key leaked — what stays reachable after you revoke it?

level: seniorimportance: must knowfreq 54%

answer

  1. it closes the door, not the room
  2. copies already taken stay taken
  3. a running session has its own life
  4. identifiers outlive the credential
  5. attribution is not created afterwards

basics

~20 s

Revocation stops new authentications with that value. It does not end sessions already running, retract artefacts already downloaded, invalidate session identifiers already shared, or tell you what the holder reached while it worked. Rotation begins the response.

solid answer

~50 s

Rotating the credential closes **future** access and nothing else, so name what it leaves behind. Artefacts the holder already fetched sit on their machine. Sessions already open may keep running and keep consuming until something tears them down. Session identifiers copied out of reports remain valid names for the evidence they point at. And attribution you never had is not created retroactively — identity in these systems is whatever the caller presented, so a shared account yields a history in which every line reads the same. The in-flight case is attested in the open: in Ggr (unmaintained by its own README) the route that creates a session is behind the authenticator, while the route carrying every later command for an existing session is not, so a running session is driven by its identifier. Rotate, then end open sessions deliberately, then bound what was reachable.

go deeper

for a junior

Know that rotating a leaked key stops someone using it again and does not undo what was already done with it. Say so plainly rather than describing rotation as a fix.

for a middle

Be ready to list what survives revocation: downloaded artefacts, running sessions, shared identifiers and spent capacity. Mention verifying that the old value actually fails.

for a senior

You are expected to run the response. Sequence it: rotate and verify, enumerate and close open sessions, list the surfaces reached, bound exposure by what your own fixtures put on screen, then fix attribution.

for a principal

Own the structural conclusion. Argue for credentials narrow enough that a leak is a scoped event, and be ready to defend the extra secrets that costs against the reconstruction it avoids.

## What revocation actually retracts Revoking or rotating a browser-provider account credential invalidates that value for **future authentications**. That is a real and necessary control, and it is also the entirety of what the act itself accomplishes. Everything else that a leak put in motion is either already finished, still in flight, or unknowable — and each of those needs its own response. For a law firm's document-review suite the distinction is not academic. The evidence a run leaves behind is a picture of client material, so the question "what stays reachable" is the question the firm will actually ask. ## What a new key does not undo - **Work already done.** Anything the holder fetched — a recording, a log, a downloaded file — is on their machine. No provider-side change reaches it. - **Sessions already open.** A running session may keep being driven, and it keeps consuming until it is torn down or the far side ends it. - **Identifiers already shared.** Session identifiers, run references and links copied out of reports remain valid names for the artefacts they point at. - **Attribution you never had.** A shared account cannot tell you which holder did what, and rotating it does not retroactively create that record. The in-flight case has an open attestation worth knowing, because it is the one people assume away. In Ggr (unmaintained by its own README), the route that creates a session is wrapped in the authenticator, but the route that carries every subsequent command for an existing session is registered **without** that wrapper: commands are dispatched on a prefix of the session identifier. So in that implementation, removing an account does not retract a session the account already started — it is driven by its identifier, not by the credential. Whether any particular hosted provider behaves that way is not something you can assert from outside; that it is a plausible and implemented design is exactly why you check rather than assume. ## Attribution is the part that hurts Identity in these systems is whatever the caller presented. Selenoid (unmaintained) reads the basic-auth username from the request purely to label its log lines and writes `unknown` when no credential was supplied; Ggr (unmaintained) does the same and substitutes its guest account name when guest mode is on. The general shape follows: **a record can attribute no more finely than the identity that was presented.** When a nightly suite, every pull-request run and an engineer's local experiment all authenticate as the same account, every line reads the same, and the record answers "which account" when the incident needs "which holder". That is why the incident response after a browser-cloud key leak is usually reconstruction rather than lookup, and why the answer to "what did they do" is often "we can bound it, not enumerate it". ## The response that actually bounds the damage 1. **Rotate first**, and confirm the old value fails, because a rotation nobody verified is a belief. 2. **End what is running.** Enumerate open sessions and close them deliberately rather than waiting for a timeout; an abandoned session keeps consuming capacity you pay for. 3. **Enumerate the radius.** List every surface that credential reached — session creation, the web surface, run history, stored artefacts, the live view, entitlement information — and treat everything readable there as read. 4. **Assess by content, not by suspicion.** Decide what those runs put on screen and in their logs. For a document-review suite that is the client material question, and it is answered from your own fixtures and your own capture settings, not from the provider. 5. **Delete what you can and should**, and record what could not be deleted. 6. **Fix the attribution gap**, so the next incident is a lookup: distinct credentials per team or pipeline, each with its own record. | the reflex | why it is not enough | |---|---| | "we rotated, so we are clean" | rotation closes new access; it recovers nothing already taken and ends nothing already running | | "the logs will tell us" | a record resolves to the identity presented, which on a shared account is the same name for everyone | | "identifiers are unguessable" | they are printed into CI output and reports by design, so they are reachable rather than secret | ## What a senior answer sounds like The mark of the answer is that it separates the control from the consequence. Revocation is a control on future access. The consequences of a leak — copied artefacts, live sessions, spent capacity, unattributable history — are separate problems with separate fixes, and none of them is solved by the new key. - Say what rotation stops, in one clause, and move immediately to what it does not. - Name the in-flight session as its own problem, and say you would close sessions explicitly. - Say that you would bound the exposure by content you control, since a closed provider's internals cannot be asserted. - Finish on the structural fix, which is narrowing what any single credential can reach next time. Answering "we rotate the key and move on" is the failure mode. It is the right first step described as if it were the whole response.

  • Why is an already-open session its own problem after a key leak?
    Because a session in progress is often addressed by its identifier rather than re-checked against the credential. In Ggr (unmaintained), the create route is behind the authenticator and the per-session command route is not, so an existing session keeps being driven after the account is cut off. It also keeps consuming capacity you pay for, so enumerate open sessions and close them explicitly instead of waiting for a timeout.
  • After the rotation, how do you bound what was actually exposed?
    From your own side, because a closed provider's internals cannot be asserted. List every surface the credential reached and treat everything readable there as read. Then decide what those runs put on screen and into their logs, which is answered by your fixtures and your capture settings. That gives a defensible bound even when an itemised list is unavailable.
  • What would make the next incident a lookup rather than a reconstruction?
    Distinct credentials per team or per pipeline. A record can attribute no more finely than the identity that was presented, so a shared account guarantees reconstruction. Narrower credentials also shrink each leak: revocation becomes scoped to the pipeline that needs it rather than an interruption for everybody, and the exposed artefact set is smaller on the day you find out.

saying these in an interview costs you the question

  • Says rotation ends the incident
  • Assumes revoking the key kills running sessions
  • Expects the access record to name the culprit
  • Forgets that fetched artefacts are already gone
  • Treats session identifiers as invalidated by rotation
  • Skips verifying that the old value now fails