Backdoor scanner
The backdoor scanner audits the resources actually running on your server. It runs off-path on a schedule, so it never blocks gameplay; findings land in the dashboard for operator review. The deeper companion to the always-on Server analytics view.
What it protects against
The realistic threat is a malicious resource: dropped via a compromised dependency, included as a copy of a paid resource from a leak, or shipped by a member of the team who shouldn't have commit access. The scanner doesn't try to perfectly classify every resource as good or bad — it surfaces ones that look statistically off, and lets the operator decide.
How the scan works
Each finding has to survive three layers before it surfaces. The full architecture is on the False positives page; the short version for this scanner is:
- Pattern detection on every started resource, run on the FiveM server itself. Fast, by design noisy.
- Whitelist-first filter — hits inside known-clean frameworks (ESX, QBCore, ox-/qb-family, pma- and similar add-ons) and inside config files are filtered, unless the pattern belongs to the always-suspicious class (code execution, obfuscation, hardcoded exfiltration endpoints, anti-AC tampering).
- In-house AI severity grading on the surviving findings, classifying them into
low/medium/highseverity. Outage is fail-silent — findings reach the dashboard with a "grading…" badge and you can act before grading completes.
The grading runs on our own EU GPU server. Repeated snippets from standard frameworks are cached: the first time we grade an ESX or QBCore snippet, it's cached for every subsequent customer who hits the same snippet. That's also why the SHA-256 snippet-hash corpus matters — see the page on false positives for what we keep and what we don't.
Modes
The scanner is alert-only today: it never disables or removes a resource. Verdicts land in the dashboard and (if configured) post to a Discord webhook. The mode column therefore describes how strongly an alert is surfaced, not what gets executed.
| Mode | Behavior |
|---|---|
observe | Findings are written to the audit log and the dashboard's Resource hygiene tab. No notifications. |
score | Same as observe, plus a Discord-webhook notification if a webhook is configured. Useful for operators who want to be paged on findings. |
enforce | Reserved. The scanner does not yet take automatic action against a resource — that will require explicit opt-in and a review queue. |
Verdicts
| Verdict | What it means |
|---|---|
cleared | Resource passed the scan. Either it's on the curated framework whitelist, or its content didn't match anything that survived all three filtering layers. |
high_risk | The scan surfaced patterns strong enough to warrant operator review and the in-house severity grading classified them as elevated. Action stays manual — we don't auto-disable resources. |
whitelisted | Operator (or hoaxeye) marked this resource trusted. Whitelist entries are visible in the audit log with the reason. |
Auto-alert on risk crossing
When a resource crosses into the high_risk bucket, the dashboard surfaces a banner at the top of the Resource hygiene tab. Edge-triggered (one alert per crossing, not per scan), with a one-hour cooldown to avoid spam during noisy scan windows. This works in tandem with the always-on Server analytics view, which tracks the same resource over time without the deeper backdoor-pattern pass.
Cadence & scope
Methodology: the clean-run number is from a real test server, not a synthetic benchmark. With a real backdoor planted in a framework resource as a validation, the same pipeline cleanly detected it at high severity.
Operator recommendation
- All server types: leave the scanner running on the default cadence. Subscribe its Discord webhook to a private operator channel — not a public channel — so findings are visible to the team without leaking which signals fired.
- Custom-resource-heavy stacks: on the first run, expect to whitelist a handful of internal resources. Use the audit-log entries as your changelog — they tell future you why a given resource was trusted.
- See Server setup for the whitelist workflow in the dashboard, and Server analytics for the always-on companion view.