
Linux ha ormai sdoganato il gaming. Sempre più giocatori si stanno spostando su quel sistema operativo, ma non tutta la community può ancora ritenersi soddisfatta. Nonostante l’ultimo tabù che riguarda il Pinguino sembri essere caduto, il problema del multiplayer competitivo e dei relativi software anti-cheat ha portato la sfida in una nuova dimensione. Vediamo nel dettaglio di cosa si tratta e del perché l’anti-cheat costituisce uno scoglio quando si vuol giocare con un sistema operativo basato su Linux.
Un po’ di storia
Partiamo dall’inizio. I cheat code, letteralmente “Codici per imbrogliare” o “trucchi”, sono sempre esistiti. Nel ’93 quando si giocava a DOOM, era sufficiente digitare IDDQD per essere invincibili. Se eri un appassionato di Age of Empires, era sufficiente aprire la finestra di dialogo e digitare PEPPERONI PIZZA per avere 1000 unità di cibo. Nella versione PC del primo GTA (Grand Theft Auto), se nella riga di immissione del nome scrivevamo iamthelaw, la Polizia spariva dal gioco e potevamo fare qualsiasi cosa senza correre il rischio di essere arrestati. Utilizzare i trucchi era talmente normale che le riviste di gaming davano dei veri e propri libretti con tutti i cheat dei giochi del momento. Se siete amanti del retrogaming e collezionate i giochi dell’epoca, non è affatto raro trovare i libretti “pasticciati” con liste o veri e propri fogli aggiuntivi con tutti i codici annotati. Quasi sempre eravamo noi contro la CPU e, al massimo, la partita diventava talmente facile che si perdeva il gusto del gioco. Non si danneggiava nessuno, se non il nostro divertimento. I cheat code
Le cose cambiarono agli inizi degli anni ’90. Con la nascita del multiplayer, infatti, tanti giocatori avevano trovato il modo di barare ai tornei. L’utilizzo dei cosiddetti “trainer” consentiva di modificare la memoria del gioco per poter ottenere vantaggi. Attraverso questi tool si poteva entrare nei file del gioco e andare a modificare quasi tutto. Un’arma poteva fare più danno, un’armatura poteva far diventare invincibili e quant’altro. Bisognava correre ai ripari. Nel 2000, Tony Ray, fondatore di Even Balance Inc. creò la prima versione di PunkBuster, un rilevatore di cheat che venne integrato in Return to Castle Wolfenstein. Questo software nacque per contrastare la tossicità delle partite on line di Half Life. Il funzionamento era molto semplice: il software scansionava il computer alla ricerca di eventuali programmi attivi per barare nel gioco. Nel caso in cui venisse identificato un software che “iniettava” codice all’interno del gioco in esecuzione, la macchina veniva flaggata e bannata dai server. La vita per i cheater si fece improvvisamente dura, ma non durò molto. Sì, perché quella che si stava combattendo altro non era che la prima battaglia di una guerra destinata a inasprirsi sempre di più. Era un gioco di guardie e ladri combattuto con armi rudimentali, destinato a incontrare un’escalation rapidissima. Per capire meglio il livello da cui si è partiti e quello in cui si sta andando, occorre introdurre due concetti fondamentali: il Kernel e i Protection Rings.

Il Kernel
Il Kernel è il nucleo di un sistema operativo e, in maniera molto semplicistica, funziona da interfaccia tra hardware e software. Inutile dire che è la componente fondamentale di ogni sistema operativo e, ovviamente, è sempre in esecuzione. Il kernel gestisce qualsiasi cosa all’interno della macchina: le risorse, le chiamate, i metodi di accesso all’hardware, i confini di sicurezza delle applicazioni e quant’altro. È uno dei concetti fondamentali dell’informatica e se ne potrebbe parlare per ore. Una curiosità, è data dal fatto che “Linux” (compilato da Linus Torvalds – NDR) è in realtà il nome del kernel, non un sistema operativo. Arch, Debian Fedora e tutte le altre derivate, sono “Sistemi Operativi basati su Linux”. Sembra una differenza di poco conto, ma in realtà è decisamente importante coglierne la sfumatura. Anche Windows ha il suo kernel, che non ha nulla a che vedere con il kernel Linux. Quello del Pinguino è Open Source, motivo per cui alcune distribuzioni ne adottano uno custom (CachyOS, ad esempio, ha il kernel ottimizzato per il gaming – NDR), mentre quello di Windows è di proprietà di Microsoft.
Il kernel, generalmente, lavora in due modalità:
- Kernel Mode
- User Mode
La prima (Kernel Mode), è quella con i privilegi più elevati. In questo caso, il kernel ha accesso completo all’hardware, controllandone ogni aspetto. La seconda (User Mode), vede le applicazioni funzionare con una ridotta porzione di CPU e RAM. Le operazioni che coinvolgono l’hardware, come la lettura di un disco, l’invio di dati in rete o l’accesso a una periferica, non possono essere eseguite direttamente dall’utente, poiché lo User Mode non ha le autorizzazioni necessarie. Queste operazioni devono essere gestite dal kernel in Kernel Mode. Questa progettazione impedisce a un malfunzionamento o a un programma dannoso di compromettere l’intero sistema. Pensiamo a cosa succederebbe se uno spyware avesse accesso diretto all’hardware: potrebbe leggere tutti i dati sul disco fisso, controllare la webcam e così via.
Ecco perché sulla wiki delle varie distribuzioni del sistema operativo basato su Linux, si sconsiglia fortemente l’aggiunta di repository software non verificati. Senza un adeguato controllo, infatti, il rischio di scaricare pacchetti contenenti software malevolo si alza in maniera esponenziale.

