Open SakuruWasTaken opened 4 months ago
i think you should try pickled coffee
In retrospect, datastore encryption wasn't a smart idea to implement in the first place; if someone or something malicious has serverside access, then your game would be done for anyway.
This is a problem, but back in the days where FilteringEnabled didn't exist, developers didn't do server side checks, and exploiters where stupid, this was a good enough solution. There is no need for encryption anymore, so this doesn't matter.
Version channel
Stable (Default)
Loader version
versions 152 to 259 (current) are affected
What part of Adonis is this related to?
Other
What happened?
Using an encrypted string from the datastore, and a known plaintext of that string, it is possible to obtain the datastore encryption key.
Example
let's we have an encrypted string from the datastore and a corresponding plaintext string:
encrypted string:
ZUTaS^abZLWSQI
plaintext:hello world aaaa
we can simply modify the encryption scheme to brute force the key, while checking if the result matches the plaintext:
the resulting output is:
omerandomkeysome
the original key was:
somerandomkey
How it could be exploited
This vulnerability could be used by an attacker with access to the datastore to obtain the key, allowing them to decrypt or edit entries in the datastore.
The plaintext string required to exploit this could be obtained by finding the user ID of someone who is known to have previously played the game, and identifying their corresponding entry in the datastore to find the encrypted user ID.
Due to this requiring datastore access, the likelyhood of this being exploited is not very large.
How this could be resolved
My recommendation is to switch to an implementation of existing encryption algorithm such as AES rather than using a custom implementation such as the current one.
Device
Windows
Relevant log output
No response