I read that LUKS uses 256-bit AES with CBC by default. CBC, of course, has the disadvantages that if you change something in the plain text, you have to change everything that comes after it. In the case of hard drive encryption, that's usually at least a few hundred GB, often several TB. You don't want to rewrite several TB every time a word in a text file is changed, obviously.
I then read that LUKS solves this problem by only using CBC within small blocks (e.g. 512 Byte) which it encrypts independently from each other. Apart from having other problems, how does this not introduce the problems of ECB? Namely being structure-preserving and semantically malleable?
Is a new initialization vector chosen for each of those ~512 Byte blocks so these problems don't occur? If so: How is it chosen?
Why doesn't LUKS use CTR?