ACIDRain attack paper by Todd Warszawski, Peter Bailis.
A high-level overview blogpost on this paper.
Many applications were found to be vulnerable to this, eg. WooCommerce, Opencart.
There are two types of anomaly that ACIDRain attacks could trigger, dependent on the application involved:
- Level-based isolation anomalies, which are races due to isolation settings at the database-level i.e. the database may not support serializability, or may not have been configured to do so (this is the case for most deployed databases in the wild).
- Scoping isolation anomalies, which occur when an application programmer fails to correctly encapsulate logic using transactions. This enables concurrent requests to impact behavior that could not have arisen sequentially.
It sounds like both can be solved by enforcing Serializable isolation level for transactions. Is it correct?
Also, some database doesn't have real Serializable isolation level, for example Oracle. What can be done to protect them from this type of attack?