The leaked plugin is the backdoor
Leaked copies of paid plugins and scripts are the easiest route for malicious code onto a game server: the owner runs them with full access and already expects someone to have tampered with the file. Operator backdoors, remote code loading, miners and credential theft all travel this way. The cheapest defence is to pay for the plugin or use an open-source one.
By SweetMask · · 5 min read
The first sign is usually an operator nobody on staff remembers adding, or a host's abuse desk asking why the machine is sending traffic somewhere new. Weeks earlier someone installed a free copy of a paid plugin. Leaked premium plugins are the easiest way into a community server because the owner installs them willingly, with full permissions, expecting the file to have been altered.
A premium plugin that turns up for free has had its licence check removed, so every leaked copy is by definition one somebody has modified. The owner has already accepted that a stranger edited the file. The only open question is what else the stranger changed, and nothing about a leak site is set up to answer it.
What a plugin can reach
A Minecraft plugin runs inside the same Java process as the server and can do whatever that process can, which includes reading every file the server can read and opening connections to anywhere. Bukkit never sandboxed plugins, and Java has since switched off the mechanism anyone might have used to try: the Security Manager, deprecated for removal in Java 17 and permanently disabled in Java 24.
A FiveM server resource has the same kind of reach. Two ordinary functions are enough for a remote control: PerformHttpRequest, which fetches whatever a web address returns, and Lua's load, which turns a string into code that can be run. Joining them takes a few lines, and a few lines hide easily in a long script. SourceMod loads plugins as compiled .smx files, and a plugin you cannot read or replace is one you are trusting completely.
What tends to be inside
The payloads are rarely inventive:
- a check for one username or UUID that quietly grants operator or admin rights, or a command nobody documented;
- code that downloads more code and runs it, so the payload can change whenever its author likes;
- a cryptocurrency miner, visible as a processor that never drops below full load;
- theft of the server's secrets: the database password, the Discord bot token, the store plugin's key, the RCON password;
- copies of itself written into the other plugins in the folder, so that deleting the original changes nothing.
Only the operator backdoor shows from inside the game, which is why it is so often how an owner finds out.
The documented case came through the front door
The best-documented example did not come from a leak site at all. In June 2023 a group of investigators published their findings on fractureiser, malware found in projects uploaded to CurseForge and BukkitDev, the two places Minecraft players and server owners are told to trust. The first stage was a small method added to a mod or plugin's main class and called from its static initialiser, with its strings stored as arrays of bytes so that a text search for the address would find nothing. It created a class loader pointed at a remote server and ran whatever came back.
Later stages installed themselves to survive a reboot (on Linux, as a systemd unit called systemd-utility.service) and went after the machine's owner: Microsoft and Minecraft credentials, Discord tokens, saved browser logins, and cryptocurrency addresses in the clipboard, which it replaced with addresses of its own choosing. They also scanned the machine for other jars that looked like mods or Bukkit plugins and tried to inject the first stage into them. The investigators' advice was to treat anything downloaded from either site between February and June 2023 as potentially malicious.
That happened on sites that approve uploads and have a great many people watching them. A leak site has neither, and its uploaders are anonymous by design.
Why sellers lock their files
For a small seller a leak is lost income, so sellers protect their files. On SpigotMC a premium plugin can carry the buyer's account ID in each download, so a leaked copy points back to whoever bought it. A leaker who wants to stay anonymous has to strip that out, which is one more change to a file nobody checks.
FiveM went further. In November 2021 Cfx.re introduced Asset Escrow, built with Tebex, which encrypts a resource so that it runs only on the servers of the people who bought it. The announcement was frank about what authors had been doing before: obfuscation, IP locking, remote code loading and other tricks, most of which, Cfx.re said, slowed code down and brought a wide range of security problems with them.
For years, then, legitimate protection trained server owners to accept code they could not read that phoned home to someone else's machine, which is exactly what a backdoor looks like. Escrow moved the lock into the platform, so a FiveM resource that still insists on fetching code from its author's server is now a warning sign rather than normal practice. Escrowed files also cannot be converted between frameworks, which gives an editable cracked copy one more reason to exist.
What checking looks like
The cheapest check is where the file came from: the author or the marketplace, never a link in a Discord message. Past that, a jar can be opened in a decompiler and searched for class loaders, process execution, outbound connections and strings assembled from byte arrays, and a Lua resource can be searched for PerformHttpRequest anywhere near load, or for long encoded strings nobody can read. Anything new should run first on a test machine with outbound traffic blocked, where whatever it tries to reach shows up in the firewall log.
After a compromise, cleaning is the wrong instinct. The plugin could read everything the server could, so recovery means a rebuild from known-good files and a new copy of every secret it held, a list that the security basics guide goes through.
What the free copy really costs
The economics that make leaks attractive are real enough. A new Minecraft community server has no income for months, and a handful of premium plugins can cost more than the hosting does. The leak looks like a saving because its cost is deferred and uncertain. Priced honestly, it is a bet that an anonymous person removed a licence check and nothing else, with the server's database and its players' trust as the stake. Buying the plugin is cheaper than losing that bet once. So is an open-source alternative.
Sources
- JEP 486: Permanently Disable the Security Manager — OpenJDK
- Technical info — fractureiser investigation team (GitHub)
- Modded Players Guide — fractureiser investigation team (GitHub)
- Introducing Asset Escrow for your resources — Cfx.re
More
Why Minecraft 1.8 PvP never died
The 1.9 Combat Update split Minecraft PvP in 2016, and the side that stayed on 1.8 never had to move, because plugins let servers keep the old fighting for newer clients.
SweetMask · · 4 min
Automated moderation arrives, and the old problems come with it
Discord's AutoMod and machine-learning filters cover every hour of the day, but they miss context and polite harassment, and they make appeals harder to answer.
SweetMask · · 5 min
Why consoles never got community servers
Consoles only let players reach what the platform can vouch for, and nobody vouches for a community server. Crossplay has let console players in as guests, never as hosts.
SweetMask · · 4 min