Statická, nebo dynamická analýza: co má prověřovat vaše FiveM resources?

Publikováno 5 min čteníTitan Software z.s.

Ve zkratce

Statická analýza čte FiveM resource, aniž by ho spustila; dynamická ho spustí v sandboxu a sleduje, co dělá. Pro revizi před instalací je správnou výchozí volbou statická analýza: během kontroly se nic škodlivého nespustí, prozkoumá se celý resource místo jen těch cest, které náhodou proběhly, a výsledek ukazuje na konkrétní soubory a řádky, které si provozovatel ověří. Dynamická analýza vidí skrz obfuskaci a kód sestavený za běhu, s čímž si statická vždy neporadí, ale pozoruje jen chování, které během běhu nastalo — a dnešní payloady běžně čekají, kontrolují sandbox nebo potřebují reálného hráče. V praxi se oba přístupy doplňují a poctivé je jasně říct, na jaké otázky který umí a neumí odpovědět.

Hlavní body

  • Statická analýza vzorek nikdy nespouští — samotná kontrola nemůže nic kompromitovat.
  • Statická analýza pokryje všechny cesty kódu; dynamická jen ty, které proběhly.
  • Dynamická analýza si poradí s obfuskací, což je přesně slabina té statické.
  • Vyhnout se detekci je levné: sleep, kontrola sandboxu nebo trigger vyžadující reálného hráče porazí naivní dynamický běh.
  • Ať použijete cokoli, výstup musí být ověřitelný důkaz — ne skóre, kterému musíte věřit.

Každý nástroj na bezpečnost kódu leží někde na jedné ose: uvažuje o programu, nebo program pozoruje? Obě odpovědi jsou legitimní, selhávají opačně a výběr je inženýrské rozhodnutí s důsledky, které by uživatel měl vidět.

Oba přístupy přesně

Statická analýza naparsuje zdroj do syntaktického stromu a uvažuje nad ním: jaké funkce existují, které hodnoty se dostanou do kterých volání, co manifest načítá. Nic se nespouští. Dynamická analýza vloží resource do instrumentovaného prostředí, spustí ho a zaznamenává syscally, síťová spojení a zápisy souborů. Spouští se všechno.

VlastnostStatickáDynamická
Spouští vzorekNeAno
Pokrytí kóduVeškerý dosažitelný kódJen cesty, které proběhly
Zvládá obfuskaciČástečně — strukturu ano, hodnoty často neAno, pozorováním výsledku
Zvládá odložené / spouštěné payloadyAno — kód je tam k přečteníJen když se trigger během běhu spustí
Vyprodukovaný důkazSoubor, řádek, datová cestaPozorované chování, časy, endpointy
Cena za skenNízká, sekundyVysoká, sandbox na vzorek
Riziko pro analyzující strojŽádnéReálné, vyžaduje izolaci
Kde který vyhrává a prohrává

Proč je FXScan statický

Rozhodnutí plyne z použití. Provozovatelé skenují resource před instalací, často ten, který si právě koupili, a potřebují odpověď během sekund, ne sandboxovou seanci. Tři vlastnosti udělaly ze statické analýzy zjevnou volbu.

  1. 1

    Revize musí být bezpečná už z konstrukce

    Kontrola před instalací, která kód spouští, musí být pokaždé dokonale zasandboxovaná. Z kontroly, která nikdy nic nespustí, není z čeho utéct.

  2. 2

    Tady je pokrytí důležitější než věrnost

    Typický FiveM backdoor na něco čeká — konkrétního hráče, prodlevu, příkaz. Třicetisekundový dynamický běh z toho neuvidí nic. Přečtení souboru uvidí všechno.

  3. 3

    Výstup musí ověřit i nespecialista

    „server/main.lua řádek 214 vezme tělo HTTP odpovědi, na řádku 218 ho dekóduje a na řádku 221 předá do load()“ si majitel serveru otevře a zkontroluje. Behaviorální trace ne.

