JoinGG.cc
Analysis

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:

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

  1. JEP 486: Permanently Disable the Security Manager — OpenJDK
  2. Technical info — fractureiser investigation team (GitHub)
  3. Modded Players Guide — fractureiser investigation team (GitHub)
  4. Introducing Asset Escrow for your resources — Cfx.re

securitypluginsminecraftfivem

More

Analysis

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