But that doesn't make ATM's or the blockchain any less useful. The technology is still sound in both cases. But anything built by humans (I suppose machines too?) has the potential to be flawed, especially software.
There is a difference between an ATM and blockchain app though.
If an ATM spits out too much money and that violates the terms of service you signed with the bank (or the ATM provider) the bank has a way to recover the funds since they can rely on the legal system to enforce the terms.
The blockchain exists to enforce the validity of state changes (transactions). There is no other value outside of that.
Thus, if you are reliant on the legal system to enforce blockchain contracts there is no reason to have a contract on the blockchain since the only real benefit is decentralized consensus. You are better off just rolling a few EC2 instances and writing an old fashioned contract.