Cursor 0day: When Full Disclosure Becomes the Only Protection Left
244 points
7 hours ago
| 21 comments
| mindgard.ai
| HN
wxw
3 hours ago
[-]
> The vulnerability was first identified by Mindgard on December 15, 2025. We reported it the same day and multiple times since. More than six months and 197+ new versions later, the issue remains present in the latest tested version of Cursor.

> The report was initially closed as Informative and out of scope. After we challenged that determination, HackerOne reopened the report, reproduced the issue, and confirmed that the details had been delivered to Cursor. And then everything stopped. Requests for updates went unanswered, additional follow-ups received no response, escalation through HackerOne produced no meaningful engagement, and direct outreach to Cursor leadership yielded the same result: no response.

Really unfortunate. I don't understand why there's such a lack of response on the Cursor side.

reply
app13
2 hours ago
[-]
The CVE process itself is broken. HackerOne and company VDPs are inundated with new reports of varying quality thanks to the advancements (I think) in agentic AI. It's allowed for both an increase in trash-tier low quality AND legitimately high quality reports. Since the same AI's are writing both, its almost impossible to distinguish between the two at a surface level.

In response, companies just aren't responding like they used to. I spoke at a cybersecurity conference In June and the overwhelming "vibe" on the floor and in the talks was that responsible disclosure was dead or dying, and public disclosure is the way forward. The Microsoft and Nightmare Eclipse situation was oft cited.

reply
demosthanos
1 hour ago
[-]
As someone on the company response side of the HackerOne brokenness, I can confirm that this effect is real but would also note that the difficulty of distinguishing is not as severe as all that, because the companies have access to the source code which the researchers do not typically have access to.

This means that the token cost of verifying any given HackerOne report is dramatically lower than the token cost of producing a report in the first place. Automated triage systems should be possible, and realistically it's well within the capabilities of most companies to go further and actually automate the Red Team side of it and catch issues before they surface in the black box research. From what I've seen doing so should cost dramatically less in tokens than the bounty payouts do.

The problem is that security is woefully underfunded in most companies, so even an infosec organization that saw the deluge approaching from a distance may well not have had the resources to prep for it even if they knew exactly what actions they would take if they had the capacity.

reply
QuadmasterXLII
32 minutes ago
[-]
The token cost of a report is lower bounded by the number of tokens in the report * price per token of the cheapest model. The token cost of a good report is much higher, but sifting out the good reports is the entire problem.
reply
buran77
2 hours ago
[-]
> I don't understand why there's such a lack of response on the Cursor side.

Too busy being acquired by SpaceX?

reply
_AzMoo
2 hours ago
[-]
It screams intentional to me.
reply
sofixa
3 hours ago
[-]
> Really unfortunate. I don't understand why there's such a lack of response on the Cursor side.

It's hard to vibe code security.

reply
koolba
57 minutes ago
[-]
Is it though? Cause you can have an agent analyze the reports to filter out the wheat from the chaff.
reply
khurs
2 hours ago
[-]
Perhaps its a intentional back door?

NSA/FBI puts a git.exe in GitHub for a target. Target pulls the repo and it executes the payload.

As Cursor is/was based on VS Code, does it happen in VS Code too?

reply
oceansweep
2 hours ago
[-]
It’s a thing in VSCode as well/has been a thing or things similar to it : https://www.threatlocker.com/blog/malicious-vs-code-tasks-js... (2026)

https://www.reddit.com/r/programming/comments/zes1co/visual_... (2022)

reply
solid_fuel
2 hours ago
[-]
> I don't understand why there's such a lack of response on the Cursor side.

~~~To busy porting to their new rust-backed version of Bun to do anything boring like engineering, probably.~~~

EDIT:

My mistake, wrong owners. It's hard to keep these tools straight sometimes. Most of the LLM tooling and interfaces I've tried are heavy on the features but light on the engineering, and that seems to be the case here too.

reply
manacit
2 hours ago
[-]
...that's Anthropic?
reply
jjcm
3 hours ago
[-]
I'm not sure I fully agree with this being a major vuln. There's a lot of up front scary text which was raising a lot of red flags until it actually discussed the "what".

An actor has to place a malicious .exe in the user's code folder, named git.exe, for this to take place.

