It is common to say that CORS headers protect against CSRF, so that if you visit a malicious website, it cannot make a request to your web application because the referer header (the URL of the malicious website) wouldn't be allowed by the CORS header.
But then the malicious website only needs to do a request first to a webserver that will pass the request to your website with the referer header changed.
If it is so easy to do the CSRF bypass CORS, then it's correct to say that CORS headers do nothing against CSRF. And if it does not prevent CSRF what is it useful for?