/dev/null: Ovladač jádra proti podvodům

Některé chystané hry od Riotu chráníme novými systémy proti podvádění.

Varování: Tento článek je docela technicky zaměřený a týká se nástrojů proti podvádění, které se nebudou týkat výhradně League of Legends. Ostatní hry (jako Projekt A) budou zmíněným vylepšením chráněny ještě dřív než LoL.

V partnerské studii, která trvala přibližně 8 let a měla federální podporu v hodnotě 20 milionů dolarů, dokázali vedoucí vědci chronologicky zařadit vynález podvádění do období někam mezi 3,5 miliardami let před naším letopočtem a 20. listopadem 1985. Přestože přesný počátek podvádění zůstává neurčený, jedna skutečnost se prostě začala brát jako fakt: Podvodníci budou podvádět.

Během posledních dvaceti let se vývoj podvodů a technologie, která jim brání, vyhrotil z čestného boje o kontrolu nad pamětí herního klienta v metody, které se pokoušejí upravit operační systém pod kapotou nebo dokonce i hardware podvodníkova stroje. Tyto techniky dokážou kompromitovat schopnost systému proti podvádění získávat spolehlivá data, a pokud musí systém proti podvádění běžet v uživatelském režimu, tento efekt se ještě násobí.

Co je uživatelský režim?

Popisuje úroveň oprávnění v rámci operačního systému, konkrétně tu nejpřísnější úroveň, na které může software běžet. Váš webový prohlížeč, vaše legitimní kopie WinRAR a vaše oblíbené hry, to vše běží v uživatelském režimu. V něm se aplikace nemůže napřímo „podívat mimo“ sebe sama, a místo toho se musí kód obvykle spolehnout na nativní API operačního systému, které bude číst a zapisovat paměť nikoliv v rámci vlastního procesu. Anebo abychom to shrnuli relativně srozumitelnou metaforou: My (v uživatelském režimu) se musíme zeptat v kuchyni (Microsoft Windows), co přidali do našeho hovězího guláše (League of Legends).

For_Loc_Kernel_Drivers-cze.jpg

Pokud se vám někdy stalo, že na vás nějaký stabilní génius vytasil hlášku: „Lol, můj cheat je nedetekovaný v kruhu 0“, pak se odkazoval právě k tomuhle – těsně předtím, než dostal ban.


V posledních několika letech začali vývojáři cheatů používat pro spouštění svých aplikací (či jejich částí) zranitelná místa nebo kompromitované podepisování ověření Windows na úrovni jádra (kernelu). Problém tady vyvstává z toho, že kód, který se spouští v režimu jádra, dokáže odchytit právě ty výzvy, které nám mají přinést potřebná data. Upraví totiž výsledky tak, že vypadají legitimně, a to způsobem, který se nám velmi těžko odhaluje. Už jsme viděli dokonce i specializovaný hardware, který používá DMA1 ke čtení a zpracovávání systémové paměti – vektor, který by při dokonalém provedení byl z pohledu uživatelského režimu neodhalitelný2.

Zatímco většině hráčů by představa kompromitované instalace Windows přišla nepřípustná, znepokojivý počet podvodníků projevil vyložené nadšení z příležitosti skočit na botnet někoho jiného výměnou za schopnost perfektní střelby za pohybu. Takže spousta cheatů se momentálně spouští s vyšší úrovní práv než náš systém proti podvodům. Abychom se vrátili k naší propracované analogii s kuchyní: Když se zeptáme šéfkuchaře, jestli přísady do našeho guláše opravdu pocházejí přímo ze statku, nějaký náhodný chlápek s čepicí přesvědčí vedení restaurace, že „se o to postará“, a pak na náš dotaz odpoví: „Jasně, chlape, jen dlabej.“

1DMA zde znamená „Direct Memory Access“ (přímý přístup k paměti), což je metoda, podle které by hardwarová součást mohla mít – jak už jste asi uhodli – přímý přístup k paměti, aniž by potřebovala Windows API. Některé vyspělejší komunity podvodníků ji použili, aby přeposílali paměť na samostatný počítač pro pozdější zpracování a ESP.

2Najali jsme si jednoho chlápka, který přímo vyvinul techniku, která to odhalí.

Proč mi tohle říkáte?

Inu, historicky vzato, váš oblíbený tým proti podvodům byl nucen hrát tuhle hru z uživatelské úrovně, čímž podvodníkům v podstatě dával tolik potřebný dvanáctiodpalový hendikep. Ještě jsme nepotřebovali obě ruce, ale to převážně proto, že máme výhodu stabilních výplatních pásek a nemusíme do postele v přesně stanovenou dobu. Ale i když se nám nápad na neustále eskalující válku aplikací s teenagery líbí, nyní vstupujeme do vesmíru s více hrami, kde bude kvůli lineárnímu času a spánkovému deficitu tato konkrétní strategie neudržitelná.

Právě proto některé z budoucích her Riotu bude chránit ovladač jádra.

Mám panikařit?

Existuje několik důvodů, proč panika v žádném případě není na místě.

  1. Stres může vést k vypadávání vlasů a já nechci, aby vám byla zima na hlavu.
  2. Díky tomuhle nezískáme žádný monitoring, který jsme dosud neměli. Kdyby nás zajímal babiččin tajný recept na dokonalou vánočku, neměli bychom žádný problém získat ho přímo z uživatelského režimu a pak ho prodat přímo Babicovi . Účelem tohoto vylepšení je monitorovat stav systému kvůli integritě (abychom našim datům mohli věřit) a ztížit podvodníkům modifikaci našich her (abyste za svoje osobní selhání nemohli vinit aimboty).
  3. Tohle vlastně ani není nic nového. Některé externí systémy proti podvodům – jako EasyAntiCheat, Battleye a Xigncode3 – vaše oblíbené AAA hry chrání pomocí ovladače jádra už teď. My do kuchyně Windows instalujeme svého vlastního zástupce šéfkuchaře, abychom měli jistotu, že když se zeptáme „je to pečivo bez lepku “, dostaneme upřímnou odpověď.
  4.  Vytvářet nedetekované cheaty bude výrazně těžší, takže budete chráněni před aimboty, my budeme chráněni před Redditem a podvodníci před sebou samotnými.

Věříme, že systém proti podvodům je jednou z nejdůležitějších složek online hry pro více hráčů. Rozhodně chceme, abyste hráli ve světě, kde nikdy nebudete muset pochybovat o schopnostech svého protivníka. Nemáme lék na cheatovou horečku, ale budeme se i nadále ze všech sil snažit, abychom vám přinesli co nejlepší kompetitivní zážitek.

Přenos je dokončen, ale já se vrátím přibližně za čtyři megasekundy, abych vám v pokračování našeho cenami ověnčeného románu „Odstraňování podvodníků z LoL“ řekl o botech v ARAMu.