I see this akin to something like saying "replacing their .bashrc with an alias that says `ls` instead executes `/tmp/mega-big-virus.sh` is a vuln".

Yes it's a vector, but if they've placed something in your filesystem like that already, you've already been compromised.

reply
shitter
3 hours ago
[-]
The user's code folder? You mean the code I frequently pull from untrusted sources, unlike my .bashrc? Opening a GitHub project for review should not mean arbitrary code execution.

Of course, that ship has long sailed, for all major IDEs. Heck, VSCode SSH and devcontainer remotes allow RCE by design.

reply
paxys
1 hour ago
[-]
The entire point of Cursor is to run autonomous coding agents. You are giving it a random untrusted repo, saying "hey it might have a virus, go crazy" and then getting mad that it caused harm?

Check (and double check and triple check) your sources. If a malicious executable made it to your computer it is already too late.

reply
shitter
53 minutes ago
[-]
? Doesn’t the code exec happen upon merely launching Cursor against a repository, without giving an agent any tasks? That’s clearly an issue at the Cursor application level, not some inevitable risk caused by the non-deterministic nature of LLMs. You can’t use the latter fact to excuse the former mistake

Not to mention that Cursor has an agent permissions model that this presumably sidesteps!

reply
taneq
2 hours ago
[-]
I’ve never got my head around how it’s apparently the done thing these days to just copy a bash command from a website and run it (sometimes with sudo! O.o ) to install software. I somewhat naively hope that this is because everyone is pushing single purpose VMs for that kind of install, but really I know better.
reply
petalmind
1 hour ago
[-]
> to just copy a bash command from a website and run it (sometimes with sudo! O.o ) to install software.

how is that different from the good old days of

    wget ftp://ftp.something.org/software-2.10.tar.gz
    tar zxfv 
    ./configure
    make
    sudo make install

?
reply
Terr_
1 hour ago
[-]
Training people (esp. what passes for non-techies on Linux) to regularly copy-paste into the terminal is massively riskier than "click this URL". Just for starters, consider how easily you can make a web-page where you highlight X to copy it, but instead Y is delivered to your clipboard. Then on execute it could even redraw the terminal to pretend you pasted X all along.

Also, there's a convention or social-contract that everyone who downloads 2.10 ought to get precisely the same thing. This provides a foundation for other facets of security, like "it must have an expected hash" or "it must validate as signed by this public key". Also investigative actions like discovering when something suspicious got added, or detecting that the installer is trying to access the internet when it really shouldn't be.

reply
taneq
41 minutes ago
[-]
They’re both executing unknown code, but hopefully the ftp site here is at least a trusted one, and if you feel paranoid you can verify the archive’s hash to help verify it hasn’t been monkeyed with.

Also the archive probably won’t go and fetch a bunch of other scripts and run them (probably…) while doing so is usually the script’s primary purpose. So you’re not just trusting the people who published the script, at the time they published it. You’re trusting them and everyone they trust to still be good actors now.

That’s different to it being the standard way to install self-published bundles of scripts from all over the internet.

reply
paxys
1 hour ago
[-]
How is it different from downloading and running the application itself from that website?
reply
arcticfox
3 hours ago
[-]
I am not at all a security expert, but isn't this akin to giving a repo-owner RCE if you just clone their repository and open it? I feel like that's not an implied contract for opening a folder in your IDE.
reply
zeroq
3 hours ago
[-]
This is very similar to 30yo exploit in which you placed an alternative, infected dll inside a folder with mp3s (winamp), or photos (windows picture viewer).
reply
datakan
2 hours ago
[-]
It’s Windows autorun all over again. What was old is new again.
reply
spullara
47 minutes ago
[-]
I agree, this isn't a vulnerability at all. Now that it's public, I'm not even sure I would do anything about it if I were them.
reply
jeremyjh
26 minutes ago
[-]
You think opening a git repo I just cloned should execute code in that repo?
reply
inigyou
1 hour ago
[-]
Cloning a repo owns your computer. Is that something you expected?
reply
_AzMoo
2 hours ago
[-]
This attack is exactly why IDE's have a concept of trusted and untrusted locations.
reply
paxys
1 hour ago
[-]
That is a very recent addition. The exact behavior they are describing was in VS Code for almost a decade.
reply
_AzMoo
47 minutes ago
[-]
Trusted locations were added to VSCode in 2021.

