So yeah, I want to discuss or point out why I think Valve needs to fix Anti-Cheat issues. They have VAC but apparently its doing jackshit, be it Counter Strike 2 (any previous iterations) or something like Hunt: Showdown the prevalence of cheating players is non deniable. For me personally it has come to a point that I am not enjoying playing those games anymore, although they are great games by itself. But the amount of occurrences being killed or playing against cheaters is at a height, where I don’t see the point anymore.
- Why I think Valve is the only company able to something against cheaters?
Because they have the tools with VAC already aiming to prevent cheaters. Valve has got the resources to actually invest into something more profound which could be used for any game where anti-cheat protection needs to be implemented. And lastly Valve is the company which is interested in furthering the ability to gaming on Linux, the anti-cheat solution needs to work on both operating systems. Only Valve has the motivation and means to achieve that with their knowledge and resources. What do you guys think about the topic? Is the fight against cheaters hopeless? Do you think some other entity should provide anti-cheat protection, why? I skimmed over “anti cheat in linux kernel” posts in the net, but I have very little knowledge about the topic, what is your stance on it?
Edited: Mixed EAC with VAC. EAC seems to be part of Epic Company. Both of these tools seem unable to prevent cheating like mentioned above.
Screw client side anti-cheat, fix your goddamn server code.
I’m reminded of a case in Apex Legends where cheaters started dual wielding pistols, despite dual wielding not actually being a game mechanic. That should be something you can easily detect on your server and block.
Client side anticheat is just smoke and mirrors and lets developers think they can get away with not doing their job of writing secure code.
I’m honestly surprised that with all this concern about privacy against Google, Microsoft, Epic, and so on, gamers are willing to just let these games have unrestricted and unchecked access to all your internet, microphone and camera data.
Likewise, despite how much gamers call games “broken glitchy messes”, they are perfectly willing to give them enough hardware access to literally destroy your computer.
Yeah, I agree with that. Installing freaking rootkits on people’s personal device, with the express purpose of identifying them and knowing what their machine contains, is not OK. A multiplayer client should be as lightweight as possible and shouldn’t be able to fuck with a game.
Even if they agree not using your data for anything else, the next security breach on their servers will make that promise useless.
And I am not sure why one would trust big publishers to have any kind of ethics anyway. Do you remember Activision’s patent to manipulate matchmaking? That would specifically match players to reward those who buy microtransactions and create pressure on those who don’t?
Yeah, totally trusting those manipulative snakes with my private data with a big “do not watch” sticker on it.
If Valve is gonna do anything, I’d rather have them sandbox games from screwing with the environment, not the opposite. I’d like to be able to install random mods from Steam Workshop without worrying about whether some random modder might have malware attached to their mod that can compromise the whole system. I don’t care if a malicious mod dicks up the save games for a particular game, but I’d rather know that it cannot go beyond that.
That doesn’t solve the cheating problem, of course, but it’s a case where anti-cheating efforts and security concerns are kind of at odds.
That actually sounds like a good way to do this. Not sure how practical it is.
Hear, hear.
Quick disclaimer, I’ve been involved with FOSS shooters for something like 20 years now. I mention that to establish where I come from: in a FOSS game anybody can modify the game client all they want, so all the bullshit is out of the way from the start. You can’t hide behind make-believe notions such as “they can’t modify the client” – which is one of the major lies and fallacies of commercial close-source games. If there’s something you don’t want the client to know or do, you make it so on the server.
There is a lot of things that the server can do that can severely limit cheater shenanigans. If you don’t want them to see through walls then don’t tell them what’s behind walls. If you don’t want them to know what’s behind them then don’t tell them what’s outside their cone of view. If you don’t want them to teleport look where they were a moment ago and where they claim to be now and figure out if it should be possible. You get the idea.
Aimbots can be detected because at the core it’s a simple issue of the client’s aim snapping from one place to the target too fast. What’s “too fast” and the pattern of the movement can be up for debate but it can definitely be detected and analysed and reviewed in many ways – regular code, AI, and human replay.
If this kind of analysis is too much for your server to perform in real time (it was too much, 20 years ago) then you can store it and analyse it offline or replay it for human reviewers. You can fast-parse game data for telltale signs, analyse specific episodes in detail, and decide to ban players. Yes it happens after the game was ruined but at least it happens.
There are a couple of types of cheating that you can’t detect server side:
Some of the most fun games I’ve seen did not care about HUD mods and macros and on the contrary embraced them. You want to write a macro that will auto-purchase the best gear based on your available coin after respawn? Knock yourself out, because what constitutes “best” gear changes depending of the circumstances, and a veteran with a pistol can smoke your ass anyway if you don’t know how to properly use that fancy plasma gun.
I’ve mentioned human review above which brings up an interesting feature that I don’t see implemented in enough games: saving and replaying game metadata. It’s stupidly simple to store everything that happened during a match on the server side and it doesn’t take much space. You can offer that recording to seasoned players to replay on their PC which allows them to see the match from any player’s point of view. An experienced veteran can notice all kinds of shenanigans this way – and it’s also an excellent e-sport and machinima feature that enables commentary, editing, tutorials and so on.
Edit: Oh, forgot one thing. You may be wondering, then why don’t the big game companies do all this? Simple, cost. Why should they pay for server juice and staff to review games properly when they can slap a rootkit on your computer and use your resources?
Sometimes, just for practical performance reasons, with realtime games, the client is gonna need access to data that would permit one to cheat. You can’t do some game genres very well while keeping things on the server.
Consoles solve this by not letting you modify your computer. I think that if someone is set on playing a competitive game, that’s probably the best route, as unenthusiastic as I am about closed systems. The console is just better-aimed at providing a level playing field. Same hardware, same performance, same input devices, can’t modify the environment.
'Course, with single player games, all that goes out the window. If I want to modify the game however I want, I should be able to do so, as it doesn’t hurt anyone else. I should be able to have macros or run an FPS in wireframe mode or whatever.
For PC competitive multiplayer, in theory, you could have some kind of trusted component for PCs (a “gaming card” or something) that has some memory and compute capability and stores the stuff that the host can’t see. The host could put information that the untrusted code running on the host can’t see on the card. It also lets anti-cheat code run on the card in a trusted environment with high-bandwidth and low-latency access to the host, so you can get, for example, mouse motion data at the host sampling rate for analysis. That’d be a partial solution.
Sure, it’d be a solution for five minutes until someone delids the secure enclave on the gaming card, extracts the keys, and builds their own open source hw alternative.
High-performance FPGAs are actually relatively cheap if you take apart broken elgato/bmd capture cards, just a pain in the butt to reball and solder them. But possibly the cheapest way to be able to emulate any chip you could want.
Not a problem. You can potentially go for an attack on hardware, maybe recover a key, but you have a unique key tied to it. Now the attacker has a key for a single trusted computer. He can’t distribute it with an open-source FPGA design and have other users use that key, or it’ll be obvious to the server that many users have the key. They blacklist the key.
It’s because hardware is a pain to attack that consoles don’t have the cheating issues that PCs do.
Server side anti cheat can’t distinguish good players from aimbots. There are plenty of cheats that are clear bugs (like the dual wielding issue) but there will always be client side tricks that ruin games. You can prevent some of it by exchanging minimal data, but that will cause problems like “you got shot by a player that your computer doesn’t even know about”. It also requires simulating a range of permissible player movements on the server for every single player, which would ruin server performance compared to an efficient server that just relays data and enforces basic correctness.
I’m no fan of the spyware that comes with modern games, but it’s the only way to prevent cheaters ruining everybody else’s games. Cheaters ruined online gaming and I’m not sure it we can ever to back.
However, I would like games to come with servers again so you can play games on your own terms (with anticheat disabled if necessary), but for online matchmaking I don’t think we can go without spyware anymore. Let people host their own servers and deal with cheaters their own way, and let the masses who don’t want to bother with all that use whatever anticheat you deem fit.
Neither can a rootkit, which should be unconditionally illegal and send CEOs to jail for putting in their product. There are no exceptions and no scenarios where it can possibly be acceptable for a video game to access any operating system anywhere near that level. Every individual case should constitute felony hacking, with no possibility of “user consent” being a defense even if they do actually clearly and explicitly ask for “permission”.
deleted by creator
Ehhhh.
If you want that, I kind of feel like the obligation should be placed on the OS (or maybe Steam or similar distribution platforms) to do sandboxing. Generally-speaking, in the computer security world, you’re better off just not letting software do something objectionable than trying to track down everyone who does it and have the judicial side handle things.
Mobile OSes and game console OSes already sandbox games that way.
PCs could have the ability to do that, but they don’t do that today.
I do think that they’re heading in that direction, though, at least relative to where they were, say, 30 years ago; at that point in time, permission tended to be really at a user level, and if you ran software on your computer, it pretty much had access to anything that the user did. Web browser are generally available and act as a sandbox for some lightweight sandbox. On Linux, Wayland’s a move towards handling isolation of apps at the desktop level – for a long time, desktop APIs really didn’t permit for isolation of one graphical program from another. Also on Linux, Flatpak and the like are aimed at distributing isolated graphical applications.
If you don’t physically control the hardware, it is not secure.
The only valid approach to preventing cheating that matters is to have authoritative servers. Nothing else works, nothing else theoretically can work, and nothing else can possibly be described as anything but malware. There is literally no possible scenario where any entertainment company knowing anything about what else is happening on your computer can be justified.
My above comment isn’t about preventing cheating, but preventing malware, like mods with a malicious payload.
I’m not smart enough to see a world where Linux and effective client side anti-cheat can cohabitate. Nothing can ever stop someone running a custom linux kernel that hides any nefarious code from the games they’re targeting. PC gaming can only head that direction to the degree that they take kernel-level control away from the user.
When it comes to windows, the devs working on kernel-level anti-cheat systems are working closely with microsoft on the implementation. To the point that, if you were to try to reverse engineer it on your own machine, in all likelihood msft could convince a court that you are hacking their system, not the other way around.
I’ve been thinking about this, and I wonder how accurate this is. I think overuse of all this modern AI nonsense is a problem, but wonder if this might be a good use case for it.
A big game will probably have huge amounts of training data for both cheaters and non cheaters. An AI could probably pick up on small things like favouring the exact centre of the head or tracking through walls.
If a user has a few reports of aimbotting, just have this AI follow them for a bit and make a judgement.
It’ll get it wrong sometimes, but that’s why you also implement a whole appeals process with actual humans. Besides, client side anticheat systems also have a nasty habit of mistakenly banning people for having specific hardware/software configs.
Please! Not just for anticheat reasons, but also for mods and keeping the game playable when the publishers decide it isn’t profitable.
deleted by creator
I’m a Linux gamer, every few weeks there’s a story in the news about how some random update to anti-cheat ending up banning Linux/Steam Deck users, it’s not a problem unique to AI. AI finding false positives will happen, but that’s where the “human in the loop” appeals process happens.
This is the kind of cool things that they should be doing! Try new and interesting things instead of trying to brute force anti-cheat by putting restrictions on what people can do with their computers and forcing a narrative where cheaters only exist because you weren’t strict enough.
The problem is that having an essential component of the game run on servers that only the publisher has access to is also a pretty effective way to do DRM, so they’ve got a pretty strong incentive not to do that. It’s a lot easier to ensure that someone paid for an account on publisher-run servers than that someone paid for a copy of the server and client binaries that they are in possession of.
I made an anti-cheat for vanilla minecraft once, it’s REALLY easy to tell if someone is cheating it’s just developers are grotesquely incompetent when it comes to detecting that sort of thing or (more often) just don’t give a shit. They’ll just create a naïve solution then never test it. For example: minecraft’s god awful anti-fly and anti-speedhack which is just “is the player in the air for 5 seconds” or “did the player go too fast” which is notorious for false positives and doesn’t even stop people trying to cheat, just punishes players for its own fuck-ups.
It really is as simple as creating a model of what the player should be able to do, and then nudging clients towards that expected play. Normal players will not even notice (or will be pleased when it fixs a desync) but cheaters will get ENRAGED and try to cheat harder before eventually giving up. The point of a good anticheat is not to punish players for cheating, but to make it easier and more fun to play within the rules.
It’s like piracy: We had years of systems built on punishment and all they do is create resentment and people trying to break your system, but you build a system on rehabilitation and you become one of the biggest platforms for PC gaming with people willingly downloading it.
deleted by creator
And yet people did. I only brought that up as an example because minecraft is like 90% client side, proving that server-sided AC is possible.
In case of CS2, it doesn’t even ban people who teleport behind you at the first second of the round. Or killing everyone through the whole map like here (Reddit): link
deleted by creator
How do you propose to hinder aimbots and the like from working with server-side changes?
how do you stop it on client side? I’m not sure if it has been deployed into the wild but these days computer vision is good enough to just work off the images. Capture image signal, fake usb mouse outputting movements calculated from image data. If this isn’t already available it’s only held back by the need for extra hardware.
I described a plan here: https://pawb.social/comment/4536772
Not perfect, but neither are rootkits.
Why do you call anti-cheat software rootkits? Rootkits are malicious.
It’s software I don’t want running on my system and the kernel mode stuff has full hardware access.
Yes. It’s a matter of knowing what you trust on your pc and understanding your threat model. Programs running in user mode can also be malicious.
Inexhaustive of things that kernel mode code can do that unprivileged (without “root”) user mode cannot:
And so on. The question you should be asking isn’t “are they going to do this?” but instead “why are they even asking for this permission in the first place?”.
A game where you run around pretending to be a space marine doesn’t need low level access to your hardware.
I’d argue that any software that is adversarial towards the user/computer owner, and takes actions specifically to hinder an action by them, on their own machine, is malicious.
We’d be absolutely apoplectic if the government demanded we install a surveillance tool on our laptops in order to e.g. access the DMV website or file our taxes, but when someone tells us to in order to play a game, it’s okay? Nah.
What makes you think that anything client-side will be allowed to work as it should?
I don’t. Anything on the client can be tampered with. It’s the server’s job to make sure anything they receive is both valid and consistent with how a human would act.
I mean AI sounds like a legit idea. In the past e.g. battle.net from Blizzard was also just looking for “patterns”. And AI could be much better at that. The question is, how do you get the required information without having any clientside info? To distinguish between a good player and a bot would be very very time consuming to train an AI on that level.
All you really need is where the character is looking, their location and the terrain map, all of which are things the server has authority over or can check easily.
Distinguishing between a good player and a bot probably won’t be that hard. A simple aimbot would probably fire exactly at a target’s (0, 0) coordinate, while a good player may be a frame or two early or late. Someone with wallhacks will behave differently if they know someone is around a corner. There’s almost certainly going to be small “tricks” like that that an AI can pick up on.
We went through this in RuneScape with auto miners. You just randomise locations and times slightly and it’s almost impossible to tell the difference.
It’s so easy to get around.
Depends on whether people working on cheats can see the anti-cheat detection code. It’s hard to ensure that one data set is statistically-identical to another data set.
I remember at one point, reading about use of Benford’s law, that the IRS looked at leading digits on tax forms. On legit tax data, “1” is a more-common leading digit.
Recently, Russia had a vote in which there was vote fraud, where some statisticians highlighted it in a really clear way – you had visible lines in the data in voting districts at 5% increments, because voting districts had been required to have a certain level of votes for a given party, and had stuffed ballot boxes to that level.
If I can see the cheat-detection code, then, yeah, it’s not going to be hard to come up with some mechanism that defeats it. But if I can’t – and especially if that cheat-detection code delays or randomly doesn’t fire – it may be very hard for me to come up with data that passes its tests.
bots are way more elaborate than that, even 20 years ago there were randomization patterns.
Unless the aimbot is using its own AI learning system, it’ll not behave as a human would. For example, it might fire at a random point in a circle, where a human might have better aim along the horizontal axis or something.
Bots can be updated to, its the same game with hacks and exploits, it just depends on the resources available at each side.
How would a server-only method detect esp or wallhacks, which are generally speaking client-only exploits?
People with wallhacks will deliberately move their crosshairs over people that they see through walls. Or, if they know the server is watching for that, they’ll make a subconscious effort to never have their crosshairs over someone through walls.
I just started apex two month ago and i think i haven’t encountered more than one cheater, but i wasn’t really sure. I watched a video on cheaters on apex yesterday and ooof, it’s really bad. In other games i played they would use aimbot and or walls. But not speedhacking, dual wielding, aimbot and quickshielding and what not. And apparently nothing really ever happens to them.