frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Trust Me, I'm Local: Chrome Extensions, MCP, and the Sandbox Escape

https://blog.extensiontotal.com/trust-me-im-local-chrome-extensions-mcp-and-the-sandbox-escape-1875a0ee4823
148•el_duderino•7mo ago

Comments

npace12•7mo ago
I built little-rat (chrome extension) a couple of years ago that can track and block traffic from other extensions:

https://github.com/dnakov/little-rat

euazOn•7mo ago
Hey, thanks for that, Anon Kode, Anon Codex and other projects, very cool!
npace12•7mo ago
also check out the claude-mcp extension, very much related to this post :)
binarymax•7mo ago
Wow thanks for building this! Any idea the effort it would take for someone to port this to Firefox?
npace12•7mo ago
it's not possible in firefox, that traffic is not visible (at least as of the last time I tried 1.5 years ago)
binarymax•7mo ago
Thanks for the info. That's unfortunate, but I can somewhat understand why FF takes that approach.
fluffet•7mo ago
Woah, I had no idea. Thanks for the article.

I feel like some cycle phenomenon has been reached here..

The first protocols of the internet were very naive. Why'd you need to encrypt traffic? What do you mean exploit DNS, why would anyone do that?

Then people realised that the internet is a really, really wild place and that won't do.

I suddenly feel old, because this new AI tool era seems to have forgotten that lesson.

I feel it's like watching crypto learn by any% speedrunning why regulations and oversight might be a good in the first place (FTX and such).

I hope the next generation of AI tech/protocols are more robust, trust just doesn't cut it, or we'll see plenty of fingers being burnt at the stove.

deadbabe•7mo ago
In early days it's always best to push security risk onto users in a bid to gain as much market share as possible. By the time they realize they've been screwed, technology will have matured and you can hand wave those old criticisms away, and even trumpet them as new innovations and upgrades.
dowager_dan99•7mo ago
I did a presentation on AI Agents from the perspective of an AI newbie and one of my comments/conclusions was that it felt like releasing a browser from 2000 in the middle of today's scary 2025 environment. MCP and similar are missing 20+ years of responding to new and emerging threats, and the hype men (executives everywhere) don't realize, care or have the ability to respond.
outworlder•7mo ago
Is the presentation public?
esafak•7mo ago
It's a new technology so it is understandable that practitioners are not aware of the security best practices, like https://genai.owasp.org/

Also, the security tooling is still nascent.

OsrsNeedsf2P•7mo ago
https://archive.is/HQMBa
telotortium•7mo ago
Literally nothing here is specific to MCP - it all has to do with the fact that Chrome extensions can make HTTP connections to localhost ports, which could be running any kind of server. This is not an unrestricted backdoor either - Chrome extensions already need permissions in the manifest to talk to localhost, except via content scripts, which run in the context of the website and so could be served by the website without any extension installed.
kypro•7mo ago
Yeah, that's exactly what I took away from this too... I get why it's worth noting MCP servers in the article since these could provide a large attack vector, but it seems odd to focus on that as if that is the core security vulnerability here.

I guess the bit I'm more surprised about is why Chrome extensions are even allowed to make localhost connections without requesting user approval? Is the assumption that everything running locally must be safe? What am I missing here?

nightpool•7mo ago
I mean, the core security vulnerability explained here is that MCP does not expose / allow for any kind of authentication or user consent before accessing your computer's most sensitive resources, like a terminal or list of private Slack messages. Spotify, 1Password, or other services on your computer that use `localhost` do not have the same issue.

This would be a non-issue if some kind of simple origin-authenticated token exchange was built into the protocol itself.

cruffle_duffle•7mo ago
How could it? The agent calling into the MCP server is the one exposing an interface to the end user. It’s the agents job to prompt the user (and both Claude desktop and cursor do).

It’s the “system administrator”’s job to make sure the MCP is running at the right privilege level with correct data access levels. The MCP server can’t stop somebody from running it as root the same way any other program can’t.

At the end of the day the MCP should be treated as an extension of the user. Whatever the user can do, so too can the MCP server. (I mean, this isn’t technically true.. you can run the MCP under its own account or inside some sandbox… this will probably start to happen soon enough)

