..spreading around bad blocks and invalid transactions
But any full node (mining, wallet node) then would reject it.
Not if those full nodes were running software that was not in line with the consensus of all of the users. Those node operators could be in consensus, but they may not be in consensus with users, so they could force Bitcoin to go in one direction and any SPV wallet users (pretty much everyone else) would have to follow or start running their own full nodes.
Anyway I don't really doubt you are correct. This has always been my assumption and part of why I run a full network node myself. However I see things like
https://twitter.com/adam3us/status/683678942398644224 and it makes me wonder (note: vps nodes worth zero), whether my assumption is flawed.
The problem with VPS nodes is that they aren't all that decentralized. With nodes in homes, it spreads out the node distribution. On the other hand, VPS nodes are hosted in data centers. If something were to happen to a data center, all of the nodes there would go out at once. This is about as useful as one node since there is essentially one point of failure for many nodes. Those nodes are also susceptible to the actual server owners taking them down.
Maybe you could point me to some more info on how the checkpoints and forking issues you mentioned. Have there been any simulations done for this, or detailed write-ups on the exploits?
No, I don't have any info on those issues. Basically if enough nodes ran a certain software that used certain checkpoints, then they could fork the blockchain and force a shorter chain to continue to grow. It would ignore the longest chain rule. Should both chains continue to survive, there could be some very problematic issues that arise, including double spends and long confirmation times. In the case of a fork, it may not be good to assume that a confirmed transaction is truly non-reversible.
On the one hand, yes it seems fairly obvious that full nodes improve security. On the other hand if everyone with a wallet is already directly connected to a full node, then it is less clear how the exploits progress.
Everyone connected to that full node with an SPV wallet is trusting that node. They are trusting that that node is giving the correct information. That one full node could, in theory, change its consensus rules and force everyone relying on it onto an alternate blockchain that that person controls and can do whatever he wants with.