Most control units have moved to RSA signatures for updates. Some very modern units use ECDSA. AES encrypted update payloads (usually keyed per model line / unit type, not entangled with per-unit identity like other systems).
Modern safety processors have TEE and HSM just like any other modern embedded processors so you see those used (often incorrectly) to store key material and run TAs to lock secured system state (ie - a TA which answers “is the system in sample or series production mode”).
Flash is usually plaintext (see safety concerns) but embedded in the SoC package so you need some kind of exploit to get to it.
VM protection and obfuscation are unlikely on safety critical systems because the risk greatly outweighs the reward. On head units outside the safety boundary I’m sure they’ll show up soon.
Lots of security theater is going on in Europe, see UN155 and UN156. Mostly this just expands the previous signature and encryption protections to more control units, but also adds a lot of theatrical nonsense like “IDS” in the vehicle.
I did a lot of research on previous generation VW stuff at
https://github.com/bri3d