Dylan16807•7mo ago
The problem isn't the permissions the MCP has, it's about whose orders it obeys.

Many other programs on the system aren't an extension of the user. And they can access ports.

How could it do authentication? Easily. The most basic option is for the server to put a secret token in your user folder, so only code with access to that token can talk to it.

On Linux it can be even simpler. Don't attach the server to a port, attach it to a socket file.

marcus_holmes•7mo ago
It's crazy that, after all our experience with this, we're implementing another protocol that doesn't have any auth built in.

You'd think the last 30+ years of regret and hacky attempt to add auth to email and http (as just the top two to come to mind) hadn't happened.

maple3142•7mo ago
I think the reason is that MCP also works over a pipe (stdio), which does not need authentication.
nightpool•7mo ago
It doesn't need it if this vulnerability is the only one you're worried about (remote websites), but it'd be nice to have it before letting it use e.g. your Github account. This is how VS Code extensions work, for example, and it's pretty nice
fluffet•7mo ago
I take away that the combination is the problem. Bleach and ammonia isn't so bad on their own, but mixing the two is not a good idea. MCP would provide crazy attack vectors.

Especially if you could ask another AI "I have access to an MCP running on a Victim computer with these tools. What can you do with them?" => "Well, start by reading .ssh/id_rsa and I'd look for any crypto wallets. Then you can move on to reading personal files for blackmailing or sniff passwords..." and just let it "do its thing" as an attacking agent in an automated way. It could be automated which creeps me out!

eMPee584•7mo ago
Don't you give THEM ideas!
im3w1l•7mo ago
My intuition tells me that blackmailing at scale has the potential to be quite terrifying if you ask for favors that each seem innocent enough on their own. E.g. one favor may be as simple as asking the guy walking his dog to delay it for half an hour. He will surely comply without hesitation. But hidden reason was that he would otherwise witness a murder.
OsrsNeedsf2P•7mo ago
Lots of people think MCP is a case of "wow, how did we forget basic security", but I wonder if there were other competitors that MCP beat _because_ they had security friction.
rvz•7mo ago
Every time a startup uses an MCP server in their product software offering or even offers their own, I can only see the number of security consultants waiting for a massive payout when an LLM causes a security incident.
brap•7mo ago
I still don’t understand why we even need a new protocol when we already have something like the OpenAPI spec, which can also be used to describe common authentication mechanisms like OAuth2. And it supports almost every existing API out of the box.

Granted it doesn’t separate between “resources”, “tools” and “prompts” but I think the line is blurry anyway.

And yes it can be used locally.

cruffle_duffle•7mo ago
I think people who consider Open API to be a “competitor” to MCP haven’t really played with MCP.

MCP is a tool calling protocol. Models are trained on it as a way to do stuff outside their sandbox. OpenAPI isn’t a tool calling protocol but more of a schema to describe interfaces.

You could write an MCP that exposes an OpenAPI compatible set of interfaces, but you couldn’t write an OpenAPI thing to call… well… anything. OpenAPI doesn’t cover the actual tool calling.

In addition, even if OpenAPI would work it’s massive and contains a ton of extra “stuff” that would overwhelm the models precious context window. Unless the OpenAPI schema was explicitly intended for LLM consumption, the results will be a mixed bag as the LLM will have to spend half its time making sense of the schema. A well designed MCP might take an OpenAPI endpoint suite and wrap it in thoughtful tool calls so the LLM doesn’t have to parse a giant schema doc (also… the LLM actually needs to make the HTTP call and guess how it will do that? Why though MCP of course!)

By contrast, MCP tools expose a slender LLM optimized interface that requires little “thought” to call.

Honestly though, comparing OpenAPI to MCP is a bit like comparing an xml schema to curl. They are completely different. MCP is for tool calling. It’s how you expose… well… anything from calling into your shell to looking something up in your database. The only similarity is that MCP exposes a schema to the model to tell it what kinds of tool calls the model can make. And did you read the spec I’d imagine said schema looks a wee bit like OpenAPI (wouldn’t know as I haven’t looked though).