Kde statická analýza skutečně selhává

Jasně přiznané limity nejsou skromnost, je to jediný způsob, jak výsledku dát smysl.

  • Kód sestavený za běhu. Když se řetězec skládá aritmetikou napříč několika soubory, constant folding ho nemusí vyřešit. Strukturální signál zůstává — něco skládá řetězec a spouští ho — ale payload ne.
  • Escrow šifrované resources. Není co číst. Správný výstup je „neanalyzovatelné“, ne „čisté“.
  • Vzdálený obsah. Resource, který stahuje kód, je označen jako loader, ale co endpoint vrátí zítra, dnes nikdo neví.
  • Úmysl. Statická analýza zjistí, že data tečou ze sítě do spuštění. Jestli to autor myslel jako systém pluginů, nebo jako backdoor, je lidský úsudek.

Kde skutečně selhává dynamická analýza

  • Pokrytí. Pozorovalo se jen to, co proběhlo. Payload spouštěný admin příkazem čtyřicátý den se prostě neobjeví.
  • Únik detekci. Detekce sandboxu, časové kontroly a „spusť se jen pro reálný licenční identifikátor“ se píšou levně a v praxi jsou běžné.
  • Reprodukovatelnost. Vzdálený endpoint může vašemu sandboxu servírovat neškodný obsah a reálným serverům payload. Stejný vzorek, jiný verdikt, z běhu nepoznatelné.
  • Cena a bezpečnost. Každý vzorek potřebuje izolované prostředí, řízení odchozí konektivity a úklid. To je reálná infrastruktura, ne knihovna.

Jak vypadá kombinovaný přístup

Zralá odpověď je vrstvení a tím směrem naše práce míří: statická analýza jako rychlý, bezpečný a univerzální první průchod; cílené dynamické potvrzení pro úzkou množinu vzorků, kde statická analýza odhalí loader, ale nerozplete payload; a průběžná opakovaná kontrola, aby verdikt patřil verzi, ne resource navždy.

Ta poslední část je důležitější než spor statická versus dynamická. Oba přístupy vyprodukují tvrzení o jedné verzi jednoho archivu v jednom okamžiku. Server ale běží měsíce. Pravdivost toho tvrzení udržuje jen opakovaná kontrola — a proto je Titan Security Cloud postavený kolem sledování změn, ne kolem jednorázového verdiktu.

Vyzkoušet pipeline statické analýzyValidace archivu, bezpečná extrakce, nalezení manifestu, AST a taint analýza, generování důkazů — z archivu se nikdy nic nespustí.

Časté dotazy

Jaký je rozdíl mezi statickou a dynamickou analýzou FiveM resources?

Statická analýza naparsuje zdrojový kód resource a uvažuje nad ním, aniž by cokoli spustila, takže pokryje každou cestu kódu a vzorek jí nemůže ublížit. Dynamická analýza resource spustí v izolovaném sandboxu a zaznamenává, co skutečně dělá, což vidí i skrz obfuskaci, ale pozoruje jen chování, které během daného běhu nastalo.

Proč FXScan analyzovaný resource nespouští?

Protože revize probíhá před instalací a musí být bezpečná už z konstrukce. Z kontroly, která nikdy nespustí kód, nemá škodlivý vzorek jak uniknout, a pokryje i cesty, které by krátký sandboxový běh nikdy nespustil — což je podstatné, protože FiveM backdoory typicky čekají na konkrétního hráče, příkaz nebo prodlevu.

Umí statická analýza odhalit obfuskované FiveM backdoory?

Částečně. Strukturální fakta obfuskaci přežijí — síťové volání i dynamické načtení jsou pořád vidět — ale hodnoty, které mezi nimi tečou, se často skládají za běhu právě proto, aby se staticky nedaly vyřešit. Správnou reakcí je nahlásit strukturální riziko a jasně napsat, že payload nebylo možné rozplést, místo vracení čistého verdiktu.

Související projekty

Čtěte dál