As far as the most recent changes go, the two patches of concern are within:
1.) Handling of additional tx public keys, and their (lack of) inclusion in a transaction.
2.) P2P protocols allowing transmission of any peer's host OS, along with other info, that collectively or separately could make memory timing attacks a lot easier.Both of these have now been patched in v0.1.9.5. Prior to this, additional transaction keys were not always included in a transaction, in all scenarios where they should have been. Now, if they are present, and the boolean need_additional_txkeys is not evaluated as true, they are included as well. This is a bit overly conservative, but we will shave the logic down to an XNOR-case in the next release.
The second fix seems to have been necessary due to what appears to be a leftover from Bytecoin. However, it was commented out in XMR's original code. That changed in XMR, 5 years ago, and the flag for
ALLOW_DEBUG_COMMANDS appears to have been set by default ever since. This is a bit of an issue, as the P2P commands involved with that flag are not secure, and give up a decent amount of information about the node's host computer
Some background on memory-timing attacks... Worth noting that these are nearly impossible to defend against, but some things make them much easier, if they are known about the host computer.
Spectre and Meltdown were two recent vulnerabilities that made use of this. Intel and AMD had to completely rethink their architecture design to mitigate.
Dan Bernstein's paper which proved these attacks' feasibility: https://cr.yp.to/antiforgery/cachetiming-20050414.pdfPrior to their removal, the conditional flag, and associated P2P pubkey:
And the associated conditional (in one place, anyway)
Why this is dangerous:That P2P_REMOTE_TRUSTED_DEBUG_PUB_KEY is the same as a known cipher text, that gets hashed by every daemon who connects and performs a handshake, prior to our latest update. Such is the case currently in XMR, and every fork of it, excluding BLUR.
Nodes on v0.1.9.5 no longer include this functionality.
The relevant function doing this can be found here:
https://github.com/blur-network/blur/commit/482631942c187d47c02d3cd42651ad87801ccebe#diff-c02157891426370c008d7076b723128cL1416 and is called proof_of_trust