Seriously. Go write an MCP for something you think would be cool. Like go write an MCP for Claude that connects to your logging and lets Claude search the logs in a more structured way. Make something like “find_request(request_id)” and then let your code do all the searching and have it return the relevant logs. Watch as the model doesn’t have to spend a billion tokens figuring out your database schema, how to grep, etc… good MCP’s do all the grunt work so the LLM can focus on your task and not spend tons of time bootstrapping. The entire exercise won’t even take a half day and you’ll have yourself a cool new tool that saves you time.

In short, MCP and OpenAPI are two entirely different concepts.

bhelx•7mo ago
This is the first i've heard of people using the SSE transport locally. What purpose what that serve? Is this by design because the chrome extension could not talk to it otherwise?

BTW, you should really run your MCP servers in a sandboxed environment, esp if they don't need to do things like `exec` or read from the filesystem. We do this with the https://mcp.run ecosystem by wrapping them in wasm. Because they are wasm you could also run them right in the chrome extension!

olalonde•7mo ago
So do we add authentication to MCP servers or does Chrome fix this by restricting unauthorized calls to localhost?
gitroom•7mo ago
bruh this stuff honestly makes my head spin - feels like were all relearning the same old security lessons
_pdp_•7mo ago
Also, credentials scattered in clear text inside the MCP configuration. They forgot how to do security!
babyshake•7mo ago
Is it correct that this exploit would not be possible with streamable HTTP MCP servers? I'd imagine that fairly soon every MCP server that does not need filesystem access will use this transport method unless there is some reason why STDIO/SSE would be needed instead. Can anyone confirm if this is the case and if they agree or disagree with this assessment?
fpoling•7mo ago
Any service running on local should reject HTTP requests with Origin header as those are generated from browser JS API. In addition requests with UserAgent should also be typically be rejected.
rafram•7mo ago
> In addition requests with UserAgent should also be typically be rejected.

No, all HTTP clients set User-Agent.

happyopossum•7mo ago
This isn’t an MCP issue though - if you were running a webserver, or any application that listens on localhost that happens to have vulnerabilities, an extension could hit those too.

Literally nothing about MCP makes this easier or worse

skybrian•7mo ago
I guess the security hole is that “allow connecting to localhost” might sound like an innocuous permission, but it becomes increasingly risky as you run more servers on local ports that have no other protection.

The permission itself doesn’t tell you anything about what powers it might grant. You need to know how all your local processes work to determine that, and most people have no idea.

It’s too generic for users to make reasonable decisions about. And that means that servers on localhost really should have authentication. Connecting client A to server B should be explicit.

zharknado•7mo ago
Great observation! The legibility or the permission grant matters a lot.
ttoinou•7mo ago
Sooo we just need a new standard MCPS (MCP Secure connections), right ?
ramoz•7mo ago
The cyber industry is having a ball exposing standard security practice issues under the guise of “new zero day AI vulnerabilities” - esp with MCP.

Nothing here is new. If you run local apps with open connections and no CORS then anything on your device and potentially network can talk to that app.

vovkasm•7mo ago
There is nothing specific to MCP here. But that doesn’t mean there’s no problem. The real problem is that OS does not contain a convenient for users and reliable access control mechanism for local TCP connections (at least at the per-application level of granularity). Would such a mechanism existed, the user could allow connections to its MCP only to the necessary applications. There is already many apps providing local servers, all of them is potential point of attack for bad actors in system: ollama, syncthing, adb, gradle, various torrent clients with web interface, media players, etc...

PGlite – Embeddable Postgres

https://pglite.dev/
151•dsego•1h ago•42 comments

It’s time to free JavaScript

https://javascript.tm/letter
150•pavelai•3h ago•57 comments

Ghostty is now non-profit

https://mitchellh.com/writing/ghostty-non-profit
1171•vrnvu•18h ago•244 comments

Valve reveals it’s the architect behind a push to bring Windows games to Arm

https://www.theverge.com/report/820656/valve-interview-arm-gaming-steamos-pierre-loup-griffais
818•evolve2k•1d ago•708 comments

NextJS Security Vulnerability