https://code.visualstudio.com/updates/v1_57

reply
paxys
45 minutes ago
[-]
And VS Code was released in 2015.
reply
beart
3 hours ago
[-]
This doesn't require anyone placing anything deliberately on your machine (as in, needing to exploit it somehow ahead of time). It could be as simple as checking out a branch to review, where the author of the branch has added the .exe.
reply
Xirdus
2 hours ago
[-]
I'd say checking out a malicious branch is in the same category as downloading a malicious attachment. By which I mean, it's kinda on you.
reply
beart
44 minutes ago
[-]
Okay... but when "you" is a junior engineer on your team and now you are suddenly spending your entire weekend dealing with malware, it's kinda on you as well.
reply
krater23
2 hours ago
[-]
Downloading this attachement doesn't executes it. Checking out a branch in this case executes the file in the branch. Thats a big difference.
reply
libeclipse
2 hours ago
[-]
Bro thinks cloning a repo means you're already compromised
reply
physix
7 minutes ago
[-]
Wouldn't this be something a virus scanner would detect and quarantine?

Not an active Windows user, but I can't imagine any sane person working on Windows OS without malware protection.

reply
Illniyar
4 hours ago
[-]
It's pretty weird for cursor to run arbitrary exe file without prompting, and alarming that the researchers did not get a proper response for months.

But the example with calculator is a bit misleading I think, you'll have to have a malicious exe already in the system and downloaded, and if cursor tried to run my understanding is that ACL should immediately kick in and you'll be asked for permission to run a new, unsigned app for the first time.

You'll have to have ACL disabled completely for this to be exploitable.

reply
shitter
3 hours ago
[-]
And what'll the prompt say? "Do you want to run git.exe?"? I'll probably assume Cursor needs to run git but permissions got messed up somewhere and click right through that.

I haven't used Windows in a while so pardon if I'm missing something.

reply
x3n0ph3n3
3 hours ago
[-]
Same thing happens if I have a:

1) PS1 that displays the current git branch

2) Include the current directory in my PATH

Should we file a high severity CVE with bash now?

reply
loumf
3 hours ago
[-]
It’s been known for decades that you should never put your current directory in your PATH. There are endless opportunities for vulnerabilities then. I learned this in college in the 80’s (by not following it and getting owned).
reply
jwolfe
3 hours ago
[-]
If bash placed the current directory in your PATH by default, then yes.
reply
lyu07282
1 hour ago
[-]
Could file a CVE with Microsoft then, cause thats kinda what cmd.exe is doing:

    > git clone git://evil evil
    > cd evil\
    > git status
The last line would execute git.exe from the cloned repo, wouldn't it?
reply
shitter
3 hours ago
[-]
I would file a CVE for any program that places untrusted content into PATH and invokes non-fully qualified executable names - not for the shell.
reply
Firehawke
2 hours ago
[-]
Not with bash. If your distro is putting ./ into the path then that's absolutely a high severity CVE with your distro's config.
reply
bragr
3 hours ago
[-]
I think this is slightly less of a Cursor bug than a bit of a Windows quirk: Windows searches the current working directory for executables before resorting to the path variable. I imagine a lot of stuff is vulnerable to such an "attack" on Windows.
reply
ncruces
9 minutes ago
[-]
Stuff that cares about security fixes this, though:

https://go.dev/blog/path-security

The functions Command and LookPath look for a program in the directories listed in the current path, following the conventions of the host operating system. Operating systems have for decades included the current directory in this search, sometimes implicitly and sometimes configured explicitly that way by default. Modern practice is that including the current directory is usually unexpected and often leads to security problems.

https://pkg.go.dev/os/exec#hdr-Executables_in_the_current_di...

reply
shitter
3 hours ago
[-]
Yeah, but you can easily mitigate it by searching for the real git in known system locations and using whatever you find there (or allowing the user to configure the path). I believe that's how VSCode does it
reply
Chu4eeno
2 hours ago
[-]
Yes, but it's an old known security gotcha people developing for Wintendo have to guard against.
reply
whateveracct
2 hours ago
[-]
that sounds like Cursor has a bug and vuln on Windows to me
reply
hmokiguess
1 hour ago
[-]
The 0 day vulnerability is actually a developer is using Windows
reply
firer
4 hours ago
[-]
All too common... It's sad yet understandable how a company would not prioritize security.

