Actionable Advice

I gave a talk at OSCON 20 about security. It’s not a typical security talk though. I’ve given and attended a lot of what I would call “typical” security presentations. It’s generally about some big security idea, there’s likely some amount of blaming everyone except the security industry itself. We should make sure we throw in some analogies, maybe comparing cars to buggies or bridge safety. Blockchain is pretty hip now so that can probably solve the problem, maybe with AI. In general these presentation aren’t overly exciting and tend to play to the audience. They are fun, but that’s not the point this time.

The best part about getting to give a security talk at OSCON is I’m not talking to a security audience, I get to talk to developers about security. Developers, the ones who do the actual work, sometimes in spite of their security teams causing friction and slowing things down. It’s very common for security guidance to lack actionable advice. You need to use a strong password! OK, sure, but why and what does that mean? How do I write secure code? How can I fix these security problems you just told me my project has? I tried to fill my talk with actionable advice for the developers. Also bad jokes.

Actionable advice is hard. It’s very easy to point out what’s wrong with something, it’s probably ten times harder to actually fix it. Brian Kernighan has a quote that I like to use to explain this “Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” The same basic thing holds true for fixing any problem, security problems included. Fixing problems can be very difficult, helping someone else understand then fix a problem is REALLY difficult.

A great example can be found with cross site scripting (XSS) security flaws. These are bugs that basically let an attacker take over the content on your website (I know this is a gross oversimplification). In many instances the developer will get a report about a XSS bug found in the website, so they fix the bug. There is literally an infinite number of these bugs on every website. Developers are adding new XSS bugs faster than anyone is fixing old ones. What if I also told you there is a way to fix all of these problems. Forever!

Well, nothing is really forever, but this is one of the examples I use during this presentation. If we look at the OWASP Top 10 we can get a sense for the most common mistakes in web applications. In the 2017 list XSS was #7. I expect it will always be on the Top 10 list. I like OWASP a lot, they’re a great group and you should get involved if you’re not already. But I do have some issues with the Top 10 list from the viewpoint of non security developers. The list doesn’t contain actionable advice in the way I would like. It treats these issues as being unrelated and often offers a number of possible solutions to each of the top ten.

If you pick a modern web framework and use it properly, you can remove about half that list! That’s pretty wild if you think about it.

There’s a little more nuance than this of course. You also have to keep your framework updated, and you better make sure it has a healthy upstream. You will also make mistakes. Everyone makes mistakes. When mistakes are made fix them fast. We love to focus on blame but that’s not very useful. What is useful is having the ability to move fast.

I could of course go on in more detail, but the basic idea for the presentation is I break the OWASP Top 10 into something closer to the top 3. Everyone can remember three things, nobody can remember ten.

One of my goals is to discuss security with everyone. While security conferences are a lot of fun, the topics are often self serving and not reaching beyond the typical security people. It’s very common to hear “security should be everyone’s job”. This statement is sort of silly if you think about it. Is electricity everyone’s job? No, it’s just something that exists and we don’t really think about unless it’s broken. Security should be like electricity or plumbing. It exists, it’s pretty easy to use correctly, and as long it’s doing what it was designed to do, nobody worries about it.

The father of modern security: B. F. Skinner

A lot of what we call security is voodoo. Most of it actually.

What I mean with that statement is our security process is often based on ideas that don’t really work. As an industry we have built up a lot of ideas and processes that aren’t actually grounded in facts and science. We don’t understand why we do certain things, but we know that if we don’t do those things something bad will happen! Will it really happen? I heard something will happen. I suspect the answer is no, but it’s very difficult to explain this concept sometimes.

I’m going to start with some research B. F. Skinner did as my example here. The very short version is that Skinner did research on pigeons. He had a box that delivered food at random intervals. The birds developed rituals that they would do in order to have their food delivered. If a pigeon decided that spinning around would cause food to be delivered, it would continue to spin around, eventually the food would appear reinforcing the nonsensical behavior. The pigeon believed their ritual was affecting how often the food was delivered. The reality is nothing the pigeon did affected how often food was delivered. The pigeon of course didn’t know this, they only knew what they experienced.

My favorite example  to use next to this pigeon experiment is the password policies of old. A long time ago someone made up some rules about what a good password should look like. A good password has letters, and numbers, and special characters, and the name of a tree in it. How often we should change a password was also part of this. Everyone knows you should change passwords as often as possible. Two or three times a day is best. The more you change it the more secure it is!

