I'd go for 'break'.
I think the distinction is quite subtle, but 'violate' tends to refer to going against a particular principle, agreement, set of terms, ordinance, or whatever. You violate something in particular, such as in the violation of a specific law. A person, or their privacy, can also be violated.
Meanwhile, 'break the law' is a standard and very common B2-level set phrase, referring in general terms to anything which contravenes the law of a sovereign state. My guess is that the author was trying to test collocations and that 'break the law' was what she had in mind.
In this question, 'violate' is a really bad option for several reasons. As you've already realised, it isn't wrong. It's also not appropriate vocabulary to test at B2 level. It also stands out as being more formal than the others. If I had written this question, I'd have chosen verbs which are more in parallel, for example break/crash/tear. Ms Evans has 'violated' several basic principles of how to write a good multiple-choice question.
You're soon going to be an expert on badly written English tests,aren't you? ;)