-
Bug
-
Resolution: Invalid
-
None
-
1.19, 1.19.1 Release Candidate 1
-
Plausible
-
(Unassigned)
Although I don't like Microsoft/Mojang centralizing the authority on whether to ban players, if you really are going to go through with this you really need to resolve this problem before you start banning people:
- In the chat preview response packet, send an incriminating message. When the user sends their chat to the server, it does NOT sign the message they typed, instead it signs the message in the chat preview response packet. Look at: LocalPlayer.sendChat()
- After the victim has sent the message to the server, you can then report that player using the chat report feature in 1.19.1.
In most situations, you never trust the client, but in this situation, you can't trust the server especially when the server is the one telling you what to sign! There isn't even a warning at any point that tells the player that the chat preview is what will stick to them and not the original message they typed! Not to mention the fact that even if you do add such warning, not many people will think much of it.
I don't see a way this can be resolved by signing the chat preview, even if you sign both the chat preview and original message. The only way is to sign only the original message and NOT the chat preview. Even if you only sign the original message, players can still send abusive messages. Because a server can "style" a message to contain incriminating text. Perhaps a server has a text expansion feature that players can configure on their own, and a player creates a text expansion that expands some short form of something they write to an abusive message. There's really no way for a moderator team at Mojang to know what's really going on.
There are other ways to abuse the reporting feature to get someone banned. All you need is a carefully crafted scripted conversation that causes the victim to type certain messages. You don't even need control of a server to do this, it can be done on any server! Because remember, a client is the one collecting evidence and sending it to the chat report server, messages can be taken out of context and mixed in with other signed messages that make the victim's messages look incriminating, and then sent to the reporting server. You can't trust the client even though the messages are signed. You can't trust the third party server where the chat took place to certify nothing was taken out of context either, because again, those servers aren't control by you.
I can see this chat reporting feature working on Realms if the chat log is fetched directly from the Realms server itself, not from the client. But it won't work on privately run servers. It's way too easy to abuse when the server owners have full control of the server, and hacked clients can mix in out of context messages to get someone banned.
This chat reporting feature does not stop servers from grooming young children as they can easily just strip the signature when forwarding chat messages.