Are You a Builder or a Breaker

I am reading Brain Rules; great book! In the opening chapter there is a wonderful quotation from an interview with Frank Lloyd-Wright that resonates with how I feel about the application security industry.

“When I walk into St. Patrick’s cathedral here in New York City, I am enveloped with a feeling of reverence”, said Mike Wallace.

“Sure it isn’t an inferiority complex?”.

“Just because the building is big and you are small, you mean?”

“Yes.”

“I think not.”

“I hope not.”

“You feel nothing when you go into St. Patrick’s?”

“Regret”, Wright said without a pause, “because it isn’t the thing that represents the spirit of independence and the sovereignty of the individual which I feel should be represented in our edifices devoted to culture.”

 

falling water frank loyd wright It’s certainly no secret among my friends that for past several years I have grown increasingly disillusioned with the information security industry and especially disillusioned with the application security industry (whatever that really is).  Why? I will get onto the information security part where fluffy compliance and best practice culture  seems to be gaining acceptance in future posts (probably after a few glasses of wine) but if we take the application security industry specifically then I personally find it is disappointing that after a decade of it being considered a discipline in it’s own right, it is still predominantly made up of breakers and not builders. It’s still predominantly made up of an army of skilled hackers focused on better ways to break systems apart and find new ways to exploit vulnerabilities than “security architects” who are designing secure components, protocols and ultimately secure systems. If you don’t believe me go have a conversation with a  so called application security  consultant about SAML or security issues in Enterprise Message Buses and you’ll almost definitely draw blank stares. Ask application security consultants if they know about the latest HTTP or HTML spec and they’ll likely say yes (and want to demonstrate the latest issues) but if you ask them about the latest WS-x spec you’ll likely draw more blank stares.  When was the last time you saw an attack drawn out as a UML sequence diagram? This is worrying and somewhat sad. I don’t think we are culturing, encouraging and nurturing people with the right skills to make a positive difference.  We need more computer scientists, engineers, designers, architects and builders and less breakers in my humble opinion.

Don’t get me wrong, I get and buy the fact that you can learn about how to protect systems by learning how to break them but this is not my point. If the application security industry is to be taken seriously by the mainstream development community (and by taken seriously I mean engage with them as a partner and not as a PITA) then it has to engage in complimentary activity; the design of secure systems. We have to stop enumerating badness and slinging mud and start adding positive value.

If we think about a typical development team we have;

  • Product / Program Managers
  • Architects
  • Developers
  • Testers

Today application security seems more closely aligned to testing than architecture or development and this needs to change. Designing secure software and systems is clearly not as trendy as showing clever parlor tricks to hack a system but there is room for both.

These days I much prefer to attend and speak at development conferences than security ones, even if it’s on security topics. I find that the people are positive and focused on the right things and I think are in general better equipped and motivated to make a real difference to the cause of insecure software. To illustrate this I just got back from TechEd New Zealand and Australia. If you look at the speaking tracks (including the security track) you will find talks on .NET 3.5 security features (CAS etc), Zermatt (our new claims based identity and token framework) and similar topics . Contrast this with popular security conferences and you will see that the security industry continues to enumerate badness.

Take for instance the upcoming OWASP conference in NYC.  I love OWASP, brilliant stuff but it’s almost all attacks based. Even a talk entitled “Web Application Security Roadmap” looks like its about more testing and more enumeration of badness.

Web App Sec Roadmap

Loads of talks about injection attacks, not a single one on WS standards or SAML or ………

The great divide between the builders and breakers seems to be widening. I think we need more builders.

 1146b

PS: Ironically this blog post was crafted sat outside a cafe at the Rocks in Sydney underneath the awe inspiring Sydney Harbour Bridge. Imagine what Australia might not be if the settlers took a look around and only focused on the things that were bad with the country!

Explore posts in the same categories: Information Security Economics, Long Tail Security, OWASP, Productivity, Security 2.0, Social Networking, Software Development, Software Security, Technology Commentary, Web Security