Today we’ve decided that all this advice was terrible. The old advice was based on voodoo. It was our ritual that kept us safe. The advice to some people seemed like a fair idea, but there were no facts backing it up. Lots of random characters seems like a good idea, but we didn’t know why. Changing your password often seemed like a good idea, but we didn’t know why. This wasn’t much different than the pigeon spinning around to get more food. We couldn’t prove it didn’t not work, so we kept doing it because we had to do something.

Do you know why we changed all of our password advice? We changed it because someone did the research around passwords. We found out that very long passwords using real words is substantially better than a nonsense short password. We found out that people aren’t good at changing their passwords every 90 days. They end up using horrible passwords and adding a 1 to the end. We measured the effectiveness of these processes and understood they were actually doing the opposite of what we wanted them to do. Without question there are other security ideas we do today that fall into this category.

Even though we have research showing this password advice was terrible we still see a lot of organizations and people who believe the old rituals are the right way to keep passwords safe. Sometimes even when you prove something to someone they can’t believe it. They are so invested in their rituals that they are unable to imagine any other way of existing. A lot of security happens this way. How many of our rules and processes are based on bad ideas?

How to measure
Here’s where it gets real. It’s easy to pick on the password example because it’s in the past. We need to focus on the present and the future. You have an organization that’s full of policy, ideas, and stuff. How can we try to make a dent in what we have today? What matters? What doesn’t work, and what’s actually harmful?

I’m going to split everything into 3 possible categories. We’ll dive deeper into each in future posts, but we’ll talk about them briefly right now.

Things that make money
Number one is things that make money. This is something like a product you sell, or a website that customers use to interact with your company. Every company does something that generates revenue. Measuring things that fit into this category is really easy. You just ask “Will this make more, less, or the same amount of money?” If the answer is less you’re wasting your time. I wrote about this a bit a long time ago, the post isn’t great, but the graphic I made is useful, print it out and plot your features on it. You can probably start asking this question today without much excitement.

Cost of doing business
The next category is what I call cost of doing business. This would be things like compliance or being a part of a professional organization. Sending staff to conferences and meetings. Things that don’t directly generate revenue but can have a real impact on the revenue. If you don’t have PCI compliance, you can’t process payments, you have no revenue, and the company won’t last long. Measuring some of these is really hard. Does sending someone to Black Hat directly generate revenue? No. But it will create valuable connections and they will likely learn new things that will be a benefit down the road. I guess you could think of these as investments in future revenue.

My thoughts on how to measure this one is less mature. I think about these often. I’ll elaborate more in a future post.

Infrastructure
The last category I’m going to call “infrastructure”. This one is a bit harder to grasp what makes sense. It’s not unlike the previous question though. In this case we ask ourselves “If I stopped doing this what bad thing would happen?” Now I don’t mean movie plot bad thing. Yeah if you stopped using your super expensive keycard entry system a spy from a competitor could break in and steal all your secrets using an super encrypted tor enabled flash drive, but they probably won’t. This is the category where you have to consider the cost of an action vs the cost of not doing an action. Not doing things will often have a cost, but doing things also has a cost.

Return on investment is the name of the game here. Nobody likes to spend money they don’t have to. This is why cloud is disrupting everything. Why pay for servers you don’t need when you can rent only what you do need?

I have some great stories for this category, be sure to come back when I publish this followup article.

The homework for everyone now is to just start thinking about what you do and why you do it. If you don’t have a good reason, you need to change your thinking. Changing your thinking is really hard to do as a human though. Many of us like to double down on our old beliefs when presented with facts. Don’t be that person, keep an open mind.

Security ROI isn’t impossible, we suck at measuring

As of late I’ve been seeing a lot of grumbling that security return on investment (ROI) is impossible. This is of course nonsense. Understanding your ROI is one of the most important things you can do as a business leader. You have to understand if what you’re doing makes sense. By the very nature of business, some of the things we do have more value than other things. Some things even have negative value. If we don’t know which things are the most important, we’re just doing voodoo security.

H. James Harrington once said

Measurement is the first step that leads to control and eventually to improvement. If you can’t measure something, you can’t understand it. If you can’t understand it, you can’t control it. If you can’t control it, you can’t improve it.

