Published · 6d agoBuild2 min read
Port 9222: reading a live browser session straight past MFA
A debug port turns a logged-in Chromium browser into a copyable session: the cookies that prove MFA already passed are readable, and Edge policy is the only off switch.
Written for builders.See today for builders

What happened
- The Chrome DevTools Protocol Network domain method Network.getCookies returns all browser cookies for the current URL, and depending on backend support returns detailed cookie information.
- Network.setCookie sets a cookie with the given data and may overwrite equivalent cookies if they already exist.
- In the Network domain, a cookie is a session cookie when its expires value is not set.
- The Chrome DevTools Protocol Runtime domain exposes the JavaScript runtime by means of remote evaluation and mirror objects.
- Runtime.callFunctionOn calls a function with a given declaration on a given object or execution context.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
The number reads like trivia and behaves like an unlocked side door. 9222 is a local TCP port, and the point is not the digits but what answers on it. A Chromium browser permits remote debugging through the --remote-debug-port command-line switch [6], and a client that connects gets the Chrome DevTools Protocol. The supplied documentation names that switch rather than pinning the port value, so treat 9222 as the signpost and hunt for any process listening on a debug port.
Once a client is on that interface, passwords stop mattering. The protocol's Network domain answers Network.getCookies with every browser cookie for the current URL, including detailed cookie data [1], and Network.setCookie writes cookies back and can overwrite existing ones [2]. A cookie with no expiry set is a session cookie [3]. Multi-factor authentication runs before that session cookie is issued; the cookie is the receipt proving the challenge already passed. Read it off a live, logged-in browser and you inherit the session without meeting the prompt. The Runtime domain compounds this, exposing remote JavaScript evaluation and letting a caller run function declarations inside the page's own execution context [4][5].
What moves it is configuration, not forensics afterward. In Edge, the RemoteDebuggingAllowed policy governs whether the switch works: enabled or unset permits remote debugging, disabled forbids it [6][7]. That control can be made mandatory but does not refresh dynamically, so it needs a browser restart to take hold, and it reaches Microsoft-account profiles [8]; it covers Edge 93 and later on Windows and macOS, with no support on Android or iOS [9]. Shorter server-enforced session limits cut how long a copied cookie stays live [11], and browser-level enrollment applies such policy without the user signing in [10].
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
The Chrome DevTools Protocol Network domain method Network.getCookies returns all browser cookies for the current URL, and depending on backend support returns detailed cookie information.
ReportedView cited source - [2]
Network.setCookie sets a cookie with the given data and may overwrite equivalent cookies if they already exist.
ReportedView cited source - [3]
In the Network domain, a cookie is a session cookie when its expires value is not set.
ReportedView cited source - [4]
The Chrome DevTools Protocol Runtime domain exposes the JavaScript runtime by means of remote evaluation and mirror objects.
ReportedView cited source - [5]
Runtime.callFunctionOn calls a function with a given declaration on a given object or execution context.
ReportedView cited source - [6]
Microsoft Edge's RemoteDebuggingAllowed policy controls whether users can use remote debugging; if enabled or not configured, users can use the --remote-debug-port and --remote-debugging-pipe command-line switches.
ReportedView cited source
Sources & coverage · 3 publishers
The reporting this story was synthesized from, earliest first. Every link goes to the original.
- chromedevtools.github.io6d agoChrome DevTools Protocol - version 1-3 - Network domain
- chromedevtools.github.io6d agoChrome DevTools Protocol - version 1-3 - Runtime domain
- support.google.com6d agoSet Chrome policies for users or browsers - Chrome Enterprise and Education Help