At the same time, it's also understandable how a security start-up, upon (rightly) getting fed up waiting, decide to publicly disclose, as a way to scrape some PR out of the sunk cost. Public disclosure has a place. But if you truly care about helping, you could do more than bumping on HackerOne and messaging the CISO once on LinkedIn.

Maybe I'm too cynical but it truly feels like nobody actually cares at this point.

reply
orphereus
3 hours ago
[-]
This comment is so weird. It is so vague to me and feels so off, like an alien from Men in Black trying to pass as a human.

How do they not truly care about helping? Also what sunk cost? What does that mean?

reply
firer
3 hours ago
[-]
Hah, not trying to pass off as human. Just communicating with my fellow men in black ;)

To be as explicit as possible: whether disclosing this publicly actually did more good then harm is not that clear cut. Even if accounting for all the second order effects.

Regardless, as a business you'd still be compelled to publish, because you've already poured resources into this research, there's still a chance to gain something, and there is enough plausible deniability about your true priorities.

reply
minraws
4 hours ago
[-]
Why is cursor subsequently executing anything? Like what is this black magic they want to do? I want to know the decision tree here? Was this cursor coded?

I do not understand the point, btw vim has had similar issues with it executing stuff you might not expect by loading a file but it was obviously a vim feature with %{expr}. But why specifically git.exe , this seems like the most redundant bug cve which could have been trivially patched, who does this feature help exactly?

I am not really a user of cursor never used it for even a single day, but at this point I am curious why this exists...

reply
evolve-maz
2 hours ago
[-]
Here's a common workflow:

- Ask cursor to summarize your existing repo to write you a nice readme

- Cursor opens repo

- Cursor looks at current code

- Because it's going above and beyond, it also wants to give you some metadata about the code (other branches for things in development, maybe previous tags as milestones, etc)

- To do that, it runs some git commands

Now the malicious behavior. I ask Cursor to evaluate some remote repo. It clones it down and then runs the git command from the working directory. However, if you just call "git ..." from the command line there is ambiguity about that. What if there's already a git file in the directory which windows thinks you want to execute?