Anyone paying attention to the current state of security will probably shed a tear over that statement. The foundation of the statement results in this truth: we can’t control or improve the state of security today. As much as we all like to talk about what’s wrong with security and how to fix it. The reality is we don’t really know what’s broken, which of course means we have no idea how to fix anything.

Measuring security isn’t impossible, it’s just really hard today. It’s really hard because we don’t really understand what security is in most instances. Security isn’t one thing, it’s a lot of little things that don’t really have anything to do with each other but we clump them together for some reason. We like to build teams of specialized people and call them the security team. We pretend we’re responsible for a lot of little unrelated activities but we often don’t have any real accountability. The reality is this isn’t a great way to do something that actually works, it’s a great way to have a lot smart people fail to live up to their true potential. The best security teams in the world today aren’t good at security, they’re just really good at marketing themselves so everyone thinks they’re good at security.

Security needs to be a part of everything, not a special team that doesn’t understand what’s happening outside their walls. Think for a minute what an organization would look like if we split groups up by what programming language they knew. Now you have all the python people in one corner and all the C guys in the other corner. They’ll of course have a long list of reasons why they’re smarter and better than the other group (we’ll ignore the perl guys down in the basement). Now if there is a project that needs some C and some python they would have to go to each group and get help. Bless the soul of anyone who needs C and python working together in their project. You know this would just be a massive insane turf war with no winner. It’s quite likely the project would never work because the groups wouldn’t have a huge incentive to work together. I imagine you can see the problem here. You have two groups that need to work together without proper incentive to actually work together.

Security is a lot like this. Does having a special secure development group outside of the development group make sense? Why does it make sense to have a security operations group that isn’t just part of IT? If you’re not part of a group do you have an incentive for the group to succeed? If I can make development’s life so difficult they can’t possibly succeed that’s development’s problem, not yours. You have no incentive to be a reasonable member of the team. The reality is you’re not a member of the team at all. Your incentive is to protect your own turf, not help anyone else.

I’m going to pick on Google’s Project Zero for a minute here. Not because they’re broken, but because they’re really really good at what they do. Project zero does research into how to break things, then they work with the project they broke to make it better. If this was part of a more traditional security thinking group, Project Zero would do research, build patches, then demand everyone uses whatever it is they built and throw a tantrum if they don’t. This would of course be crazy, unwelcome, and a waste of time. Project Zero has a razor focus on research. More importantly though they work with other groups when it’s time to get the final work done. Their razor focus and ability to work with others gives them a pretty clear metric they can see. How many flaws did they find? How many got fixed? How many new attack vectors did they create? This is easy to measure. Of course some groups won’t work with them, but in that case they can publish their advisories and move on. There’s no value in picking long horrible fights.

So here’s the question you have to ask yourself. How much of what you do directly affects the group you’re a part of? I don’t mean things like enforcing compliance, compliance is a cost like paying for electricity, think bigger here about things that generate revenue. If you’re doing a project with development, do your decisions affect them or do they affect you? If your decisions affect development you probably can’t measure what you do. You can really only measure things that affect you directly. Even if you think you can measure someone else, you’ll never be as good as they are. And honestly, who cares what someone else is doing, measure yourself first.

It’s pretty clear we don’t actually understand what we like to call “security” because we have no idea how to measure it. If we did understand it, we could measure it. According to H. James Harrington we can’t fix what we can’t measure it. I think given everything we’ve seen over the past few years, this is quite accurate. We will never fix our security problems without first measuring our security ROI.

I’ll spend some time in the next few posts discussing how to measure what we do with actual examples. It’s not as hard as it sounds.

Helicopter security

After my last post about security spending, I was thinking about how most security teams integrate into the overall business (hint: they don’t). As part of this thought experiment I decided to compare traditional security to something that in modern times has come to be called helicopter parenting.

A helicopter parent is someone who won’t let their kids do anything on their own. These are the people you hear about who follow their child to college, to sports practice. They yell at teachers and coaches for not respecting how special the child is. The kids are never allowed to take any risks because risk is dangerous and bad. If they climb the tree, while it could be a life altering experience, they could also fall and get hurt. Skateboarding is possibly the most dangerous thing anyone could ever do! We better make sure nothing bad can ever happen.

