Opinions: The sorry state of application security
- — 11 July, 2011 10:17
Application security is currently one of the major battlegrounds in information security. Compromised web applications are ransacked for credit card numbers, personally identifiable information and is a major vector for spreading crimeware enabling criminals to defraud our banking institutions. But the field of application security is broader than web application security alone, we must remember that every system, device, appliance and Commercial Off The Shelf (COTS) application we use in our infrastructure is only secure if the code that comprises them is written securely. Well what are some of the major issues in this challenging arena of application security?
Firstly we preach to the converted. When was the last time you saw a security professional presenting at an event attended by software developers and asking for their help in stopping the use of insecure functions or lobbying for the deprecation of them from development frameworks? The usual status quo is appsec people talking to appsec people in incestuous cabals or touting their skills to project directors and security managers to clean up after those "clueless coders" or educate them to be less clueless.
Secondly, there are many challenges with writing secure code. I've always said that good infrastructure security is just the extension of good systems administration practice. Likewise good application security is just the extension of good software engineering practice. Good code meets customer requirements (naturally security requirements should comprise some of them) and has high quality due to peer review and quality control processes.
Most security professionals can set fairly good application security requirements and even raise awareness of defensive coding principles thanks to some of the good work undertaken by groups such as OWASP, SANS, MITRE, CERT etc. However only a few elite security professionals can swap seats with a top developer, read some of their code and show them how to meet those requirements on the fly. To write good code (and hence secure code) requires extensive prior experience, skill, passion and constant use. To explain to the layperson, it’s kind of like the level of skill possessed by my costume designer friend. I watched with amazement as she designed and sewed a dress to fit my wife perfectly by sight alone in only a few minutes. When a good portion of code produced today is written by the harassed and inexperienced using cut and paste methods from ill-defined patterns it’s no wonder we get fraying T shirts rather than tailor made suits!
Thirdly, there is no market driver for the development of secure software as security is not a marketable feature due to the lack of a rating scheme to enable purchasers to identify what product is more secure than another. Only federal governments have software assurance and certification programs (e.g. Common Criteria, UK Govt’s CPA Scheme, DSD’s AISEP etc.) to enable their most security conscious agencies to procure theoretically more secure products. Only a small subset of products are certified to these schemes due to the costs involved for the vendor.
Fourthly, Universities don’t teach secure coding techniques and a defensive mindset as part of their standard software engineering syllabus and don’t seem to even want to. The CSO of Oracle (the world's largest software company according to Forbes) sent 10 or more letters to major US universities requesting that application security be taught as part of curriculum for software engineering and that Oracle would preferentially hire their students if they did. Only one was returned!
First steps in attempting to address these challenges should really start closer to home, the security industry needs to “eat its own dog food”. According to Veracode’s latest State of Software Security (SOSS) Report, 72 per cent of security applications assessed by the company were deemed 'unacceptable' on the first analysis of their code, a result that was ahead of only one sector, customer support, which failed 82 per cent of the time. It’s kind of weird that Microsoft is now one of the best success stories for an effective application security program. Why isn’t a security company leading the pack?