25 czerwca 2026
6 min read
ZeroTrust Team

Zatrzymywanie exploitów triggerów w FiveM: jak rozwiązaliśmy to dzięki Trigger Finder

Oszuści nadużywają zdarzeń sieciowych, aby dawać sobie pieniądze, spawnować pojazdy i zdobywać przedmioty. Oto jak działają exploity triggerów w FiveM, dlaczego tak trudno je audytować ręcznie i jak Trigger Finder od ZeroTrust mapuje i oznacza całą Twoją powierzchnię ataku zdarzeń.

Jeśli prowadzisz serwer FiveM od dłuższego czasu, znasz ten problem: gracz z menu cheatów daje sobie pieniądze, spawnuje pojazdy albo zapełnia ekwipunek przedmiotami, nie dotykając przewidzianego interfejsu. Nie łamie silnika gry; bezpośrednio wywołuje zdarzenia sieciowe Twojego serwera.

To najczęstszy sposób wykorzystywania serwerów FiveM, a „zabezpiecz swoje zdarzenia” to standardowa rada. Problem w tym, że ta rada zakłada, że już wiesz, które zdarzenia są wystawione. Na serwerze z dziesiątkami zasobów prawie nikt tego nie wie. Ten wpis wyjaśnia, jak działają exploity triggerów, dlaczego tak trudno je naprawić ręcznie i jak zamieniliśmy cały ten problem w narzędzie: Trigger Finder.

Czym właściwie jest exploit triggera

W FiveM skrypty komunikują się przez granicę klient–serwer za pomocą zdarzeń sieciowych. Klient wywołuje TriggerServerEvent, a serwer uruchamia handler zarejestrowany dla danej nazwy zdarzenia. Dokładnie tak działa legalna rozgrywka — i dokładnie to wykorzystuje cheat.

Menu cheatów może wywołać dowolne zdarzenie sieciowe zarejestrowane przez Twój serwer, z dowolnymi argumentami. Jeśli zasób ma zdarzenie serwerowe, które dodaje pieniądze, daje przedmiot lub spawnuje pojazd i ufa wartościom przysłanym przez klienta, oszust po prostu wywołuje je bezpośrednio:

-- Podatne: serwer ufa wszystkiemu, co przysyła klient
RegisterNetEvent("shop:buyItem", function(item, amount)
    local ply = FX.GetPlayerFromSource(source)
    -- Brak sprawdzenia ceny, brak walidacji — klient kontroluje wszystko
    ply.addItem(item, amount)
end)

-- Cheat po prostu wywołuje:
-- TriggerServerEvent("shop:buyItem", "gold_bar", 9999)

Sedno problemu

Każdy handler zdarzenia sieciowego, który dodaje pieniądze, przedmioty, broń, pojazdy lub prace, jest potencjalnym exploitem, o ile serwer nie zweryfikuje żądania niezależnie od tego, co twierdzi klient.

Dlaczego tak trudno naprawić to ręcznie

Naprawa pojedynczego zdarzenia jest dobrze znana: waliduj po stronie serwera, nigdy nie ufaj danym klienta. Dokładne wzorce opisujemy w naszym Przewodnik bezpieczeństwa zdarzeń Lua w FiveM. Trudność nie leży w naprawie jednego zdarzenia; leży w tym, by wiedzieć, gdzie są one wszystkie.

Typowy serwer roleplay uruchamia od 50 do ponad 300 zasobów, wiele z nich to skrypty zewnętrzne, których nie pisałeś. Każdy może rejestrować dziesiątki zdarzeń sieciowych — potencjalnie tysiące zdarzeń rozsianych po plikach, których nigdy nie otwierałeś. Nie da się zabezpieczyć tego, czego nie widać, i nikt nie będzie ręcznie czytał każdego zasobu w poszukiwaniu zapomnianego handlera addMoney.

Widoczność to prawdziwy problem

Właściciele serwerów nie padają ofiarą, bo zabezpieczenie zdarzenia jest trudne. Padają ofiarą, bo nigdy nie wiedzieli, że niebezpieczne zdarzenie w ogóle istnieje.

Jak to rozwiązaliśmy

Zamiast publikować kolejną dokumentację, wbudowaliśmy audyt bezpośrednio w panel ZeroTrust. Pomysł był prosty: jeśli niebezpieczną częścią serwera jest jego powierzchnia zdarzeń, to każdy właściciel powinien móc zobaczyć całą tę powierzchnię na pierwszy rzut oka, uszeregowaną według ryzyka, z bezpośrednią drogą do każdego elementu.

  • Znaleźć wszystko — automatycznie zmapować każde zdarzenie i trigger we wszystkich zasobach, nie tylko te, które pamiętasz.
  • Uszeregować według ryzyka — wyróżnić handlery, na które naprawdę polują oszuści (pieniądze, przedmioty, broń, pojazdy, prace, wychodzące HTTP), abyś zaczął tam, gdzie to ważne.
  • Prosto do źródła — wskazać dokładny zasób, plik i wiersz, aby naprawa zajęła sekundy.