It’s pretty well understood now that this sort of attitude is terrible for the children. They must learn to do things on their own, it’s part of the development process. Taking risks and failing is an extremely useful exercise. It’s not something we think about often, but you have to learn to fail. Failure is hard to learn. The children of helicopter parents do manage to learn one lesson they can use in their life, they learn to hide what they do from their parents. They get extremely good at finding way to get around all their rules and restrictions. To a degree we all had this problem growing up. At some point we all wanted to do something our parents didn’t approve of, which generally meant we did it anyway, we just didn’t tell our parents. Now imagine a universe where your parents let you do NOTHING, you’re going to be hiding literally everything. Nobody throughout history has ever accepted the fact that they can do nothing, they just make sure the authoritarian doesn’t know about it. Getting caught is still better than doing nothing much of the time.

This brings us to traditional security. Most security teams don’t try to work with the business counterparts. Security teams often think they can just tell everyone else what to do. Have you ever heard the security team ask “what are you trying to do?” Of course not. They always just say “don’t do that” or maybe “do it this way” then move on to tell the next group how to do their job. They don’t try to understand what you’re doing and why you are doing it. It’s quite literally not their job to care what you’re doing, which is part of the problem. Things like phishing tests are used to belittle, not teach (they have no value as teaching tools, but we won’t discuss that today). Many of the old school security teams see their job as risk aversion, not risk management. They are helicopter security teams.

Now as we know from children, if you prevent someone from doing anything they don’t become your obedient servant, they go out of their way to make sure the authority has no idea what’s going on. This is basically how shadow IT became a thing. It was far easier to go around the rules than work with the existing machine. Helicopter security is worse than nothing. At least with nothing you can figure out what’s going on by asking questions and getting honest answers. In a helicopter security environment information is actively hidden because truth will only get you in trouble.

Can we fix this?
I don’t know the answer to this question. A lot of tech people I see (not just security) are soldiers from the last war. With the way we see cloud transforming the universe there are a lot of people who are still stuck in the past. We often hear it’s hard to learn new things but it’s more than that. Technology, especially security, never stands still. It used to move slow enough you could get by for a few years on old skills, but we’re in the middle of disruptive change right now. If you’re not constantly questioning your existing skills and way of thinking you’re already behind. Some people are so far behind they will never catch up. It’s human nature to double down on the status quo when you’re not part of the change. Helicopter security is that doubling down.

It’s far easier to fight change and hope your old skills will remain useful than it is to learn a new skill. Everything we see in IT today is basically a new skill. Today the most useful thing you can know is how to learn quickly, what you learned a few months ago could be useless today, it will probably be useless in the near future. We are actively fighting change like this in security today. We try to lump everything together and pretend we have some sort of control over it. We never really had any control, it’s just a lot more obvious now than it was before. Helicopter security doesn’t work, no matter how bad you want it to.

The Next Step
The single biggest thing we need to start doing is measure ourselves. Even if you don’t want to learn anything new you can at least try to understand what we’re doing today that actually works, which things sort of work, and of course the things that don’t work at all. In the next few posts I’m going to discuss how to measure security as well as how to avoid voodoo security. It’s a lot harder to justify helicopter security behavior once we understand which of our actions work and which don’t.

Spend until you’re secure

I was watching a few Twitter conversations about purchasing security last week and had yet another conversation about security ROI. This has me thinking about what we spend money on. In many industries we can spend our way out of problems, not all problems, but a lot of problems. With security if I gave you a blank check and said “fix it”, you couldn’t. Our problem isn’t money, it’s more fundamental than that.

Spend it like you got it
First let’s think about how some problems can be solved with money. If you need more electricity capacity, or more help during a busy time, or more computing power, it’s really easy to add capacity. You need more compute power, you can either buy more computers or just spend $2.15 in the cloud. If you need to dig a big hole, for a publicity stunt on Black Friday, you just pay someone to dig a big hole. It’s not that hard.

This doesn’t always work though, if you’re building a new website, you probably can’t buy your way to success. If a project like this falls behind it can be very difficult to catch back up. You can however track progress which I would say is at least a reasonable alternative. You can move development to another group or hire a new consultant if the old one isn’t living up to expectations.

More Security
What if we need “more” security. How can we buy our way into more security for our organization? I’d start by asking the question can we show any actual value for our current security investment? If you stopped spending money on security tomorrow do you know what the results would be? If you stopped buying toilet paper for your company tomorrow you can probably understand what will happen (if you have a good facilities department I bet they already know the answer to this).

