Here’s some of the things I expect to happen this year as a result of the leap year:
And then there’s the ordinary issues with dates that programmers can’t understand – like the fact that there are more than 52 weeks in a year. “ASSERT(weeknum>0 && weeknum<53);”, anyone? 52 weeks is 364 days, and every year has more days than that. [Pedantic mathematical note – maybe this somewhat offsets the “employer’s extra day” item above]
Happy Leap Day – and always remember to test your code in your head as well as in real life, to find its extreme input cases and associated behaviours. They’ll get tested anyway, but you don’t want it to be your users who find the bugs.
There are many reasons why Information Security hasn’t had as big an impact as it deserves. Some are external – lack of funding, lack of concern, poor management, distractions from valuable tasks, etc, etc.
But the ones we inflict on ourselves are probably the most irritating. They make me really cross.
We shoot ourselves in the foot by confusing our customers between Cross-Site Scripting, Cross-Site Request Forgery & Cross-Frame Scripting.
— Alun Jones (@ftp_alun) February 26, 2016
OK, “cross” is an English term for “angry”, or “irate”, but as with many other English words, it’s got a few other meanings as well.
It can mean to wrong someone, or go against them – “I can’t believe you crossed Fingers MacGee”.
It can mean to make the sign of a cross – “Did you just cross your fingers?”
It can mean a pair of items, intersecting one another – “I’m drinking at the sign of the Skull and Cross-bones”.
It can mean to breed two different subspecies into a third – “What do you get if you cross a mountaineer with a mosquito? Nothing, you can’t cross a scaler and a vector.”
Or it can mean to traverse something – “I don’t care what Darth Vader says, I always cross the road here”.
It’s this last sense that InfoSec people seem obsessed about, to the extent that every other attack seems to require it as its first word.
These are just a list of the attacks at OWASP that begin with the word “Cross”.
Yesterday I had a meeting to discuss how to address three bugs found in a scan, and I swear I spent more than half the meeting trying to ensure that the PM and the Developer in the room were both discussing the same bug. [And here, I paraphrase]
“How long will it take you to fix the Cross-Frame Scripting bug?”
“We just told you, it’s going to take a couple of days.”
“No, that was for the Cross-Site Scripting bug. I’m talking about the Cross-Frame Scripting issue.”
“Oh, that should only take a couple of days, because all we need to do is encode the contents of the field.”
“No, again, that’s the Cross-Site Scripting bug. We already discussed that.”
“I wish you’d make it clear what you’re talking about.”
Yeah, me too.
The whole point of the word “Cross” as used in the descriptions of these bugs is to indicate that someone is doing something they shouldn’t – and in that respect, it’s pretty much a completely irrelevant word, because we’re already discussing attack types.
In many of these cases, the words “Cross-Site” bring absolutely nothing to the discussion, and just make things confusing. Am I crossing a site from one page to another, or am I saying this attack occurs between sites? What if there’s no other site involved, is that still a cross-site scripting attack? [Yes, but that’s an irrelevant question, and by asking it, or thinking about asking/answering it, you’ve reduced your mental processing abilities to handle the actual issue.]
Check yourself when you utter “cross” as the first word in the description of an attack, and ask if you’re communicating something of use, or just “sounding like a proper InfoSec tool”. Consider whether there’s a better term to use.
Cross-Frame Scripting is really Click-Jacking (and yes, that doesn’t exclude clickjacking activities done by a keyboard or other non-mouse source).
Cross-Site Request Forgery is more of a Forced Action – an attacker can guess what URL would cause an action without further user input, and can cause a user to visit that URL in a hidden manner.
Cross-Site History Manipulation is more of a browser failure to protect SOP – I’m not an expert in that field, so I’ll leave it to them to figure out a non-confusing name.
Cross-Site Tracing is just getting silly – it’s Cross-Site Scripting (excuse me, HTML Injection) using the TRACE verb instead of the GET verb. If you allow TRACE, you’ve got bigger problems than XSS.
Cross-User Defacement crosses all the way into crosstalk, requiring as it does that two users be sharing the same TCP connection with no adequate delineation between them. This isn’t really common enough to need a name that gets capitalised. It’s HTTP Response-Splitting over a shared proxy with shitty user segregation.
I don’t remotely anticipate that I’ll change the names people give to these vulnerabilities in scanning tools or in pen-test reports.
But I do hope you’ll be able to use these to stop confusion in its tracks, as I did:
“Never mind cross-whatever, let’s talk about how long it’s going to take you to address the clickjacking issue.”
Here’s the TL;DR version of the web post:
Prevent or interrupt confusion by referring to bugs using the following non-confusing terms:
|Confusing||Not Confusing Much, Probably|
|Cross-Site History Manipulation||[Not common enough to name]|
|Cross-Site Tracing||TRACE is enabled|
|Cross-Site Request Forgery||Forced User Action|
|Cross-Site Scripting||HTML Injection
|Cross-User Defacement||Crappy proxy server|