Cheaters misbruiken netwerk-events om zichzelf geld te geven, voertuigen te spawnen en items te krijgen. Zo werken FiveM-trigger-exploits, waarom ze met de hand nauwelijks te controleren zijn en hoe ZeroTrust's Trigger Finder je volledige event-aanvalsoppervlak in kaart brengt en markeert.
Als je al een tijdje een FiveM-server beheert, ken je dit probleem: een speler met een cheatmenu geeft zichzelf geld, spawnt voertuigen of vult zijn inventaris met items, zonder ooit de bedoelde interface aan te raken. Hij breekt de game-engine niet; hij roept rechtstreeks de netwerk-events van je server aan.
Dit is de meest voorkomende manier waarop FiveM-servers worden misbruikt, en "beveilig je events" is het standaardadvies. Het probleem is dat dat advies ervan uitgaat dat je al weet welke events blootliggen. Op een server met tientallen resources weet bijna niemand dat. Dit artikel legt uit hoe trigger-exploits werken, waarom ze met de hand zo lastig te verhelpen zijn en hoe we het hele probleem in een tool veranderden: Trigger Finder.
In FiveM communiceren scripts over de client-servergrens via netwerk-events. Een client roept TriggerServerEvent aan en de server voert de handler uit die voor die eventnaam is geregistreerd. Zo werkt legitieme gameplay, en precies dat misbruikt een cheat.
Een cheatmenu kan elk netwerk-event dat je server registreert afvuren, met willekeurige argumenten. Heeft een resource een server-event dat geld toevoegt, een item geeft of een voertuig spawnt en vertrouwt het de waarden van de client, dan roept de cheater het gewoon rechtstreeks aan:
-- Kwetsbaar: de server vertrouwt alles wat de client stuurt
RegisterNetEvent("shop:buyItem", function(item, amount)
local ply = FX.GetPlayerFromSource(source)
-- Geen prijscontrole, geen validatie — de client bepaalt alles
ply.addItem(item, amount)
end)
-- Een cheat roept simpelweg aan:
-- TriggerServerEvent("shop:buyItem", "gold_bar", 9999)Eén event verhelpen is goed begrepen: server-side valideren, nooit client-invoer vertrouwen. We behandelen de exacte patronen in onze FiveM Lua Event-beveiligingsgids. Het moeilijke is niet één event verhelpen; het is weten waar ze allemaal zitten.
Een typische roleplay-server draait 50 tot 300+ resources, veel daarvan third-party scripts die je niet zelf schreef. Elk kan tientallen netwerk-events registreren — potentieel duizenden events, verspreid over bestanden die je nooit hebt geopend. Je kunt niet beveiligen wat je niet ziet, en niemand gaat handmatig elke resource doorlezen op zoek naar een vergeten addMoney-handler.
In plaats van nog meer documentatie te publiceren, bouwden we de audit rechtstreeks in het ZeroTrust-paneel. Het idee was simpel: als het gevaarlijke deel van een server zijn event-oppervlak is, dan zou elke eigenaar dat hele oppervlak in één oogopslag moeten kunnen zien, gesorteerd op risico, met een directe route naar elk.
Trigger Finder is een scanner ingebouwd in het ZeroTrust-dashboard. Je start een server-geïnitieerde scan en hij doorloopt je resources en haalt elk gevonden event en elke trigger eruit — elk gemarkeerd met resource, bestand, regelnummer, kant (client of server) en eventnaam.
In plaats van te gokken krijg je een volledige, doorzoekbare inventaris van elk netwerk-event dat je server blootstelt. Elke trigger wordt vastgelegd met waar hij leeft en in welke richting hij stroomt — Client → Server, Server → Client, Client → Client of Server → Server — zodat je meteen ziet welke bereikbaar zijn voor een kwaadwillende client.
Het resultaat is een risico-overzicht voor je hele server: hoeveel triggers veilig of kritiek zijn, welke resources de meeste gevaarlijke events bevatten en hoe alles zich verdeelt tussen client en server.
Elke bevinding linkt terug naar zijn resource → bestand → regel, met een code-contextweergave om de trigger ter plekke te lezen. Wanneer Trigger Finder een gevaarlijke addItem-handler markeert, weet je precies welk script en welke regel je moet harden — zonder zoeken.
Elke server is anders, zeker met custom frameworks. Je kunt je eigen sleutelwoorden en lijst met gevaarlijke events instellen, zodat Trigger Finder de functienamen markeert die er voor jouw scripts toe doen, niet alleen de standaardwaarden.
Trigger Finder vertelt je wat je moet beveiligen. De volgende stap dicht het gat: valideer elk gemarkeerd event server-side, haal waarden op via server-side methoden in plaats van de client te vertrouwen, en controleer de status, positie en rechten van de speler voordat je handelt. Alle patronen — plus de FXServer-beveiligingsconvars die het inschakelen waard zijn — staan in onze FiveM Lua Event-beveiligingsgids.
Je kunt geen aanvalsoppervlak verdedigen dat je nooit hebt gezien. Trigger Finder maakt van het vage advies "beveilig je events" een concrete checklist, gegenereerd uit je echte server — zodat je precies weet wat blootligt en waar je het moet fixen.