A group of Israeli researchers explored the security of the Visual Studio Code marketplace and managed to "infect" over 100 organizations by trojanizing a copy of the popular 'Dracula Official theme to include risky code. Further research into the VSCode Marketplace found thousands of extensions with millions of installs.
What makes this even more sneaky is that JetBrains has a theme called “Darcula”.
So, with a wider generic theme called Dracula and themes that duplicate JetBrains Darcula theme, it is no surprise that “Darcula Official” is being installed.
It’s more than just a typosquat
Because we live in a broken world and nothing matters.
On a more serious note, it’s a pretty horrifying misfeature. What’s even more worrying is that by all appearances Microsoft doesn’t give a shit, if they apparently didn’t even bother removing the malicious extensions that were reported. Not that I’m surprised, but still.
I think that’s how themes are distributed for VSCode, right?
With VSCode, everything is an extension.
But the vscode marketplace seems to have filters for themes, so there must be some way to differentiate them.
What makes this even more sneaky is that JetBrains has a theme called “Darcula”.
So, with a wider generic theme called Dracula and themes that duplicate JetBrains Darcula theme, it is no surprise that “Darcula Official” is being installed.
It’s more than just a typosquat
Edit:
But why can a theme make web requests?!
Because we live in a broken world and nothing matters.
On a more serious note, it’s a pretty horrifying misfeature. What’s even more worrying is that by all appearances Microsoft doesn’t give a shit, if they apparently didn’t even bother removing the malicious extensions that were reported. Not that I’m surprised, but still.
Why can a Word or Excel file execute shell code? Why does M$ SQL Server have xp_cmdshell?
Because devs chose to live in this part of the world, dictated by M$ and other large companies, who just don’t care.
To display ads on your ide
It’s not a theme here, it’s an extension.
I think that’s how themes are distributed for VSCode, right?
With VSCode, everything is an extension.
But the vscode marketplace seems to have filters for themes, so there must be some way to differentiate them.
I think extensions need a permissions system
You declare it in the package.json as a category when publishing. It’s completely self-selected with no oversight, review, or enforced permissions.
Microsoft security practices haven’t changed much over the decades
You can install themes directly from the theme selector.
Even worse, it also previews the theme when selected. I hope that the logic they use for that feature works in a simpler way.
I checked the logic and there is no rce.