This is a huge problem in many organizations. If you don’t know what would happen if you lowered or increased your security spending you’re basically doing voodoo security. You can imagine many projects and processes as having a series of inputs that can be adjusted. Things like money, time, people, computers, the list could go on. You can control these variables and have direct outcomes on the project. More people could mean you can spend less money on contractors, more computers could mean less time spent on rendering or compiling. Ideally you have a way to find the optimal levels for each of these variables resulting in not only a high return on investment, but also happier workers as they can see the results of their efforts.

We can’t do this with security today because security is too broad. We often don’t know what would happen if we add more staff, or more technology.

Fundamental fundamentals

So this brings us to why we can’t spend our way to security. I would argue there are two real problems here. The first being “security” isn’t a thing. We pretend security is an industry that means something but it’s really a lot of smaller things we’ve clumped together in such a way that ensures we can only fail. I see security teams claim to own anything that has the word security attached to it. They claim ownership of projects and ideas, but then they don’t actually take any actions because they’re too busy or lack the skills to do the work. Just because you know how to do secure development doesn’t automatically make you an expert at network security. If you’re great at network security it doesn’t mean you know anything about physical security. Security is a lot of little things, we have to start to understand what those are and how to push responsibility to respective groups. Having a special application security team that’s not part of development doesn’t work. You need all development teams doing things securely.
The second problem is we don’t measure what we do. How many security teams tell IT they have to follow a giant list of security rules, but they have no idea what would happen if one or more of those rules were rolled back? Remember when everyone insisted we needed to use complex passwords? Now that’s considered bad advice and we shouldn’t make people change their passwords often. It’s also a bad idea to insist they use a variety of special characters now. How many millions have been wasted on stupid password rules? The fact that we changed the rules without any fanfare means there was no actual science behind the rules in the first place. If we even tried to measure this I suspect we would have known YEARS ago that it was a terrible idea. Instead we just kept doing voodoo security. How many more of our rules do you think will end up being rolled back in the near future because they don’t actually make sense?
If you’re in charge of a security program the first bit of advice I’d give out is to look at everything you own and get rid of whatever you can. Your job isn’t to do everything, figure out what you have to do, then do it well. One project well done is far better than 12 half finished. The next thing you need to do is figure out how much whatever you do costs, and how much benefit it creates. If you can’t figure out the benefit, you can probably stop doing it today. If it costs more than it saves, you can stop that too. We must have a razor focus if we’re to understand what our real problems are. Once we understand the problems we can start to solve them.

But that’s not my job!

This week I’ve been thinking about how security people and non security people interact. Various conversations I have often end up with someone suggesting everyone needs some sort of security responsibility. My suspicion is this will never work.

First some background to think about. In any organization there are certain responsibilities everyone has. Without using security as our specific example just yet, let’s consider how a typical building functions. You have people who are tasked with keeping the electricity working, the plumbing, the heating and cooling. Some people keep the building clean, some take care of the elevators. Some work in the building to accomplish some other task. If the company that inhabits the building is a bank you can imagine the huge number of tasks that take place inside.

Now here’s where I want our analogy to start. If I work in a building and I see a leaking faucet. I probably would report it. If I didn’t, it’s likely someone else would see it. It’s quite possible if I’m one of the electricians and while accessing some hard to reach place I notice a leaking pipe. That’s not my job to fix it, I could tell the plumbers but they’re not very nice to me, so who cares. The last time I told them about a leaking pipe they blamed me for breaking it, so I don’t really have an incentive here. If I do nothing, it really won’t affect me. If I tell someone, at best it doesn’t affect me, but in reality I probably will get some level of blame or scrutiny.

This almost certainly makes sense to most of us. I wonder if there are organizations where reporting things like this comes with an incentive. A leaking water pipe could end up causing millions in damage before it’s found. Nowhere I’ve ever worked ever really had an incentive to report things like this. If it’s not your job, you don’t really have to care, so nobody ever really cared.

Now let’s think about phishing in a modern enterprise. You see everything from blaming the user who clicked the link, to laughing at them for being stupid, to even maybe firing someone for losing the company a ton of money. If a user clicks a phishing link, and suspects a problem, they have very little incentive to be proactive. It’s not their job. I bet the number of clicked phish links we find out about is much much lower than the total number clicked.

I also hear security folks talking about educating the users on how all this works. Users should know how to spot phishing links! While this won’t work for a variety of reasons, at the end of the day, it’s not their job so why do we think they should know how to do this? Even more important, why do we think they should care?

