you keep skipping over alot of stuff avoiding details you dont want to see
anyways
to get an official patch(like in 2013) took 13 hours.. but nodes didnt need to wait that long. they can and did self ban certain nodes propagating dodgy blocks and then only accept blocks from the chain that was not funky..
Who "banned" these nodes, and why? What did "banning" them mean, exactly? How is a node "banned"?
ok first lets zoom into just one attack vector.. re-orging a chain of old blocks...
if a malicious pool went back say 6 blocks and then had 60% of network would still require ~55 blocks to catch up and get ahead of the honest network to even be able to sway the network to change its history.. but here is the thing
core nodes have a "banman" (ban manager) that looks at the changetips and header data and would reject blocks that dont match its history and then give the nodes sending such blocks a score whereby if the persistence of sending dodgy blocks continues to uprate the score then the node will ban the peer sending it
the node would also ignore/drop/reject/stale/orphan/evict the block(s) in question
if you spent some time looking at these things you will see that there are many mitigating factors involved that stop a malicious/misbehaving actor from sending data that does not correspond to the honest chain
my personal node for instance checks the block hash Id (and the 'chainwork' and othe things) of the current chain and if a new block appears with a new height. but its previous block hash does no match the one i have, nor does its previous or its previous for 6 blocks.. then my node just treats it as misbehaving and rejects it if the ancestry does not match within 6 block heights
thus my node sticks to the 6 confirm rule and not allow a chain re-org older than 6 confirms
thus if a malicious actor who did try to go back 6 blocks to its previous.. and then tried to catch up.. meaning it had a new chain of 55 blocks of different hashes compared to the honest chain i follow. it has no chance
it cant simply just go back one block edit it and then broadcast the edited block. as the honest network is already ~2 blocks ahead of the malicious pool, so the malicious pools broadcast would just get rejected as a lower height with a non matching block hash..
it would need to add more blocks and catch up overtake the honest network blockheight to have a height bigger then the honest network to even get a chance to be seen.
if a mining pool went one block back to edit one confirmed block.. and with a 60% of network hashrate, it might get to overtake and re-org the network within 10 blocks catchup time.. at very best 5 block catch up time.. thus only affect 6 blocks that get re-orged (5 after the rewind and 1 of the historic change)
if it managed to overtake and get its blockchain of edited blocks accepted, those transactions of the honest chain of parallel height blocks(6) just change from confirmed to unconfirmed and get put back in mempool to be rebroadcast again.. which the malicious pool can decide to just not put into blocks again and leave the network congested whilst the malicious pool "empty blocks"
however at the very minute that it broadcast the blockheight that overtakes the honest chain to make the honest chain drop its own 6 blocks.. the nodes create a log alert that its dropping blocks to then pursue the new version of 6 blocks thus unconfirming transactions back into mempool.. so people would react and notice.. and just affects transactions of upto 6 confirms
economic nodes as already said would and do have configured nodes to know which of its cex platform user accounts database is credited with balance from which utxo was spent and if there was a doublespend they would halt that cex account spending habits within its platform
other services also 'taint' certain utxos deemed unconfirmed again and if the tx is not spend in the same tx manner as the first time to purely re-confirm it again and instead the tx has been altered and replaced by the key holder those analysis services would flag it too
..
but lets concentrate on the nodes themselves.
as hinted at already, each block has a block id of its block and within that block it also has the Id of the previous block.. there are a set of rules in ban manager that can be set to reject blocks where they dont match the set the network already obtained
so not only is a malicious pool limited in how far back it can go due to it requiring more power or time to catch up and overtake.. but also nodes can treat blocks as misbehaving if their block ID's dont match the nodes own ancestry of id's at a certain depth
(there are more mitigating factors but lets atleast get you passed these little spoons first)