In practice there's no good defence against this, but Windows is designed to protect itself against these kinds of attacks if all components work together. With secure boot + driver signature validation + DLL signature validation, you can't just run any code by putting it in a DLL file. You're not hacking any normal computer by replacing user32.dll with virus.dll.
Downgrade protection is quite a hard problem to solve without at least breaking the automatic recovery tools. In theory Microsoft could register the versions of every system file somewhere, sign+hash that, and store it some place secure, but then they'd need to deal with reverts of system components after a failed update or restored system images becoming unbootable.
In practice, I don't see the use case for this attack, though. You can just put a legitimate, signed driver with a known exploit inside your executable and load that. Microsoft chooses to keep unpatched, vulnerable drivers rather than break hardware support for millions of users.