You can arbitrarily re-write history in PoS with <50%; I can produce a valid candidate chain longer than the canonical chain for a constant cost, which I then present to nodes which are syncing with the network who are unable to distinguish this objectively from the canonical chain.
edit: Since the cost of providing such information is very small, I can dominate the network with peers containing instances of my fake chain such that any syncing node querying peers at random would find a majority of my fake nodes.
Can you elaborate on how you can do that ?
You can tell how much stake is used in creating a POS chain.
If you have less than 50% of the total coins, but more than 50% of the staking coins (the ones used for mining), ok. Rewrite away.
If you have less than 50% of the staking coins, then how is your chain going to show it is more valid than a chain that has more POS stake involved ?
Also, any node that has
already connected to the network, can distinguish an attack chain, by checking for a block hash checkpoint, that it knows from previous connections to the network. Even if the attacker has more than 50% of the staking coins.
This attack would apply to those who have never connected before. And in that case, some checks would be required.
The simplest check, ask someone who is connected to the network already.
If you have never connected before, and don't know anyone who is on the network, then it's more complicated..
(although you could say that downloading the software is a risk in itself - is it legit or hacked, and any legit version would include some checkpoints)
..
POS has it's pros and cons, for sure.