Of course. If you can run code as the user, then solutions intended to protect against arbitrary memory
read bugs don't apply.
That doesn't mean that the solution is worthless. It simply means that it doesn't cover an unrelated class of bugs.
Migrated to hardware-based tokens, or Intel SGX-protected software tokens, would extend the solution to cover the case of arbitrary code execution. That doesn't eliminate the value of the software-only solution.