Show HN: VSCan - Detect Malicious VSCode Extensions
I am a security researcher and student developer who ran into this problem myself. To help tackle this, I built a 100% free tool (no login required) that scans VSCode (and Cursor/Windsurf) extensions for:
- Hidden malware and obfuscated code
- Dangerous permissions and API misuse
- Vulnerable dependencies and suspicious network connections
Users have already found hundreds of vulnerabilities in extensions. VSCan generates a clean, developer-friendly security report to help you understand what you're installing.
Try it out: https://www.vscan.dev
I have also developed custom sandboxing security architecture to restrict extensions from malicious activity during runtime. There is no existing technology that does this, so if you would be interested in trying it out or learning more, please reach out!
I would greatly appreciate any feedback and thanks for your help!
_______________________________________________________________________________
Here are some numbers as to what I have detected from a sample of 1077 extensions that are available on the Marketplace:
- 3 extensions are marked as malicious by VirusTotal - 7 extensions use malicious network connections (verified by VirusTotal) - 33 extensions have dependencies with critical vulnerabilities - 39 extensions have sensitive information (I have seen api keys, usernames, passwords, etc.) - 204 extension have poor development practices as marked by OSSF - 71 extensions have very high permissions (while not bad can be indicator of potential malicious activity)
As an example here is the link to an extension analysis with malicious network endpoints: https://vscan.dev/?analysisId=9e6c1849-3973-402b-a4ff-3b4023...
Thanks for building a scanner! I wish it wasn't necessary :/
Right now we have the latter.
The difference does matter less when the binary and plugin are produced by the same group or individual though.
However, I always roll my eyes when I see high severity risk in dependency chains due to ReDoS vulnerabilities. Sure, it matters for a web server maybe, but code running in a CLI tool, browser app, VSCode extension, or even a serverless lambda runtime really won't be affected much. More often than not, I find the `npm audit` risk classifications to be nonsense.
Would be interesting to get more details on the sandbox.
[0] https://github.com/microsoft/vscode/issues/52116
it would also be nice if i could expand all the analysis detail at once, instead of just one section at a time.
I restricted it to one expanded at a time since more than one felt a bit crowded but that's something I might look into.
As for the raw name, most extensions should work if you just put the display name. The search algorithm directly pulls from the vscode marketplace.
If you update your UI to accept a "bulk analyze" mode where a list of newline extensions could be submitted and rendered out on a page, that would be pretty cool.