21 Comments on “Are You a Builder or a Breaker”

  1. rybolov Says:

    Hi Mark, this is a well-thought-out argument.

    I think it goes back to something that I was taught to do by some of the good NCOs I’ve worked with over the years: Don’t point out problems if you don’t offer a solution.

    As an industry, we haven’t been following this advice, simply because it’s sexier to point out where things break.

  2. Rory McCune Says:

    Interesting point, and I’d agree. For me some of this stems from the fact that the application security industry is very close to and, to extent, has grown out of the penetration testing industry, which is inevitably focused on breaking rather than building.

  3. J.D. Meier Says:

    I’m a Builder. Principles, patterns, and practices. Nail the root issues over chasing symptoms.

  4. MikeA Says:

    Mark,

    There is no doubt that you are right on this topic - I’ve firmly held the believe that security is (should be) part of the process of building software, and not just tacked onto the end as a final check of “have we done it right”. I would certainly like to class my self as a “builder”, but spend more of my time as a “breaker” than I would like.

    In saying this though, an awful lot of security is, as you rightly point out, just focused on the “testing” part at the end. In some aspects this isn’t a bad thing - software can be designed, architected , and developed to be “secure”, but you need to have those final tests to say “is it so” rather than just having faith that the process did it’s job. We’ve been building software (collectively) for a long time now and still introduce bugs/defects - why would anyone think that security would be any different?

    What you and I see a lot of is companies going for the biggest bang they can get for their buck. Often in security it is testing (although I don’t actually agree with that - it’s a common perception out there). Validating the end product is like random sampling at the end of a production line - you can find where the quality doesn’t match what you are after, but it doesn’t tell you why, and things can slip though if the sampling isn’t granular enough. From the info gathered at the end of the process, we should go back and make changes (process feedback), but more often than not this doesnt happen - the attitude of “we’ll fix the issues” is much more prevalent that “we’ll figure out why those issues arose”. Even if it’s a developer mistake/oversight, there’s still an underlieing *reason*, and I very seldom see that addressed in the industry at large.

    So that’s why security is focused at the testing phase: because many companies arent willing to make the investment in it across the lifecycle. As you’ve said before, software is often an enabler in business, not the reason businesses exist (although MSFT, and other similar companies are clearly exceptions, but overall they are a minority). With this in mind, “good enough” is just fine, and testing tells them when it’s good enough

    As for the security technologies, that’s certainly a fair point if you are designing/architecting/developing a system - you need to know the best, most secure, methods that are out there so you don’t have to re-invent the wheel. In *testing* however, having an “appreciation” of the technology is certainly required, but knowing the in’s-and-out’s of a given technology I don’t believe are totally necessary. For example, testing a web app, you want to test as close to the protocol as you can so you can possibly bypass anything added but higher-level protocols and/or the client. Same with a traditional app, you want to watch the network traffic, files touched, API calls made, to try and introduce/block behavior. Having an in-depth knowledge of SAML certainly might help me test a site/app that uses it (or cut down on the testing required), but I also want to be sure that the assertions are actually being both made and handled correctly.

    If attacks get complicated enough to warrant a UML diagram, I’m sure they will be documented that way. Unfortunately, for most of the attacks/vulnerabilityies being seen today, seldom of them are very complex - as you say, there’s a lot of parlor tricks and clever filter evasion, etc - things that don’t lead themselves well to UML (or UML is complete over-kill). Attacks that are that complicated generally require a lot of “insider” knowledge, and I would guess that if security is important to these people then it’s better documented elsewhere (attack trees in the threat model perhaps?). A large number of the attack I see don’t even have good reproduction steps (sequence diagrams would help there), or are even ignored (which is why I do screen records of all my high-risk findings that warrant it). Even with the latest DNS issues, I didn’t see any kind of graphical, easy to digest, description until way after the details were released.

    I believe (hope in fact) that security will just “go away”, be “transparent” to both end users and developers. Having well-testing and “known secure” building block for developers to use will certainly make things better. Even better if these things are just “there” for them, as defaults, so they don’t even think about having to use them. XXX. At the moment there’s far too much rebuilding/repurposing going on so everything that I see is very “custom”. It’s as if we aren’t learning from the other engineering disciplines who have patterns of what works and what doesnt in a given context.

    Just my $0.02. I can go on for a *long* time on follow-up’s but I’ve already written far too much for a blog comment as it is :)

  5. Jeff Williams Says:

    Totally agree. I would add that I think being a builder is considerably harder (and ultimately more fulfilling) than being a breaker.

    But the OWASP conference is not BlackHat. All of the talks MUST talk about both problems AND solutions. And plenty of talks are focused entirely on building, including my talk on the Enterprise Security API project.

  6. Duncan Says:

    Hi Mark,

    Great blog post and I couldn’t agree more. I too have become overwhelmed with the cynicism and negativity surrounding this ‘profession’. Let’s not forget though that it’s still early days and that there’s a hell of a logn way to go in order to build our capability maturity.

  7. P.Satish Kumar Says:

    This is a very interesting article and you have given an excellent angle to the issue of Security.

    However, I believe the whole concept of security is not given due importance during the years of learning one undergoes. If this awareness was developed(pun unintended!) during those days then software professionals would waste lesser time trying to learn a thing in order to understand how to code the secure way, the smart way.

    Personally I know I learnt about security only when I began development as it was not given enough, nay any, importance in the days when I attended classes.

  8. Jason Says:

    Mark,
    I’m a bit conflicted over your post. There’s so much of it that I agree with, yet I’m so frustrated from my own experience. I can’t say whether I’m a builder or a breaker. I’ve spent my career as a systems administrator. While I can code a bit, I’m certainly not a developer by any stretch. I try to be part of the solution rather than just the guy that carps about how bad something is. In spite of that desire, I’m forced to to be the breaker, the bad guy, or the rain cloud.

    I’ve had so many discussions where I’m speaking with project managers, developers, architects or development managers where I’m essentially told to “Prove it.” I’ve been told that all permissions should just be set to 777, to give Everyone full control, or that the whole thing is just philosophical anyway. When I mention Cross Site Scripting, SQL injection, or running with limited privileges to this audience I get the same blank looks you describe. Until an application is attacked and exploited, there’s no problem. Even then known, bleeding issues get ignored as long as the application works (mostly).

    Do I think that application security folks can’t do better at being part of the solution? No, not at all. I know for a fact that I could be doing much better at it. But too often the other parties don’t even believe there’s a problem to solve and want to know why I’m even in the room.

  9. Mad Irish Says:

    Great post! Like many of the other commenters I have to agree that I’m a little conflicted. I think there is a simple economic argument for becoming a breaker - it is easier and faster to learn. I think becoming a builder is harder for a number of reasons. For one, being a builder takes a lot longer - you have to learn to be a programmer/architect *and* a security professional. I think builders, by necessity, have to go through a breaking “phase” to learn how attacks work. Unless builders can learn to think like attackers they can’t anticipate attack vectors, so this phase is necessary. Sadly, it’s much easier to learn how to push buttons in MetaSploit and charge to do penetration testing than it is to learn how to architect and program systems securely. Add to this equation the fact that companies don’t pay builders commensurately with the investment it takes to become one. I’ve never seen a job offering for a security architect that meant the person on a software development team who focuses on building the application securely. Such a person would have to be a skilled enough coder to keep up with the programmers, a skilled enough architect to keep up with the systems architects, and also know security well enough to implement features to defeat attackers. How would you find people like this? How much would you have to pay them to encourage people to get into the field? I think unfortunately, most people with these skills are still in the “breaker” market, only they operate at a much higher level. These are the people who can do code analysis and build their own exploits. Sometimes they’re doing this in a way that makes applications more secure, but rarely are they ever rewarded for their efforts and there’s a great incentive to try and sell discoveries like these or hold onto them so as to have the best 0-day parlor tricks…

  10. Andrew van der Stock Says:

    Mark,

    Finally, someone else who agrees with me.

    I’ve had no luck getting into our security conferences by offering building talks. I find that repulsive. I’m no longer going to submit talks to our industry’s conferences, only developer conferences.

    The next version of the guide will be only about building, not testing or reviewing. There will be links to these issues, but there it will be much shorter. Mainly because unless there’s a specific countermeasure to a particular weakness we must deal with, it will have basically zero discussion of attacks. My aim is that if you do the 16 or so things right in the OWASP Developer Guide 3.0, you’ll be safe against the 700+ CWE items automatically. This means for example, we will simply not talk about dynamic SQL queries except to say that they should not be used, and what sort of care needs to be taken if using parameterized queries, stored procedures and ORMs. Therefore, the chapter dealing with data sources will be about 1 page long.

    thanks,
    Andrew

  11. Tom Brennan Says:

    Concerning the OWASP event - there are (2) “camps” the training of how to do it properly and the talks about frameworks and projects like ESAPI, DHS Software Assurance Initiatives, NIST, Practical Advanced Threat Modeling and Security in Agile Development etc…

    Training like;
    T1. Defensive Programming
    T2. Secure Coding for Java EE
    T3. Web Services and XML Security
    T4 — ok that is a breaking training…
    T5. Leading the Development of Secure Applications
    T6. Building Secure Rich Internet Applications
    T8. Secure Coding for .NET

    And yes, there is the other side that take more pride in poking holes and vulns…

    Next Generation Cross Site Scripting Worms
    Security of Software-as-a-Service (SaaS)
    and more…. will not bore you simply visit: http://www.owasp.org/index.php/OWASP_NYC_AppSec_2008_Conference

    The part that you have NOT heard yet about this event is the following.

    OWASP FOUNDATION WILL BE VIDEO TAPING ALL OF THE SESSIONS and releasing the content for FREE on October 1st to the world so that if you were unable to make the event for the peer-to-peer networking, parties etc.. you can still see the content at NO COST keeping it OPEN as OWASP is.

    Build it and they will come - Break it and Media will come…

    -Brennan

  12. Iang Says:

    It’s fine to claim to be a builder, but it is rather hard to prove. Building is measured in years, breaking is shown in milliseconds. So we have a compelling advantage in the job market if we are a proven breaker; in contrast, there is no easy way to a great builder from a mediocre one.

    What’s the solution? I don’t know. In the historical past, the guilds managed this conundrum, but guilds don’t work on the net, because there is an open market, and in an open competition between guilds, the incentive is to race to the bottom. So maybe the challenge is to build a guild that reaches up to higher architecture, not outwards to emptying your pocket.

    More on my blog.

  13. Ubuntu Security » Blog Archive » On Breakership Says:

    [...] week Mark Curphey asked Are You a Builder or a Breaker. Even today at RAID 2008, the issue of learning or teaching offensive techniques [...]

  14. Anonymous Says:

    I find it strange that this post seems to equate being a “Builder” with knowledge of SAML, Enterprise Message Buses, WS-x spec, UML diagrams, and so on. Security is not about features; it is about assurance; and likewise, I suspect the essence of being a good builder is not about knowing a checklist of industry standards, but about principles and methods for building secure systems.

  15. Interesting Information Security Bits for 09/22/2008 « Infosec Ramblings Says:

    [...] Mark Curphey On Builders and Breakers Gunnar writes about builders vs. breakers. He references Security Buddha’s excelent article on the same subject. Both are worth [...]

  16. Thanasis K Says:

    I agree with this blog post BUT is this really new?
    Incompetent “Security Consultants” (or charlatans if you prefer) have been around for ages, a quick look around some (seedy, granted) sites will prove this.

    What it used to be “generic BO” now it is “generic XSS”.

    As an old manager of mine used to say “10% guns, 90% tin”. Same goes for “security consultants”
    10% actually know what they are talking about and the rest 90% are just “button pushers”.

    Application security, the way is practiced today, is nothing more than glorified testing (I wholeheartedly agree) and, judging from what I have seen in the field, minus the testing communitiy’s testing and experience, more like a random ad hoc pick-n-prick approach. However, unless customers get EDUCATED, this is the shoddy level of service they are getting.

    For the love of Jobe, don’t get me started on the “best practices” and “standards” thing :-)

    Keep up the good work Mark :)

  17. Andrew Jaquith Says:

    Mark –

    You and I have talked about “builders” and “breakers” before. Great post summarizing the issues.

    I’ve always felt that the builders/breakers divide is a bit like the one between the first artist & art critic in “History of the World, Part 1.” :)

  18. ragavendra Says:

    that was a fantastic words from the Brain Rules.it has the deepest meaning if you analyze it well.
    ——–
    ragavendra

    Link Building

  19. BlueHat review | Mike Andrews Says:

    [...] Friday Day 2 was focused towards the "building" rather than the day one "breaking" theme – Mark Curphey would have been proud [...]

  20. Stephen Evans Says:

    I am equally annoyed by so-called appsec experts who sit on their high horses, thinking that I can dictate to my customers what they want and will pay their money to get.

    Please forgive me, Mark the Great Microsoft Koolaid Drinker, for not speaking in forked tongues about SAML, EMBs, and WS* :-)

    Stephen

  21. Consumer Application Security or Enterprise Application Security ? « Mark Curphey - SecurityBuddha.com Says:

    [...] is more exciting than designing and developing for most people. I understand  and acknowledge that; but I have to conclude that it does skew the relative [...]

Comment: