Re: The principles of secure development
Date: April 24, 2009 02:58PM
PMO, compliance, internal audit, and executives all want the same thing for risk management: to identify risks and get proper security classifications around them.
developers don't matter; they just naturally make mistakes. the best way to train them is to demo the exploits before they start coding, or better -- iteratively (so that they know what to think about). the best way to help them is with boundary objects -- http://blogs.msdn.com/sdl/archive/2009/03/19/why-the-new-sdl-threat-modeling-approach-works.aspx
a good boundary besides DFD review could be secure code review
http://www.owasp.org/index.php/Man_vs._Code
although i would argue that there are many others, but vary from project to project (defect tracking systems are fairly universal though). i am a fan of continuous integration, but i don't think you need a build server or complex repo setup to do CI extremely cost/resource-effectively.
modern platforms have a rich set of security protections in the base-class libraries. however, third-party components are very popular and often not only contain security vulnerabilities, but also introduce new classes of software weaknesses. i think it would be helpful to show developers where operators can add value and where they can't -- operators can protect against XSS, CSRF, HRS, PT, PRL after-the-fact, but operators can't really protect against Auth[N|Z], SQLi, or domain logic problems using blacklist-whitelist technology or hardened application configurations.
there's a few missing pieces in the common platforms (JEE, C# ASP.NET); moreso for Struts/Struts2/JSTL/JSF/Hibernate/Spring than for ASP.NET 3.x+. ASP.NET can easily fix encoding issues by using the Anti-XSS library, but JEE requires tons of work as it only includes URL encoding out-of-the-box (although OWASP ESAPI can do wonders to a JEE project). JEE has a few other issues such as leakage of business tier unhandled exceptions into the client-tier (which would rarely ever happen in modern ASP.NET and IIS scenarios). JEE can be super bad at transforms (XSLT, XPath, enveloped signature), and neither ASP.NET or JEE includes XML encoding. also missing is LDAP parameterizations, and JEE even misses syscall and XPath.
it's simple for operators to run through the CIS benchmarks and SANS SCORE checklists ... but most can't even seem to implement SSL/TLS correctly and remember to upkeep their certs. i say that people like securityninja should be helping out operators, not developers -- and people like neuroo should be helping out developers and not operators. we need both to be working on these problems and there is still much to teach and learn.