There I was finding a lovely Cross Site Scripting (XSS) vulnerability in a customer site today. Complete beauty in the HTTP 404 response via the folder/script name. So I started to write that up.
I peered at the passive results from Burp Suite and noticed a distinct lack of a vulnerability I was expecting to see:
I looked at the HTTP headers and saw this peering back at me:
X-XSS-Protection: 1; mode=block
Burp was correct not to raise that issue because it detects where that very header is insecurely set or non existent.
For the uninitiated the “X-XSS-Protection” header is supposed to tell web browsers to inspect content from the HTTP request which is then present in the immediate response. It had a laudable goal to make reflected XSS a thing of the past, or at least harder to exploit.
Chrome liked it so much it defaulted to having it enabled. Even if the server didn’t bother setting it. This caused much consternation.
Stawp making the world safer Google… Jeez!
I thought ah this is my testing browser (Firefox) I must have overridden the XSS filter.
- So I try in Chrome.. *pop pop*.
- So I try in Edge.. *pop pop*.
I think I google “Is X-XSS-Protection still a thing?” and stumble across this nugget:
No. It is not a thing. Has not been a thing for a little while.
The modern approach is to ensure that you use robust Content-Security-Policy settings. The radical approach is to prevent XSS by secure coding practices which will just never ever catch on.
Security tools and scanners including: nikto, burp suite, and nessus all still pull this header out as something to be reported on. Does it have any real relevance if user-agents simply ignore it now?
It may impact older browsers. But generally when you are talking about any web browser that is old. There will be some way to completely control the victim’s computer. Logically you should only concern yourself with where the herd is running at today.
My approach is to take this out the back to put it out of its misery with a few rounds through the head(er). Then I will stuff it and mount it onto my wall next to “Password Field with autocomplete enabled”. Which is itself deprecated based on browsers also choosing to ignore it.
Time rolls on and standards change. Lets have a round of applause for good old “X-XSS-Protection”. It has been a good sport. A brilliant contender but sadly it never truly saw its potential realised because Arsenal kept buying replacement wingers. It never got any game time.