This could happen with an untrusted repo. Or could happen from you switching branches to a compromised branch (which you wouldn't expect to immediately run some code).

Normal way to handle this is using fully qualified path names for things. E.g. instead of git ... you give the full path to system installed git. Annoying for humans to type but trivial for Cursor.

reply
SpicyLemonZest
4 hours ago
[-]
Presumably it's trying to find the user's actual Git so that the built-in agent can load context on different branches, worktrees, etc. Of course there are less vulnerable ways to do that, but this kind of mildly justified hackiness is exactly where I'd expect an AI-assisted workflow to go wrong (and an AI-assisted bug triage to fail to alarm).
reply
dclowd9901
3 hours ago
[-]
This draws to mind the dialog that opens when you open a new project in Cursor (and VSCode too, I think), where the IDE asks the user if they trust the project they're opening. Is Cursor under the impression that this is sufficient security apparatus?
reply
shitter
3 hours ago
[-]
Since there are no approval dialogs, it sounds like that doesn't even come into play here. That is the "gate" (to use the AI parlance) that Microsoft places on code execution in workspaces, though, and I would expect Cursor to at minimum fix this to only execute git.exe in trusted workspaces.
reply
alansaber
3 hours ago
[-]
Startups historically are not the most security oriented
reply
ajhenrydev
5 hours ago
[-]
This report reads a bit like AI writing :/

You need to have an already malicious payload on your pc to make this exploit work (via clone/download/magic). I can understand the severity of the exploit but at the same time I’d hope to not have to run into this situation for it to happen in the first place

reply
gene91
5 hours ago
[-]
Modern day code agents would clone a repo and read the code when you ask it a question about an API that’s not clearly documented. This vulnerability is real.
reply
paxys
1 hour ago
[-]
This is exactly why every AI agent should run in a sandbox.
reply
AntonyGarand
5 hours ago
[-]
The malicious payload can live on the remote: `git clone` a repo, open it with cursor, and you're compromised
reply
4ndrewl
3 hours ago
[-]
It's curious the number of people here who can't link these two things.
reply
pixl97
5 hours ago
[-]
>You need to have an already malicious payload on your pc to make this exploit work

Uh, no, not exactly from what I'm reading.

At least from my piss poor understanding of it, you could possibly prompt inject something like "download https://github.com/hackmycursor/exploit.git". Would an agent do this, I'm unsure, but if so, it would download the git.exe and execute it.

reply
trollbridge
5 hours ago
[-]
This has been a problem with agent harnesses for as long as I've used them - prompting them to retrieve something often results in them going the extra mile and running and installing it.
reply
dalemhurley
4 hours ago
[-]
If your an opensource developer you may get a pull request containing the the git.exe
reply
ryanisnan
2 hours ago
[-]
Uh, I don't think people typically associate downloading a repository, and viewing the source, as being synonymous with activating a malicious payload. That is the bit that's concerning.

I'm also so tired of people groaning about AI writing, yes, it's annoying, but attack the message, not the messenger.

reply
ribs
3 hours ago
[-]
I think you’ve got it wrong; no malicious payload need be on your box already. That’s not what the article says.
reply
JMKH42
5 hours ago
[-]
wouldn't the attack vector be like this:

I find a github repo, I want to contribute to it. I clone it, open up cursor, make an edit, commit, and boom, I am infected.

reply
skeledrew
4 hours ago
[-]
From my reading, boom happens at "open up cursor".
reply
dev_daftly
1 hour ago
[-]
You can leave out cursor and it would do the same thing.
reply
Illniyar
4 hours ago
[-]
you would only need to open it to be exploited, not edit or prompt. Allegedly
reply
dalemhurley
4 hours ago
[-]
From the article it occurs when Cursor is loaded. iDEs do a lot of stuff when they first open.
reply
aliasxneo
5 hours ago
[-]
I'm struggling to understand the process that went into this "feature" existing. It seems the most likely candidate is a developer's git started malfunctioning and an agent "fixed" it by dropping a `git.exe` in the repo and then conditionally calling it when it exists.
reply
gruez
5 hours ago
[-]
>It seems the most likely candidate is a developer's git started malfunctioning and an agent "fixed" it by dropping a `git.exe` in the repo and then conditionally calling it when it exists.

It doesn't need to be that deliberate. The default shell on windows (cmd.exe) includes the current directory into PATH by default. In other words, you don't need to do `./program.exe`, `program.exe` would suffice. That's probably where the bug came from. This also means if you were using cmd.exe, ran `git clone`, went inside it, then executed any command (eg. dir or git) you could get pwned.

reply
drdexebtjl
4 hours ago
[-]
Windows doesn’t really have a default login shell like Unix.

Windows Terminal defaults to PowerShell which does not suffer from this issue.

reply
inigyou
1 hour ago
[-]
Windows has a default login shell which is explorer.exe.

Windows also has a system(const char*) which certainly does something.

reply
conartist6
5 hours ago
[-]
and ever since, this approach has been a critical pathway for some billion dollar business probably. hooray
reply
pixl97
5 hours ago
[-]
I see you also work in enterprise software.
reply
imglorp
1 hour ago
[-]
This is exactly why Unix PATH (and offspring) does not contain "." by default. If you unpack an untrusted archive and run "ls" you could get popped.

Agents should be no different.

reply
nickelpro
1 hour ago
[-]
They aren't. This is a Windows quirk. Most IDE extensions which interface with git (or any other CLI program) from the CWD are "vulnerable" to the same attack.

This is why the upstream didn't take it seriously, this has been known for literal decades.

reply
paxys
1 hour ago
[-]
Clone a repo and run "npm install" and the exact same thing will happen. You can say "oh I would never run npm install on a repo I don't trust"...but then why are you cloning it and opening it in an IDE in the first place? Especially an IDE whose entire purpose is to run autonomous coding agents?
reply
jeremyjh
19 minutes ago
[-]
Cursor is an editor. Why is it executing untrusted code when a folder is opened? Opening a folder is not equivalent to executing a script contained in the repo. How can you think that is ok?
reply
AussieWog93
1 hour ago
[-]
The difference is that I expect "npm install" to execute code, where I do not expect merely opening a repo to look at the files in Cursor to execute anything.
reply
paxys
46 minutes ago
[-]
IDEs do syntax highlighting, typechecking, linting, automatic git refreshes. All of this happens in the background without you executing any code. If you open a Typescript project in VS Code and it automatically shows you a list of errors where do you think it got them from? It ran the tsc executable in your node_modules folder.
reply
jeremyjh
17 minutes ago
[-]
> syntax highlighting, typechecking, linting, automatic git refreshes

In most languages, none of those things involve execution of code in the repo. In languages that do - for example Elixir - it prompts you to trust them first.

reply
aniceperson
3 hours ago
[-]
damn those ai written Blogs are tiring. o a single paragraph saying that "cursor o windows loads ./git.exe with higher precedence" would be enough.
reply
nosefrog
5 hours ago
[-]
Would be nice if the timeline matched up with the text of the blog post (missing "HackerOne provides disclosure guidance").
reply
awongh
3 hours ago
[-]
I guess this is only specific to a file in the root of the repo, so it doesn't allow for an NPM supply chain attack?
reply
beart
3 hours ago
[-]
It has nothing to do with npm. However, a binary could be configured to extract your git/npm secrets using this exploit, which could then lead to a npm supply chain attack (or pip, etc. etc.).
reply
awongh
3 hours ago
[-]
I meant the attack would be the other way around- if an infected package had the git.exe file in their root.

Or, the infected package could also copy that file into the parent project's root.

reply
beart
3 hours ago
[-]
Oh yeah that's a good point - two layers of auto executing scripts/binaries.
reply
827a
3 hours ago
[-]
Frankly, if you git clone a compromised repository, I'm not sure that a vulnerability of the class "compromised code in that repository will be executed" is all that major a concern. There are plenty of IDEs that will go autonomously run npm installs (with post-install scripts) for you when they detect a package.json. This isn't all that different than that.

They could throw up a warning like "do you trust this repository" oh wait they already do, and no one cares. Security is hard. Ultimately if you have compromised code on your machine, all bets are off.

reply
beart
3 hours ago
[-]
A lot of malware was delivered back in the day via Windows AutoPlay feature. Someone plugs a USB drive in and bam, they are immediately exploited. You could say it's always a problem if the USB drive is already full of malware. However, Microsoft disabled AutoPlay in Windows 7 (and backported this fix) specifically to address this vulnerability.

This exploit feels very similar to me. I don't know if there's a specific name for this classification of AutoPlay issues.

reply
vanyaland
3 hours ago
[-]
Does the git lookup run before the trust check, or ignore it?
reply
chrisjj
4 hours ago
[-]
> The most obvious question is also the simplest: Why hasn't this been fixed?

Obvious answer is obvious. The devs do not consider it a bug.

reply
nubg
5 hours ago
[-]
> Most coordinated disclosures follow a familiar pattern:

> 1. A vulnerability is reported.

> 2. A dialogue begins.

> 3. Severity is discussed.

> 4. Engineering teams investigate.

> 5. Fixes are developed.

> 6. Users are protected.

> 7. Public disclosure follows.

8. The author prompts an LLM to write a blog post.

9. HN users are wasting time, unsure which parts of the post come from the actual prompt, and which are hallucinated world knowledge slop.

reply
mike_hock
4 hours ago
[-]
Maybe the bug report got ignored because they posted another 1000 slop reports, who knows.
reply
dakolli
4 hours ago
[-]
The disclosure seems pretty straight-forward, definitely some LLM assisted writing here, but not nearly as bad as most of the other stuff on this site.
reply
skeledrew
4 hours ago
[-]
Wonder who's fault it is when a critical security issue goes unresolved because "slop" report (sure ain't the reporters').
reply
chrisjj
4 hours ago
[-]
> Until the IDE is patched, open untrusted repositories only in an isolated VM, Windows Sandbox, or other disposable environment.

Got to wonder why trusted repositories are excluded...

reply
dalemhurley
3 hours ago
[-]
Except it might come from a trusted repo. Some of the biggest repos have been recently targeted in supply chain attacks. Consider for a moment

1. Attacker takes over maintenance of a widely used Cursor extension

2. Attacker adds a remote backdoor to monitor which repos are being maintained

3. Attacker decides to only infect the largest one with a git commit hook

4. The developer didn’t even know they just included git.exe in their commit

5. The developer is a sole maintainer on the repo and merges their own PR without review (because they(/their AI) wrote it)

6. Now a trusted repo is infected

7. A contributor pulls down the infected repo and opens cursor

reply