Poznaj Trigger Finder

Trigger Finder to skaner wbudowany w panel ZeroTrust. Uruchamiasz skan inicjowany przez serwer, a on przechodzi przez Twoje zasoby i wyciąga każde znalezione zdarzenie i trigger — oznaczając każdy zasobem, plikiem, numerem wiersza, stroną (klient lub serwer) i nazwą zdarzenia.

Mapuje całą Twoją powierzchnię triggerów

Zamiast zgadywać, otrzymujesz kompletny, przeszukiwalny spis każdego zdarzenia sieciowego, które wystawia Twój serwer. Każdy trigger jest zapisany z miejscem, w którym żyje, i kierunkiem przepływu — Klient → Serwer, Serwer → Klient, Klient → Klient lub Serwer → Serwer — abyś od razu widział, które są osiągalne dla złośliwego klienta.

Automatycznie oznacza te niebezpieczne

  • Przenoszą pieniądze: addMoney, giveMoney, addAccountMoney, addBank, giveBank.
  • Dają przedmioty: giveItem, addItem, addInventoryItem.
  • Rozdają broń: giveWeapon, addWeapon.
  • Spawnują pojazdy: addVehicle, spawnVehicle.
  • Zmieniają prace: setJob, setPlayerJob.
  • Tworzą pickupy lub wysyłają żądania wychodzące: createPickup, PerformHttpRequest, SendWebhook.

Wynikiem jest rozkład ryzyka dla całego serwera: ile triggerów jest bezpiecznych, a ile krytycznych, które zasoby zawierają najwięcej niebezpiecznych zdarzeń i jak wszystko dzieli się między klienta a serwer.

Porządkuje wszystko w kategorie

  • Pieniądze, Zdarzenia dawania/dodawania przedmiotów i Zdarzenia ekwipunku dla ekonomii.
  • Spawn pojazdów i Zmiana pracy dla typowych exploitów roleplay.
  • RegisterNetEvent i AddEventHandler, aby wychwycić zdarzenia zarejestrowane w złym kontekście.
  • Zdarzenia dynamiczne dla wszystkiego, co nie pasuje do znanego wzorca.

Prowadzi Cię do dokładnego wiersza

Każde znalezisko prowadzi z powrotem do swojego zasobu → pliku → wiersza, z podglądem kontekstu kodu, aby odczytać trigger na miejscu. Gdy Trigger Finder oznaczy niebezpieczny handler addItem, wiesz dokładnie, który skrypt i wiersz wzmocnić — bez szukania.

Można go dostroić do Twojego serwera

Każdy serwer jest inny, zwłaszcza z niestandardowymi frameworkami. Możesz skonfigurować własne słowa kluczowe i listę niebezpiecznych zdarzeń, aby Trigger Finder oznaczał nazwy funkcji ważne dla Twoich skryptów, a nie tylko domyślne.

Od wykrycia do naprawy

Trigger Finder mówi, co zabezpieczyć. Zamknięcie luki to kolejny krok: waliduj każde oznaczone zdarzenie po stronie serwera, pobieraj wartości metodami serwerowymi zamiast ufać klientowi i sprawdzaj stan, pozycję oraz uprawnienia gracza przed działaniem. Wszystkie wzorce — wraz z convarami bezpieczeństwa FXServer, które warto włączyć — znajdziesz w naszym Przewodnik bezpieczeństwa zdarzeń Lua w FiveM.

Obrona wielowarstwowa

Trigger Finder mapuje powierzchnię, walidacja po stronie serwera zamyka dziury, a detekcje ZeroTrust łapią oszustów, którzy próbują dalej. Żadna pojedyncza warstwa nie wystarczy sama.

Przestań zgadywać swoją powierzchnię ataku

Nie da się bronić powierzchni ataku, której nigdy nie widziałeś. Trigger Finder zamienia mglistą radę „zabezpiecz swoje zdarzenia” w konkretną listę kontrolną wygenerowaną z Twojego prawdziwego serwera — abyś dokładnie wiedział, co jest wystawione i gdzie to naprawić.

Gotów zobaczyć powierzchnię triggerów swojego serwera?

Trigger Finder jest częścią panelu ZeroTrust. Zdobądź ZeroTrust lub dołącz do naszego Discorda, aby zacząć.