Demanding Secure Developers
Much like many other companies these days, National Instruments hires many of our developers straight out of school. Many times when engaging with these new hire developers, I will ask them what kind of security they learned at their university. In almost all cases I’ve found that the answer hasn’t changed since I graduated back in 2002. Occassionally I’ll get a developer who mentions one particular professor or class where they discussed secure coding practices, but most of the time the answer is “I didn’t learn security in school”. This absolutely kills me. It’s like asking an architect to design a building without them knowing anything about support structures and load distribution. The end result may look awesome on the outside, but the slightest breeze will knock it over. With computers being embedded into literally every aspect of our society, do you really want code that crumbles the moment a user does something other than what was explicitly intended?
This leads me to the conclusion that security should be considered a fundamental part of code development and not an afterthought. We should be teaching security to students at a University level so that when they graduate, corporations don’t spend valuable time re-training them on proper development techniques. I’ve heard rumors of large companies like Oracle actually being able to impact college curriculum by telling universities they simply won’t hire developers without security training. Unfortunately, most companies aren’t in a position to make demands like that, but it certainly wouldn’t hurt to develop relationships with faculty at your local university and tell them what you’d like to see out of their students. I did some poking around on the internet and it seems like some professors are already starting to get the memo. For example, I found a great paper written by three professors at the USAF Academy Dept. of Computer Science called Incorporating Security Issues Throughout The Computer Science Curriculum where they say:
While the general public is becoming more aware of security issues, what are our universities doing to produce graduates ready to address our security needs? Computer science as a discipline has matured to the point that students are regularly in tructed in software engineering principles–they learn the importance of life cycle issues in the development and maintenance of software. Where are they receiving similar instruction on security concerns in the software life cycle? The authors propose that security should be taught throughout every computer science curriculum–that security should always be a concern and should be considered in the development of all software just as structured programming and documentation are.
Gentlemen, I couldn’t agree more. Security needs to be a foundational piece of every Computer Science program in the country. Not one class. Not one professor. Secure programming techniques need to be a consideration in every CS class in every university. Universities teach students how to write functions, create object-oriented code, and do proper documentation, but when graduates don’t know the basic tenets of input validation, then we have a real problem. If you agree with me, then I challenge you to write to the Dean of your local CS program and ask them what they are doing to ensure graduates are familiar with secure coding practices. I’d be very interested in hearing back from you as to what their response was.
April 26th, 2011 at 11:34 pm
While I agree with you in principle, in practice I feel like there’s higher level topics that should be covered in school and that security is one of a number of things that flow out of that. For example, the concept of defensive programming while critical to a security mindset is rooted in developing a rigor to the allowable inputs and expected outputs of your application and, something akin to invariant based programming. While I did take the computer security course while I was in college, I can say without a doubt that I learned more about good secure coding practices from a number of other courses and campus lectures than I did in that wholes semester of “Computer Security.”