8 ms·
Is there really no way to make anti-cheat on Linux that can't be bypassed? I don't know much about this, but it seems very difficult to make an anti-cheat for a
by hastily3114 10mo ago
Is there really no way to make anti-cheat on Linux that can't be bypassed? I don't know much about this, but it seems very difficult to make an anti-cheat for a platform where you can make changes in the kernel.
- kachapopopow 10mo agoLinux explicitely allows you to do things that makes cheating *really* easy. There is also complete lack of secure boot and a way to validate that your kernel hasn't been compromised. I mean seriously, making a cheat for a proton supported game that no anticheat has any hopes of detecting are in 100 lines of a kmod driver and 1 console command: insmod. On windows you at least need to use scuffed tools like KDU to bypass signature verification requirements and every anticheat can detect you with a simple physical memory scan.
- rcxdude 10mo agoLinux supports secure boot just fine, it's just happy (correctly, IMO) to give the keys to the user and not the developer.
- ChocolateGod 10mo agoUnfortunately right now SteamOS does not support secure boot or measured boot.
- kachapopopow 10mo agoyah my bad: vendor defined secure boot*
- kalaksi 10mo ago> There is also complete lack of secure boot That's not true, though?
- kachapopopow 10mo agowell lack of secure boot is bad wording, lack of vendor defined secure boot.
- Zak 10mo agoI think the most stringent types of Windows anti-cheat rely on remote attestation of the operating system. It's theoretically possible to design a Linux-based OS that supports such a capability, but the sort of people who choose Linux are unlikely to accept a third party having the final say over their computer. I, for one am disappointed that anyone has accepted it. Once it's widespread, service providers can demand it, as we're seeing with mobile banking apps and game anticheat.
- Cu3PO42 10mo agoI also strongly dislike requiring remote attestation for any kind of software I want to run. But what I also dislike is cheaters in my online games and I genuinely do not have a better suggestion on what to do. Personally, I run Windows purely for gaming and don't let it near any important data. For the latter, I boot into Linux with separately encrypted disks.
- progbits 10mo agoI'm doing the same but I worry about windows compromise messing with the bootloader so then encrypted linux drive won't save me. Probably too paranoid though?
- Cu3PO42 10mo agoIf you use secure boot and don't let your keys near Windows, you should be fine even if your Windows install is compromised. Unless you don't trust Microsoft themselves, in which case you'd need to re-enroll keys whenever switching operating systems, which is possible, but very tedious.
- amiga386 10mo ago>But what I also dislike is cheaters in my online games and I genuinely do not have a better suggestion on what to do. You can't suggest "run online games as close-knit social groups, with social exclusion punishments for cheaters", which is how most online games used to be run. How old are you? Game vendors used to be happy letting us host and run our own multiplayer games, until they realised they could get more money out of us -- "battle passes", microtransactions, ability to forcibly turn off multiplayer of older game when newer remake comes out -- and now they've made themselves a mandatory part of your online experience. You have to use their matchmaking and their servers. So now it's down to them to solve the problem of cheaters, enabled by their centralised matchmaking... and their only solution is remote attestation of your machine and yet more data collection?
- jsheard 10mo agoA trusted entity (probably Valve) could provide a locked down distro where kernel integrity is enforced through secure boot and TPM attestation, but that would mean giving up some control over your own system. There's no guarantee that anything client-side is impossible to bypass of course, but the goal would be to more or less match what Windows offers, which isn't perfect either.
- ChocolateGod 10mo ago> giving up some control over your own system There could simply be a developer option that disables these integrity checks but subsequently breaks online games that rely on them. Valve could also offer a module that allows signed user-space binaries access to kernel space, which would be an improvement over Windows offers in that anti-cheat wouldn't need to live in the kernel. I think that's a fine trade off.
- NekkoDroid 10mo agoYou don't even need a developer mode. I was looking into making my own image based distro/system which has its bootchain entirely verified and I intend to make any modifications via system extentions[1], which IIRC also get measured aswell (or was at least planned somewhere). To be fair, this is purely additive or overlaying, so no removing of files, at best changing. This all would be signed using Secure boot and after the fact using dm-verity. Secure Boot in theory isn't even necessary, only TPM2. Secure boot only ensure that you are actually booting into a binary that you expect to boot in this case, so if your binary is actually different it would result in different PCR values in the TPM indicating something is wrong. Sadly a lot of end user software (flatpak, ...) isn't packaged & signed in a way which would allow for full "only run software I allow by importing public keys" (read Linux IPE[2]), but what can you do, only your best I suppose... [1]: https://www.freedesktop.org/software/systemd/man/systemd-sysext.html https://www.freedesktop.org/software/systemd/man/systemd-sys... [2]: https://docs.kernel.org/admin-guide/LSM/ipe.html https://docs.kernel.org/admin-guide/LSM/ipe.html
- Hikikomori 10mo agoCould reboot into secure mode for these types of games.
- soloridindan 10mo agoI think the moment you accept data from the client as truth you've lost the battle already, everything else is just damage control. Loads of games have realized this and kept checking game rules on the serverside and reveal data on a need-to-know basis. This makes it nearly impossible for cheats to be made because anything you know you should know, and everythin you act is parsed by the backend according to rules already present
- jsheard 10mo agoSome kinds of cheating can be mitigated that way, but it can't really stop cheats which just play the game more optimally than the user is able to, using the same inputs and outputs that a legit player would use. Aim assistance in shooters, automatic parries in fighting games, economy-breaking levels of automation in MMOs, and so on. There's also practical limits to how much data you can filter out in complex 3D games, both due to performance constraints, and because culling information too perfectly can cause things to pop into existence too late under real-world network latency. The effectiveness of ESP cheats can be reduced, but not eliminated in practice.
- soloridindan 10mo agoI think anything that relies on reflex alone is flawed design. You can design around this, by for example in Dota2 it doesen't matter how fast you click an entity, because the turnrate of your character is limited, so a person clicking reasonably fast and a bot clicking in 0.01ms both arrive there at the same time. Precision also doesn't matter, because a player can click the icon of the enemy instead of trying to match the pixels on screen. MMO scripts that use information already given by the game just seem like the MMO should invest in UX instead of trying to ban people for using the tools the game already gives them.
- vkou 10mo agoUnless DOTA2 is running at a ~3 tick rate (Which it's not), even taking account processing delays and action batching, a bot will always have faster reaction times than an actual player. It will also never misclick. This problem is magnified in a shooter game, which would be unplayable with that kind of batching, but where a cheater with an aimbot is actually impossible for a legitimate player to beat.
- 63stack 10mo agoThere is no way to make anticheat that can't be bypassed, regardless of OS. All of the anticheat games today have cheaters.
- mrob 10mo agoCorrect. E.g. you can aimbot by routing the video signal to a capture card on a separate computer and run image recognition software to generate mouse movements spoofed at the hardware level. The only way to reliably prevent cheating is with in-person tournaments played on hardware provided by the organizers.
- tgv 10mo agoAs someone said about the lack of a Switch anti-cheat: it's a numbers game. If cheating is as easy as downloading a .exe for a few $$$, you're going to find cheaters everywhere. If it requires a complex, and/or fairly expensive setup, the number is going to be very low. That's assuming there's no money in being a cheater.
- calgoo 10mo agoThe best way is to just make private servers, so people can play with their friends and not have to worry about random players. This also solves the issue of people using.... language thats not acceptable in games.
- 360MustangScope 10mo agoIt doesn’t have to be 100%. The point is to make it inconvenient. The majority of people will not do it if it is inconvenient. Thats the point to many things in life that you just make it more difficult and most people won’t be bothered to attempt to circumvent whatever it is. There will still be circumventers but it is will be less than if you just said fuck it.
- zeta0134 10mo agoSure. That also means it doesn't have to be kernel-level rootkits that fundamentally break the security model of my operating system and risk my bank account. Most people will be stopped by userland anticheat, right? It's inconvenient. So ... put it *there.* And if someone does the kernel bypass thing, well, rely on server-side heuristics (which are imperfect, but also unknowable to the attacker) and you'll discourage enough of that with account bans. Helpfully eSports players tend to have video captures of their gameplay, and most of these "undetectable" cheats are real obvious if you actually watch the footage. That catches most of the serious stuff at the upper level. It's why video verification has been a thing in the speedrunning scene for such a long time.
- RobotToaster 10mo agoLinux is resistant to rootkits, which is what these things are, and allows you to remove them, yes. The correct solution is to verify everything server side, or actually have humans watch replays and ban cheaters, but both of those would reduce profits, so will obviously never happen.
- lan321 10mo agoIMO the real solution is back in community servers and votekicking.. It works on old games with no anticheat measures.. Maybe add some blatant detection for people teleporting and doing other absolutely impossible things serverside, but I don't understand why my team has to ruin their 'reputation' teamkilling a cheater so he doesn't ruin the game completely in most current games when the anticheat only catches free, old cheats. Just let people votekick and find someone else in the matchmaking queue who's willing to join halfway through.. Once votekicked enough times you can escalate to the AI (always indians) for automated (manual) review. Also, you don't even have to ban cheaters. Just isolate them to play with each other. Some might find it fun and keep away from the normal players. Edit: The 'issue' with community server manual review and votekick is you can be kicked for being cracked or garbage at the game legitimately, but TBH at this point you're ruining the fun of everyone else, so you should probably get in another server/match.. Also that premades can have majority, but that's easily solved by reducing their vote weight.
- Hikikomori 10mo agoI mean not really, as someone that had been votekicked from many games. Servers with admins does solve this, but has it's drawbacks. But you also cannot have the matchmaking type of game that are popular today. Back in MW2 if you were the host you could kick players from your game using a cli tool that adjusted firewall rules.
- lan321 10mo agoFor lobbied ones votekick is great as long as you remove majority vote from premades. So in a 5v5, a 3 man premade isn't able to kick any of the 2 randoms alone. I remember the misuse of it but it was better than having your only option be teamkilling, which is now punished in all games via reputation systems. The only thing I don't see this as a solution for are games like Planetside, with massive lobbies. I know they used to have automated detection and manual review by admins teleporting and flying around, usually invisible to sus players. Once we found a bug and got inside the map able to shoot through the ground and in like 15 minutes an admin came, asked us how we got in there and to get out nicely, before he gets us out forcefully :D
- theshrike79 10mo agoServer-authoritative games. Basically the client does stuff, gives the list of moves to the server along with a checksum/end result. Then the server runs the same commands on the same starting state and checks if it got the same result. If a==b, then everything moves on as normal. If not, the client gets a synchronisation error and has to rewind back to the last known good state. Completely unfeasible for anything real-time pretty much.
- 0xC0ncord 10mo agoHaving done modding for some older shooter games built on the server-authoritative model, it's still possible to create a "pingless" experience, but it requires more calculations and compromises on client/server trust to make it work. For shooters specifically, you want the client to provide instant feedback when the gun fires, and ideally when they hit an enemy. You can achieve this by telling the server "I was at position A and shot my gun at position B and hit enemy Bob." The server will validate all of this before informing the client who fired and the client for "Bob" that Bob was killed. The compromise here is that the server must trust that the client isn't sending forged data, or the server must do additional computations to validate it.
- PetitPrince 10mo agoAn elaborated version of this idea is called "rollback" where you let the local client predict and execute the game state at time t+1 and will "roll back" the state of the game if it received another game state than the one predicted. Extremely popular and state of the art for 2D fighting games (most of the time the prediction is correct and it greatly reduce the perceived lag) , but probably harder a bit harder to do with 3D games.
- JustFinishedBSG 10mo agoThere’s just no way to stop cheating client side despite what devs love to think. But server side anti cheat is much harder and requires more work; it’s much simpler to just install spyware / rootkits on the client and call it a day.
- 360MustangScope 10mo agoYou can’t prevent wall hacks with only server side anti cheat. The client needs that data locally before the enemy is rendered on screen. As mentioned in another comment, you can’t do this on the server without expensive checks for every single player that is always checking line of sight, because it’s not just your session running on a single server but multiple sessions. And let’s say you did this, now you have a latency problem because most modern games to make them feel fluid has client side prediction with server reconciliation. This is what makes your modern games feel more responsive, if you put a constant server check there you have lost this. No matter what people say online, it isn’t just move all of it to the server, there is data the client needs to know and can’t be spoonfed by the server.
- data-ottawa 10mo agoI think it’s an organization accountability issue. Why would a company pay for anti cheat infrastructure when they can outsource it to some company and blame them if there are cheaters or upset users? Windows is the status quo too, so it’s very easy to point to everyone else when justifying your choice to the execs. It would be great if steam deck+box start costing studios quantifiable amounts of money that can be used to justify fixing this instead of outsourcing and hand waving.
- CuriouslyC 10mo agoYou can run a VM using trusted computing extensions for the game. If the VM encrypts traffic, that stops network level cheats. You can still fake inputs/outputs to the machine if you put the work in, but then you can also use a vision model and faked input with actual consoles, so that hole is never going to get patched.
- mcv 10mo agoReliable anticheat is serverside. Clientside anticheat sounds like a fool's errand to me. You need to control the client, so that means the user cannot be in control of their own computer, which is contrary to the idea of Linux.
- kimos 10mo agoIt works on Windows by essentially rooting the machine. MS holds control of a bunch of stuff because they hold the signing keys. It’s fundamentally incompatible with open source.
- tete 10mo agoAnd it still doesn't prevent cheating.
- SirMaster 10mo agoNo, but it seems to vastly reduce it. Compare VAC2 to FACEIT on CS2 for example.
- vablings 10mo agoComparing VAC2 (released in 2005) to FACEIT in 2025 is pretty dumb. There are still absolutely cheaters running rampant on FACEIT and FPL. The real solution is to limit information sent to the client, make it harder for cheaters to have reliable solutions to get access to critical game information. ARC Raiders has Theia anti tamper (very poor performance) but right now the number of cheaters is minimal because the select few who are smart enough to break the anti-tamper are keeping quiet. See other examples; The Finals, Roblox (Byfron) and Overwatch https://codedefender.io/sigbreaker/ https://codedefender.io/sigbreaker/
- embedding-shape 10mo ago> It’s fundamentally incompatible with open source Yeah, I mean why would they open source their anti-cheats, would defeat the purpose, wouldn't it? Not sure why you bring up OSS here, it isn't relevant in the least, plenty of non-OSS runs on Linux even though Linux and more is OSS.
- tete 10mo agoYou are looking completely wrong at this. There is no anti-cheat that cannot be bypassed. Period. You can always run things in a VM, you can always replace your keyboard and mouse with a different device, you can always have your a camera instead of human eyes and have something that recognizes enemies. Even cheat detection in the real physical world (sports, chess, etc.) is not a completely solved topic. You can connect computers to other computers so other computers will always be able to control them. The idea that any (currently realistic) cheat prevention is unbypassable is silly.
- embedding-shape 10mo ago> The idea that any (currently realistic) cheat prevention is unbypassable is silly. The idea that anti-cheats don't make sense because they don't catch 100% of the cheaters is what's silly, who believes that? Not even the people writing these anti-cheats believe catching 100% of them are possible, why are you under the assumption that others think that's possible? If it removes 80% of the cheaters from the game, the experience goes from "Holy shit lets leave" to "Ok, bothersome, but fine", this is what they're reaching for, not some fantasy utopia that you seem to be under the impression is the target.
- saghm 10mo agoI don't think the comment you're responding to is trying to claim that. They're responding to the parent comment asking if there's any way to actually make a Linux anti-cheat method that isn't bypassable and pointing out that this framing isn't really useful because there's no way to make one on any platform that's actually impossible to bypass. Their point isn't about whether it's useful or not to have imperfect anti-cheat but that there's nothing fundamental about Linux that changes the fact that the anti-cheat is going to be imperfect anywhere.
- krzyk 10mo ago> the experience goes from "Holy shit lets leave" to "Ok, bothersome, but fine", This is making those rootkit anitcheat mechanism work. If people will leave, cheaters will play only with cheaters - problem solved.
- Q6T46nT668w6i3m 10mo agoYeah. It’s an erosion of rights that doesn’t solve the problem. You only need one cheater to make a game feel bad and DMA devices or pixel tracking can’t be stopped with these anti-cheats.
- theknarf 10mo agoI mean kernel level anti-cheat doesn't really work on Windows either, its just security theater.
- surajrmal 10mo agoBased on what data do you draw that conclusion? The fact that cheaters can still exist isn't an indictment that it doesn't ever work. Have you ab tested a game with an without anti cheat?
- theknarf 10mo agoI'm sure if you ab-tested a game with anti cheat vs a game with kernel-level anti cheat you would see negligible differences. There are a lot of types of anti cheat, stuffing it in the kernel isn't the only solution. You can't chose between security and freedom, the moment you make a choice you loose both, and other people stuffing stuff in the kernel is loosing you freedom. We are moments away from one of these "kernel-level anti cheat" companies getting hacked and then you'll have the biggest security scandal on the planet (if they aren't already hacked and we just don't know about it yet).
- HALtheWise 10mo agoI did a pretty deep dive into this recently, although haven't yet started any implementation work. As far as I can tell, the best strategy that preserves Linux's open-source and user-empowering ideals as much as possible: - The game obviously needs to run as root, at least until large amounts of this stuff gets upstreamed into the kernel. - We're going to be leaving the kernel and boot as untrusted, but injecting a hypervisor underneath the running kernel that is responsible for protecting most pages of game memory. This allows users to still run whatever kernel they want. - The hypervisor sets up two sets of page tables, one that's only active when the game's thread is running and in userspace, one that hides protected pages and is active when the kernel or other threads are running. Note that game code itself needs to get decrypted into protected ram. - The TPM of the system gets involved when we jump into the hypervisor to attest that the hypervisor is actually running, and the hypervisor then provides attestations to userspace that certain memory regions are protected from kernel or other thread access. - Any syscalls will fail if they require the kernel to read or write pages that are protected. The game needs to allocate data that should be shared with the kernel into non-protected pages. - When the game is closed, we can remove the hypervisor and Linux will be back to bare metal operation. This should be unobservable to the rest of the system. This architecture preserves the ability of users to run arbitrary kernel modules, but does mean a hypothetical attacker can observe data that passes through the kernel (like draw calls/pixels). It's likely that a more complete implementation would also want some way for the hypervisor to attest to the accuracy of keyboard/mouse input and interface with iommu configuration like Windows KAC does.