Resource Security

How to Check a FiveM Resource for Malware Before Installing It

A practical checklist for vetting a script before it runs on your server, and where automated scanning fits in.

The short answer

Before running any new resource on a live server, read through its code for obfuscation, unexpected network calls and excessive permission requests, and treat any resource you can't read as unverified. For anything beyond a small handful of scripts, pair that manual check with automated static scanning, since manual review alone doesn't scale.

Why you should check every resource, even "trusted" ones

It's tempting to skip vetting a resource that came from a well-known creator, a popular Discord, or a paid store — but "trusted source" is a claim about reputation, not a guarantee about the code itself. Accounts get compromised, creators make mistakes, and resources get re-uploaded or modified after the fact by someone other than the original author. A resource running with server-side privileges has access to your database, your players' data, and often full admin capability through Cfx.re's ACE permission system — the blast radius of one bad resource is large enough that a quick check before installation is worth the few minutes it takes, regardless of where the resource came from.

A manual review checklist

When you do open a resource's code before installing it, a few patterns are worth specifically looking for:

Obfuscated or minified code with no source. Legitimate resources are usually readable Lua or JavaScript, even if compact. Code that's been deliberately scrambled, or shipped only as a compiled/encoded blob with no corresponding source available, removes your ability to verify what it actually does — that alone is a reason for caution.

Unexpected outbound HTTP or webhook calls. Search the code for PerformHttpRequest or similar networking calls and check where they point. A script has no legitimate reason to send player data, admin actions, or database contents to a URL that isn't part of its documented functionality.

Encoded or concatenated strings. Base64 blobs, character-code arrays, or strings built up piece by piece at runtime are a common way to hide a URL, a command, or a backdoor from a casual read-through. Their presence doesn't automatically mean something is wrong, but it's a reason to decode and inspect rather than skip past.

Requests for excessive ACE permissions. A resource asking for broad admin-level ACE grants when its stated function doesn't obviously need them is worth questioning before you grant it.

Why manual review doesn't scale

A checklist like this works fine for one script. It works much less well once a server is running dozens of resources across a full roleplay framework, each one updated independently, with new ones added regularly as the server grows. Reading every line of every resource, every time something changes, isn't a realistic ongoing practice for most server owners — which is exactly where the risk of something slipping through tends to show up in practice.

Where automated static scanning fits in

Automated static scanning applies the same categories of checks — obfuscation, suspicious network calls, encoded strings, unusual permission requests — consistently and quickly across an entire resource list, including every time a resource is updated. It doesn't replace judgment about what a resource is supposed to do, but it removes the scaling problem of manual review and gives you a baseline check to run before anything goes live.

Scan a resource before you trust it

FXScan is a free static security scanner for FiveM resources — it flags obfuscation, hidden webhooks and other backdoor patterns before code runs on your server.

Scan a resource

Related guides