Software development is not easy. In fact, I don’t think I’ve ever really seen a job with more conflicting priorities.
On one hand developers are asked to churn out endless code releases and deal with continuously shifting requirements of what feels like an impossible race. During crunch times they’re asked to work hundreds of hours to meet insane deadlines, skip holidays and ignore families. On the other hand, they’re expected to explain to the business why a piece of functionality is taking so long to develop and why testing its functionality can take just as much time.
Developers are pulled in a million different directions and they are always asked to deliver more than before.
I have not worked as a developer. That said, I’ve worked alongside them and been present during a lot of these kinds of discussions. I can’t help but empathise with them, their problem solving and hard work ethic so often goes unsung.
So it comes as no surprise to me when information security professionals conflict with developers grappling with application security. “When will they get it?” the security pros cry.
I am often bemused when consultants talk about application security awareness training for developers and testers. Have they ever tried training the developers themselves? Have they ever stopped to ask developers why they didn’t validate certain inputs? Not likely. If they did ask, they might have received a response along the lines of “Umm. I dunno what I was thinking. It was one AM and I hadn’t slept for two days at the time I wrote that. Sorry bro.” If, as a security professional, you were a developer in another life, then you are a rare breed. I’m sure you would never need to ask that question. You’d understand.
Application security does not exist in a vacuum and for developers, it is just one of many competing (and in some cases, seemingly conflicting) requirements that are expected to be addressed. Security controls should always be seamless and transparent, and in the case of developers, their work should be no exception. Frameworks like ASP.NET come with a number of attributes which can be readily adopted by developers to support security with minimal fuss, such as Anti-XSS library, features to prevent Cross Site Request Forgery and robust session management controls.
Our job as security professionals is to make developers jobs easier, and by extension, our own as well. Try to understand the languages and frameworks your developers are working with. Tell them what libraries they can use which contain the desired security functionality. If these libraries resolve specific problems, that means less code they have to write and a reduced likelihood that they’ll get it wrong. The Open Web Application Security Project (OWASP)’s ESAPI Project is a prime example of providing a consistent toolset for all languages.
Once you prove you can help them save time in development and prove that security doesn’t have to be a huge problem, then they’ll invariably be grateful – and perhaps they’ll also start getting it.