The think I keep wondering is should this be the job of everyone or just the job of the security people? I think the quick reaction is “everyone” but my suspicion is it’s not. Electricity is a great example. How many stories have you heard of office workers being electrocuted in the office? The number is really low because we’ve made electricity extremely safe. If we put this in the context of modern security we have a system where the office is covered in bare wires. Imagine wires hanging from the ceiling, some draped on the floor. The bathroom has sparking wires next to the sink. We lost three interns last week, those stupid interns! They should have known which wires weren’t safe to accidentally touch. It’s up to everyone in the office to know which wires are safe and which are dangerous!

This is of course madness, but it’s modern day security. Instead of fixing the wires, we just imagine we can train everyone up on how to spot the dangerous ones.

Security and privacy are the same thing

Earlier today I ran across this post on Reddit
Security but not Privacy (Am I doing this right?)

The poster basically said “I care about security but not privacy”.

It got me thinking about security and privacy. There’s not really a difference between the two. They are two faces of the same coin but why isn’t always obvious in today’s information universe. If a site like Facebook or Google knows everything about you it doesn’t mean you don’t care about privacy, it means you’re putting your trust in those sites. The same sort of trust that makes passwords private.

The first thing we need to grasp is what I’m going to call a trust boundary. I trust you understand trust already (har har har). But a trust boundary is less obvious sometimes. A security (or privacy) incident happens when there is a breach of the trust boundary. Let’s just dive into some examples to better understand this.

A web site is defaced
In this example the expectation is the website owner is the only person or group that can update the website content. The attacker crossed a trust boundary that allowed them to make unwanted changes to the website.

Your credit card is used fraudulently
It’s expected that only you will be using your credit card. If someone gets your number somehow and starts to make purchases with your card, how they got the card crosses a trust boundary. You could easily put this example in the “privacy” bucket if you wanted to keep them separate, it’s likely your card was stolen due to lax security at one of the businesses you visited.

Your wallet is stolen
This one is tricky. The trust boundary is probably your pocket or purse. Maybe you dropped it or forgot it on a counter. Whatever happened the trust boundary is broken when you lose control of your wallet. An event like this can trickle down though. It could result in identity theft, your credit card could be used. Maybe it’s just about the cash. The scary thing is you don’t really know because you lost a lot of information. Some things we’d call privacy problems, some we’d call security problems.

I use a confusing last example on purpose to help prove my point. The issue is all about who do you trust with what. You can trust Facebook and give them tons of information, many of us do. You can trust Google for the same basic reasons. That doesn’t mean you don’t care about privacy, it just means you have put them inside a certain trust boundary. There are limits to that trust though.

What if Facebook decided to use your personal information to access your bank records? That would be a pretty substantial trust boundary abuse. What if your phone company decided to use the information they have to log into your Facebook account?

A good password isn’t all that different from your credit card number. It’s a bit of private information that you share with one or more other organizations. You are expecting them not to cross a trust boundary with the information you gave them.

The real challenge is to understand what trust boundaries you’re comfortable with. What do you share with who? Nobody is an island, we must exist in an ecosystem of trust. We all have different boundaries of what we will share. That’s quite all right. If you understand your trust boundary making good security/privacy decisions becomes a lot easier.

They say information is the new oil. If that’s true then trust must be the currency.

Summer is coming

I’m getting ready to attend Black Hat. I will miss BSides and Defcon this year unfortunately due to some personal commitments. And as I’m packing up my gear, I started thinking about what these conferences have really changed. We’ve been doing this every summer for longer than many of us can remember now. We make our way to the desert, we attend talks by what we consider the brightest minds in our industry. We meet lots of people. Everyone has a great time. But what is the actionable events that come from these things.

The answer is nothing. They’ve changed nothing.

But I’m going to put an asterisk next to that.

I do think things are getting better, for some definition of better. Technology is marching forward, security is getting dragged along with a lot of it. Some things, like IoT, have some learning to do, but the real change won’t come from the security universe.

Firstly we should understand that the world today has changed drastically. The skillset that mattered ten years ago doesn’t have a lot of value anymore. Things like buffer overflows are far less important than they used to be. Coding in C isn’t quite what it once was. There are many protections built into frameworks and languages. The cloud has taken over a great deal of infrastructure. The list can go on.