Protection Rings
Immaginiamoci la struttura di un alveare. L’Ape Regina è al centro, con tutte le sue operaie intorno. Se un intruso cerca di entrare, prima di arrivare alla Regina deve fronteggiare le operaie. Dal punto di vista della sicurezza, il kernel funziona esattamente allo stesso modo. Volendo semplificare molto, in un’architettura hardware standard ci sono due livelli di protezione (Rings).
- Ring 0
- Ring 3
Il Ring 0 è il massimo livello di sicurezza, ed è qui che gira il kernel. Ha il livello più alto di privilegi, può eseguire qualsiasi istruzione di sistema e gli viene data piena fiducia nella gestione dell’hardware. Il Ring 3 è il livello in cui vengono eseguite le applicazioni in User Mode. È l’anello meno privilegiato e non ha accesso diretto all’hardware.
Come fanno a dialogare Ring 0 e Ring 3? Con le System Calls (chiamate di sistema) e i Kernel Privileges (privilegi kernel). Questo funzionamento potrebbe essere un po’ ostico da capire. Hai mai preso a noleggio una cassetta di sicurezza in una banca? Beh, quando vuoi avere accesso alla cassetta per prelevare o depositare qualcosa, devi andare in banca, e chiedere all’addetto. Questa persona ti accompagna, prende la tua cassetta dal caveau e attende che tu abbia finito di fare quello che devi. Alla fine, rimette la cassetta nello slot e ti riaccompagna fuori. In poche parole, all’User Mode viene concesso un permesso temporaneo per accedere a quella particolare risorsa in una particolare porzione dell’hardware e, una volta terminate le operazioni, il permesso viene revocato. Questo meccanismo garantisce che le applicazioni possano ottenere i servizi di cui hanno bisogno senza dover ottenere un accesso privilegiato diretto e pericoloso all’hardware.
Poc’anzi, abbiamo visto come i primi trainer e anti-cheat operassero su videogame e computer. L’adozione di software come PunkBuster costrinse i cheater ad alzare l’asticella. Come fai a non farti beccare da un programma che cerca un tool in User Mode? Semplice, sposti il cheat nel kernel e lo rendi praticamente invisibile. E a quel punto cosa succede? Succede che, chi vuole beccare il software anti-cheat, deve sviluppare un software che scenda a livello kernel per analizzare ciò che ci sta girando dentro. E l’eterna lotta tra guardie e ladri ricomincia nel suo eterno ciclo. E adesso? Adesso se si vuol barare bisogna andare a un livello ancora superiore. Non è più sufficiente scendere al livello del Kernel, bisogna affidarsi al paradosso del gatto di Schroedinger: è difficile trovare un gatto nero in una stanza buia, soprattutto se il gatto non c’è. Come fai a rendere difficilissimo scovare un software vietato in un kernel? Non mettendolo nel kernel. Oltre a questo, c’`e un altro aspetto da considerare: la produzione dei contenuti on line.
Potrebbe suonare strano, ma il principale nemico dei cheater è stato l’avvento delle streaming. Sì, perché molti di questi software hanno una GUI che permette a chi li usa di dare comandi o tenere sotto controllo i vari parametri. I dispositivi di cattura dello schermo per mostrare a tutti la propria partita in streaming impedisce ai giocatori di utilizzare questi software, perché ovviamente verrebbero serenamente beccati a barare. Anche per questo motivo, si è arrivati a sistemi superiori chiamati in gergo “Undetectable” (non rilevabili). Questi sistemi sono da veri e propri “hardcore cheaters”.

Le Schede DMA
Le schede DMA (Direct Memory Access) utilizzate per il cheating nei videogiochi sono dispositivi hardware, come le schede PCIe (es. PCIeScreamer, Spartan), che permettono di leggere e scrivere nella memoria RAM di un computer senza passare attraverso la CPU o il sistema operativo. Tutto chiaro fin qui? Bene, procediamo.
La scheda DMA viene collegata al PC da gioco (che chiameremo PC Host) attraverso un cavo USB. La DMA preleva i dati della memoria, li invia a un altro PC (che chiameremo Cheat Machine). Di fatto, il programma cheat gira all’esterno del PC da gioco, che viene in questo modo mantenuto pulito. Il software anti-cheat scansiona il kernel, non trova nulla e l’allarme non scatta.
In questo modo è possibile utilizzare tutta una serie di software come AIMbot (mira automatica), Wallhack/ESP (visualizzazione nemici attraverso i muri), Memory Editors (modifica dati di gioco) o Macro/Bot (per ripetere azioni in automatico senza premere fisicamente i tasti). Inoltre, alcuni professionisti utilizzano le KMBOX, delle schede che permettono di emulare mouse e tastiera attraverso degli script in python e che confondono l’anti-cheat, impedendogli di rilevare input a livello software. Difendersi da questo livello di cheating è estremamente difficile. Ai tradizionali software anti-cheat a livello kernel, vengono affiancati algoritmi di machine learning per analizzare i movimenti del personaggio e capire se sono scriptati o se sono reali.
L’anti-cheat ha migliorato la qualità del multiplayer, ma a che prezzo?
Questa è una domanda che qualsiasi esperto di informatica si è posto. Perché se è vero che l’utilizzo di software kernel-level ha aiutato a ripulire la tossicità dall’ambiente del multiplayer competitivo, è altrettanto vero che, lato cybersecurity, il discorso è decisamente delicato. Sì, perché un software che va a operare a livello kernel, di fatto, permette a chi gestisce il software stesso di avere le chiavi della macchina sul quale viene installato. E, chi lo utilizza, non si accorge di nulla. Questi programmi sono ovviamente closed source, pertanto non è possibile avere accesso al codice sorgente per capire come lavorano. In altre parole, è come se l’azienda che si occupa di erogarvi il gas in casa, vi obbligasse a dare un doppione delle chiavi all’addetto che viene a leggervi il contatore. La motivazione ufficiale è che occorre verificare che voi non forniate un conteggio inferiore dei metri cubi per pagare meno sulla bolletta, ma nessuno vi garantisce che l’addetto non si metta a girare in casa vostra raccogliere informazioni sulle vostre abitudini, su quello che fate, su cosa possedete e quant’altro. E, per di più, questa persona può entrare e uscire quante volte vuole, senza farsi vedere o sentire. Siete d’accordo? Perfetto, potete avere il riscaldamento. Non vi piace e preferireste di no? Peccato, niente gas. È un atto di fede, niente di più e niente di meno.
L’alternativa, in tutta onestà, non esiste. I videogames senza questo tipo di software di controllo sono totalmente ingiocabili, con partite piene zeppe di cheater che, con aimbot e altri software riescono a colpirvi da posizioni assurde senza sbagliare mai. Nemmeno il tempo di caricare la partita e siete già morti. Non dimentichiamoci che, a certi livelli, le aziende investono milioni in ricerca e sviluppo, denaro che viene investito per trarne ricavi. Se la community dei giocatori abbandona un titolo perché invaso dai cheater, le aziende possono andare incontro a perdite tali da dover interrompere il supporto al gioco per dedicarsi ad altri progetti. L’esempio più lampante è stato “The Cycle: Frontier”, letteralmente annientato dopo la prima stagione (ecco il comunicato ufficiale di chiusura)
Perché l’anti-cheat è problematico se si gioca su Linux?
I sistemi anti-cheat più popolari sono tendenzialmente scritti e sviluppati per lavorare sul kernel di Windows. Per questo motivo, quando si gioca su Linux e si cerca di installare un videogame che richiede l’anti-cheat per funzionare, si va incontro a problemi strutturali che non permettono la lettura del kernel. In questo modo, spesso i giochi non partono o, peggio ancora, vengono generati falsi positivi e si rischia il ban dell’account dai server di gioco. Le cose stanno migliorando, perché Proton (sviluppato da Valve – NDR) permette il supporto di titoli con Easy Anti-Cheat (EAC) e BattlEye in user-mode ma, come abbiamo già detto, la modalità user-mode è facilmente aggirabile. Se volete sapere se il vostro gioco è supportato da Linux, potete dare un’occhiata a Are We Anti-Cheat Yet? per avere e liste aggiornate all’ultima fase di sviluppo. Al momento, i sistemi kernel-level (es. Vanguard) non consentono di poter giocare su piattaforma Linux, ma non è detto che le cose non cambino da qui a qualche mese. Valve ha dato un’accelerata pazzesca al mondo del gaming su Linux e, teniamo presente, che all’orizzonte sta arrivando Steam Machine.
Iscriviti ai nostri gruppi Telegram
Link utili