https://nextjs.org/blog/CVE-2025-66478
26•connor11528•1h ago•2 comments

Reverse engineering a $1B Legal AI tool exposed 100k+ confidential files

https://alexschapiro.com/security/vulnerability/2025/12/02/filevine-api-100k
722•bearsyankees•19h ago•245 comments

Elites could shape mass preferences as AI reduces persuasion costs

https://arxiv.org/abs/2512.04047
236•50kIters•4h ago•242 comments

Programming peaked

https://functional.computer/blog/programming-peaked
21•Antibabelic•2h ago•4 comments

Show HN: Walrus – a Kafka alternative written in Rust

https://github.com/nubskr/walrus
38•janicerk•2d ago•14 comments

Interop and MathML Core

https://conflor.es/blog/2025-11-27-interop-and-mathml/
16•todsacerdoti•3d ago•1 comments

Unreal Tournament 2004 is back

https://old.reddit.com/r/unrealtournament/comments/1pdbe69/breaking_unreal_tournament_2004_is_back/
123•keithoffer•2h ago•45 comments

Uncloud - Tool for deploying containerised apps across servers without k8s

https://uncloud.run/
181•rgun•6h ago•80 comments

Micron Announces Exit from Crucial Consumer Business

https://investors.micron.com/news-releases/news-release-details/micron-announces-exit-crucial-con...
618•simlevesque•18h ago•304 comments

I ignore the spotlight as a staff engineer

https://lalitm.com/software-engineering-outside-the-spotlight/
6•todsacerdoti•1h ago•0 comments

Average DRAM price in USD over last 18 months

https://pcpartpicker.com/trends/price/memory/
364•zekrioca•12h ago•262 comments

Show HN: MTXT – Music Text Format

https://github.com/Daninet/mtxt
12•daninet•4d ago•2 comments

1D Conway's Life glider found, 3.7B cells long

https://conwaylife.com/forums/viewtopic.php?&p=222136#p222136
464•nooks•19h ago•163 comments

Saturn (YC S24) Is Hiring Senior AI Engineer

https://www.ycombinator.com/companies/saturn/jobs/R9s9o5f-senior-ai-engineer
1•etticat•5h ago

30 years ago today "Netscape and Sun announce JavaScript"

https://web.archive.org/web/20070916144913/http://wp.netscape.com/newsref/pr/newsrelease67.html
26•donohoe•1h ago•6 comments

Building optimistic UI in Rails (and learn custom elements)

https://railsdesigner.com/custom-elements/
10•amalinovic•1h ago•0 comments

RCE Vulnerability in React and Next.js

https://github.com/vercel/next.js/security/advisories/GHSA-9qr9-h5gf-34mp
552•rayhaanj•20h ago•207 comments

Show HN: I built a dashboard to compare mortgage rates across 120 credit unions

https://finfam.app/blog/credit-union-mortgages
269•mhashemi•16h ago•90 comments

All the Way Down

https://www.futilitycloset.com/2025/11/17/all-the-way-down-2/
27•surprisetalk•5d ago•10 comments

Why WinQuake exists and how it works

https://fabiensanglard.net/winquake/index.html
105•wicket•10h ago•12 comments

Kea DHCP: Modern, open source DHCPv4 and DHCPv6 server

https://www.isc.org/kea/
99•doener•12h ago•31 comments

8086 Microcode Browser

https://nand2mario.github.io/posts/2025/8086_microcode_browser/
125•zdw•15h ago•1 comments

Acme, a brief history of one of the protocols which has changed the Internet

https://blog.brocas.org/2025/12/01/ACME-a-brief-history-of-one-of-the-protocols-which-has-changed...
124•coffee--•13h ago•62 comments

Show HN: A Minimal Monthly Task Planner (printable, offline, no signup)

https://printcalendar.top/
65•defcc•7h ago•23 comments

Launch HN: Phind 3 (YC S22) – Every answer is a mini-app

117•rushingcreek•19h ago•87 comments

How to Synthesize a House Loop

https://loopmaster.xyz/tutorials/how-to-synthesize-a-house-loop
240•stagas•6d ago•86 comments