The point of such a list is to ask the question, how much of the important change that’s made a real difference came from our security leaders? I’d argue not very much. The real change comes from people we’ve never heard of. There are people in the trenches making small changes every single day. Those small changes eventually pile up until we notice they’re something big and real.

Rather than trying to fix the big problems, our time is better spent ignoring the thought leaders and just doing something small. Conferences are important, but not to listen to the leaders. Go find the vendors and attendees who are doing new and interesting things. They are the ones that will make a difference, they are literally the future. Even the smallest bug bounty, feature, or pull request can make a difference. The end goal isn’t to be a noisy gasbag, instead it should be all about being useful.

Who’s got your hack back?

The topic of hacking back keeps coming up these days. There’s an attempt to pass a bill in the US that would legalize hacking back. There are many opinions on this topic, I’m generally not one to take a hard stand against what someone else thinks. In this case though, if you think hacking back is a good idea, you’re wrong. Painfully wrong.

Everything I’ve seen up to this point tells me the people who think hacking back is a good idea are either mistaken about the issue or they’re misleading others on purpose. Hacking back isn’t self defense, it’s not about being attacked, it’s not about protection. It’s a terrible idea that has no place in a modern society. Hacking back is some sort of stone age retribution tribal law. It has no place in our world.

Rather than break the various argument apart. Let’s think about two examples that exist in the real world.

Firstly, why don’t we give the people doing mall security guns? There is one really good reasons I can think of here. The insurance company that holds the policy on the mall would never allow the security to carry guns. If you let security carry guns, they will use them someday. They’ll probably use them in an inappropriate manner, the mall will be sued, and they will almost certainly lose. That doesn’t mean the mall has to pay a massive settlement, it means the insurance company has to pay a massive settlement. They don’t want to do that. Even if some crazy law claims it’s not illegal to hack back, no sane insurance company will allow it. I’m not talking about cyber insurance, I’m just talking about general policies here.

The second example revolves around shoplifting. If someone is caught stealing from a store, does someone go to their house and take some of their stuff in retribution? They don’t of course. Why not? Because we’re not cave people anymore. That’s why. Retribution style justice has no place in a modern civilization. This is how a feud starts, nobody has ever won a feud, at best it’s a draw when they all kill each other.

So this has me really thinking. Why would anyone want to hack back? There aren’t many reasons that don’t revolve around revenge. The way most attacks work you can’t reliably know who is doing what with any sort of confidence. Hacking back isn’t going to make anything better. It would make things a lot worse. Nobody wants to be stuck in the middle of a senseless feud. Well, nobody sane.

When in doubt, blame open source

If you’ve not read my previous post on thought leadership, go do that now, this one builds on it. The thing that really kicked off my thinking on these matters was this article:

Security liability is coming for software: Is your engineering team ready?

The whole article is pretty silly, but the bit about liability and open source is the real treat. There’s some sort of special consideration when you use open source apparently, we’ll get back to that. Right now there is basically no liability of any sort when you use software. I doubt there will be anytime soon. Liability laws are tricky, but the lawyers I’ve spoken with have been clear that software isn’t currently covered in most instances. The whole article is basically nonsense from that respect. The people they interview set the stage for liability and responsibility then seem to discuss how open source should be treated special in this context.

Nothing is special, open source is no better or worse than closed source software. If you build something why would open source need more responsibility than closed source? It doesn’t of course, it’s just an easy target to pick on. The real story is we don’t know how to deal with this problem. Open source is an easy boogeyman. It’s getting picked on because we don’t know where else to point the finger.

The real problem is we don’t know how to secure our software in an acceptable manner. Trying to talk about liability and responsibility is fine, nobody is going to worry about security until they have to. Using open source as a discussion point in this conversation clouds it though. We now get to shift the conversation from how do we improve security, to blaming something else for our problems. Open source is one of the tools we use to build our software. It might be the most powerful tool we’ve ever had. Tools are never the problem in a broken system even though they get blamed on a regular basis.

The conversation we must have revolves around incentives. There is no incentive to build secure software. Blaming open source or talking about responsibility are just attempts to skirt the real issue. We have to fix our incentives. Liability could be an incentive, regulation can be an incentive. User demand can be an incentive as well. Today the security quality of software doesn’t seem to matter.

I’d like to end this saying we should make an effort to have more honest discussions about security incentives, but I don’t think that will happen. As I mention in my previous blog post, our problem is a lack of leadership. Even if we fix security incentives, I don’t see things getting much better under current leadership.