Transcript
            
            
              This transcript was autogenerated. To make changes, submit a PR.
            
            
            
            
              Imagine us. It's Monday, the last sprint
            
            
            
              of a project you just had planning. You agreed
            
            
            
              with your team that you need to fix two bags, you need to write the
            
            
            
              documentation, and you're basically ready to release th
            
            
            
              you feel good, you feel motivated, excited,
            
            
            
              excited for the release. You've worked so hard.
            
            
            
              You're excited for the future and new project that's coming.
            
            
            
              It's Monday, but you feel great. You feel that what
            
            
            
              you planned with your team is achievable.
            
            
            
              So let's just do it on Tuesday,
            
            
            
              engineering manager comes to the room and she says,
            
            
            
              look, I think it would be good if we run this through
            
            
            
              the security just before the release.
            
            
            
              And in this case, it would be great, means we
            
            
            
              must do it. So you go to the meeting with a
            
            
            
              security team, and they ask you tons
            
            
            
              of questions, and they look at documentation that
            
            
            
              hasn't been finished yet.
            
            
            
              And after the meeting,
            
            
            
              you end up with a whole bunch of
            
            
            
              bugs to fix. And if
            
            
            
              you ask me, I also have no idea what a snail is doing
            
            
            
              among all of these other bugs. Snails are not bugs.
            
            
            
              Right? I've been in this situation
            
            
            
              way too many times. Way too many times.
            
            
            
              And every project, we would have this lovely
            
            
            
              meeting called project retrospective. Do you know this meeting?
            
            
            
              And we would be like, oh, you know what? Having security
            
            
            
              review at the last sprint of the project,
            
            
            
              it's not good. It's stressful. It adds work.
            
            
            
              We don't want to do it this way. And the moment,
            
            
            
              trust me, the moment the meeting ended
            
            
            
              and we closed the door of this
            
            
            
              meeting room, we would all
            
            
            
              forget. But it. And this
            
            
            
              review, security review in the last sprint would
            
            
            
              hunt it over and over and over again.
            
            
            
              I mean, it would hunt us over and over and over again. To put
            
            
            
              things a bit into perspective, my name is Wiktoria Dalach.
            
            
            
              I was born in Krakow, Poland, but I'm based in Berlin,
            
            
            
              Germany, and I've spent the last decade
            
            
            
              building software. Two years ago,
            
            
            
              I decided to switch the perspective and
            
            
            
              join the security team. And it was great opportunity
            
            
            
              for me to see how organization works from
            
            
            
              different perspectives, because when I was an engineer,
            
            
            
              software engineer would go to the meeting with other engineering
            
            
            
              team and other engineering managers, and we
            
            
            
              would be peers. We would be like, yeah, let's build it, let's improve it.
            
            
            
              Let's do something, whatever this
            
            
            
              something was. But when I started working
            
            
            
              as a security engineer and I started saying, oh,
            
            
            
              this is what is important,
            
            
            
              I got pushback. I was like, I was not a peer anymore.
            
            
            
              I was another stakeholder. So I
            
            
            
              realized that there are some low hanging fruit
            
            
            
              like things that you need to pay attention to in order to
            
            
            
              create good, secure products. And today
            
            
            
              I'm sharing those with you. All the notes from this talk
            
            
            
              are available under this link. So no stress about taking
            
            
            
              notes or something. We can just enjoy
            
            
            
              our one on one conference experience. So first of all,
            
            
            
              pay attention to access control. You cannot grant
            
            
            
              admin access to everything
            
            
            
              and you cannot give it as a freebies.
            
            
            
              No, you need to be very careful how
            
            
            
              you structure the access control and what
            
            
            
              kind of resources people have access to. And look,
            
            
            
              this is very difficult for us engineers
            
            
            
              because we are like, oh, but we want to see
            
            
            
              this feature. We develop some feature,
            
            
            
              why can't I access it on
            
            
            
              production with my customers data? Right,
            
            
            
              you can get the pushback like that. But please be
            
            
            
              very strict with the access control.
            
            
            
              The role structure in this access control will
            
            
            
              not necessarily match the structure of your organization.
            
            
            
              Pay attention to that. Even if you are a
            
            
            
              senior software engineer, you don't necessarily have to have access
            
            
            
              to everything. Even if someone is the CEO of company,
            
            
            
              they don't have to access all of their AWS
            
            
            
              instances. For example, pay attention to that.
            
            
            
              When you are embracing the cloud
            
            
            
              native and cloud architecture,
            
            
            
              you probably deal with a lot of services,
            
            
            
              services that microservices that talk to each other.
            
            
            
              And here's the thing, I've heard so
            
            
            
              many times that oh, this is an internal service,
            
            
            
              we don't need a special authorization for it because,
            
            
            
              well, only we know about this
            
            
            
              address. This is not true.
            
            
            
              This is actually the easiest way to cause a data
            
            
            
              breach. So secure your API, secure the connection
            
            
            
              between your services and again restrict
            
            
            
              the access. Make sure that authorization is
            
            
            
              in place. Low hanging fruit,
            
            
            
              but super important misconfiguration hurts
            
            
            
              if you use defaults. If you
            
            
            
              store credentials as a plain text, it's a horrible
            
            
            
              threat to security of your product.
            
            
            
              So educate yourself. Like search
            
            
            
              for the best practices, update your servers,
            
            
            
              make sure that if attacker comes to the
            
            
            
              system and breaks into your server, for example,
            
            
            
              they cannot just read their credentials
            
            
            
              for the admin account in plain text. Educate yourself,
            
            
            
              read the best practices and follow them. Sometimes it
            
            
            
              can be annoying because maybe no one will check it,
            
            
            
              but don't overlook it.
            
            
            
              Misconfiguration is one of the biggest security
            
            
            
              threat for your product. The good thing is that you don't
            
            
            
              have to do all of this alone. Lent machines
            
            
            
              work for, I mean apps that can
            
            
            
              scan your system. So the most popular
            
            
            
              solutions are SAS and dust.
            
            
            
              Dust is dynamic application security testing
            
            
            
              tool and it means that it's
            
            
            
              an application that works with
            
            
            
              your front end, your web application, and it just
            
            
            
              sends malicious input, malicious data there
            
            
            
              and sees the response. And if the response is, well,
            
            
            
              bad, then it will inform you, alert you about it.
            
            
            
              The other type of application
            
            
            
              security testing tools is SAS. SaFt is static
            
            
            
              application security testing tool.
            
            
            
              So the thing is that instead
            
            
            
              of dealing with your web
            
            
            
              app, SAS tool just goes
            
            
            
              into your code base and scans it. So it's
            
            
            
              very handy when you're developing things because you can integrate SAS
            
            
            
              into your pr, for example, into your workflow.
            
            
            
              And every time you
            
            
            
              add something new, the SAS tool will run analysis
            
            
            
              and tell you, whoa, wait a minute. You just
            
            
            
              created a potential SQL injection or misconfiguration.
            
            
            
              It is worth implementing, especially if you are
            
            
            
              growing organization. If you're a small startup, then maybe,
            
            
            
              well, you need to navigate between speed
            
            
            
              and security. I understand that. But if you are
            
            
            
              already in a growing organization, the sooner you
            
            
            
              implement those tools, the better,
            
            
            
              because the culture of your organization
            
            
            
              will grow with the security in mind, which is
            
            
            
              very difficult to implement later. And now
            
            
            
              I would like to share something that absolutely blew my
            
            
            
              mind when I became my transition
            
            
            
              from software engineer to security engineer.
            
            
            
              The problem with security is that from
            
            
            
              the product team perspective, the product
            
            
            
              people. So designers, product managers treat security solely
            
            
            
              as an engineering problem. And engineers are
            
            
            
              so focused on delivery and on
            
            
            
              scoping their mvps that
            
            
            
              security features are very often put on
            
            
            
              the shelf called nice to have.
            
            
            
              The other problem with security is security is an
            
            
            
              ocean. It's a vast topic. You have application
            
            
            
              security, infrastructure security, cloud security, you have it
            
            
            
              security. You have human security. In application
            
            
            
              security, you can think, but threats, you can think about vulnerabilities.
            
            
            
              It's an ocean, and you're just one developer and
            
            
            
              you should deliver secure product.
            
            
            
              Right? This is overwhelming,
            
            
            
              but I bring you hope.
            
            
            
              And the hope is that
            
            
            
              we all agree that when
            
            
            
              we think about threats, when we think about the dangers for
            
            
            
              your product, there is an infinite
            
            
            
              amount of threats. It's like an ocean.
            
            
            
              Like you cannot analyze enough and find
            
            
            
              all of the attack vectors because it's such a dynamic
            
            
            
              field. Like every week you get new vulnerabilities.
            
            
            
              Every week you hear about a new data breach.
            
            
            
              So there is an infinite
            
            
            
              amount of threats.
            
            
            
              But all
            
            
            
              of those threats can be assigned
            
            
            
              to one or three categories.
            
            
            
              It is so amazing when you think about,
            
            
            
              so this ocean,
            
            
            
              this ocean, you can
            
            
            
              assign to three categories, and these categories are
            
            
            
              confidentiality, integrity, and availability,
            
            
            
              which are called the CIA triad.
            
            
            
              I could make a joke about spice right now,
            
            
            
              but the only spice I like to think about are Spice Girls.
            
            
            
              So I will skip it.
            
            
            
              What it means the CIA triad it
            
            
            
              means that you can put the whole ocean,
            
            
            
              the whole ocean into three buckets.
            
            
            
              Confidentiality, integrity, availability.
            
            
            
              The whole ocean and three buckets.
            
            
            
              That's amazing. Before I
            
            
            
              jump into how to do it,
            
            
            
              let's establish what confidentiality,
            
            
            
              integrity and availability mean.
            
            
            
              Confidentiality means that we want secrets to
            
            
            
              be secret. If we are exchanging emails,
            
            
            
              I want only you and me to be able to read those
            
            
            
              emails. Integrity means
            
            
            
              that we get what we expect. When you log in to
            
            
            
              your Instagram account, you want to see all of the posts, all of
            
            
            
              the followers, all of the following, right? If suddenly
            
            
            
              you log in and suddenly everything is wiped out,
            
            
            
              that would be suspicious.
            
            
            
              Integrity. We get what we expect.
            
            
            
              Availability means that we can always access the
            
            
            
              information. You can send me an email
            
            
            
              right now. You can send me an email in 10 hours,
            
            
            
              like during the night. It doesn't matter. You always have access
            
            
            
              to your emailing system and you can send an email.
            
            
            
              How is it helpful? How is it helpful?
            
            
            
              Why am I talking about it?
            
            
            
              This is helpful because instead
            
            
            
              of approaching the ocean, when you're thinking
            
            
            
              about your security, instead of being confused
            
            
            
              and looking, oh, should I make sure that this vulnerability
            
            
            
              is fixed so we don't introduce this vulnerability or that vulnerability?
            
            
            
              Instead of that, instead of
            
            
            
              looking at security as an ocean, you can use
            
            
            
              the question. The question which
            
            
            
              is, how can the CAI of this thing be broken?
            
            
            
              Now, I would like you to think, but the project you are working on right
            
            
            
              now, and you got it,
            
            
            
              you can ask the CIA question for it, how can the CAI
            
            
            
              of the project you're
            
            
            
              working on be broken? And it changes completely the
            
            
            
              way you can approach security. Because instead of being like,
            
            
            
              oh my God, I don't know what to think about you look at
            
            
            
              the thing that you're building and based
            
            
            
              on your building on what you're building, you're asking the question,
            
            
            
              it is amazing because
            
            
            
              it will work for you. Whatever technology you
            
            
            
              use, whether you're
            
            
            
              front end, back end, cloud,
            
            
            
              no cloud, whether you're, I don't
            
            
            
              know, junior me, senior staff director,
            
            
            
              product manager, designer. You can always ask
            
            
            
              this question. And of course, based on what
            
            
            
              you are working on, it won't be just one question.
            
            
            
              You will ask questions for each of the categories for confidentiality,
            
            
            
              integrity and availability.
            
            
            
              For confidentiality, you can ask, who can
            
            
            
              see this resource? This is the most basic question.
            
            
            
              How do we store credentials?
            
            
            
              Do we use default credentials or
            
            
            
              credentials? Easy to guess. What do we stored in the logs?
            
            
            
              Integrity? Who can create, update and delete a
            
            
            
              resource? Is there any way that
            
            
            
              a malicious actor sends us malicious code or
            
            
            
              malicious data? Via form. Like what happens then?
            
            
            
              Is there any way to see a malicious actor
            
            
            
              just deleting all the resources of our customer?
            
            
            
              Is there a way to prevent that availability?
            
            
            
              Of course, the most obvious question
            
            
            
              is like is this endpoint rate limited?
            
            
            
              But also as developers, we introduce so
            
            
            
              many dependencies between our systems. So what happens
            
            
            
              when a product that we rely on is down?
            
            
            
              Does it mean that the whole product is down or some capabilities
            
            
            
              are limited? Asking CI questions
            
            
            
              will help you design with security
            
            
            
              in mind. And the
            
            
            
              question is when should you do it? Like you know what to
            
            
            
              do, you know that you should ask the question, but when should
            
            
            
              you do it? I cannot tell you
            
            
            
              about it without telling you about shifting security left. Shifting security
            
            
            
              left is this new approach to security when we
            
            
            
              look at the SDL fee. So software development
            
            
            
              lifecycle, it is lifecycle if it's a circle of life.
            
            
            
              But here's the problem. I don't know about you, but from
            
            
            
              my decade experience of developing
            
            
            
              software, this is never a cycle. But from my experience,
            
            
            
              usually software development timeline
            
            
            
              happens. So instead of going around,
            
            
            
              going round, you just go analyze, design, develop, test,
            
            
            
              maintain, release, basically, and you move
            
            
            
              on to a next project. So shifting security left looks at it
            
            
            
              and says, well look, remember the story I told you at the beginning,
            
            
            
              like when we had security review in the last,
            
            
            
              basically last sprint of the
            
            
            
              project, shifting security left is
            
            
            
              like, no, we ain't going to do it. This is not a good approach.
            
            
            
              Let's shift security left, which means let's shift security
            
            
            
              to the basically design phase. And why
            
            
            
              is it very powerful? Because when
            
            
            
              you have code, when you already have design in place,
            
            
            
              every change will be very expensive, every change will be
            
            
            
              time consuming, every change will be stressful.
            
            
            
              But if you design, if you
            
            
            
              only have some sketches, then changing your
            
            
            
              system is very easy because you just need to move
            
            
            
              some lines. So shifting
            
            
            
              security left and designing with
            
            
            
              security in mind and for security will help you immensely
            
            
            
              to build better software and to prevent you from much more
            
            
            
              stress and costs. And here's the thing,
            
            
            
              how do you implement the CI Triad in your organization?
            
            
            
              So first of all, present it to your peers. You can send them this
            
            
            
              presentation. You can just email me if you want. I can tell
            
            
            
              your company about it. It's not a problem. I would love to help,
            
            
            
              I would love more people to use it because it's so easy yet super
            
            
            
              powerful. You discuss it with your team, you see
            
            
            
              how can you fit in the CIA triad and those questions in
            
            
            
              the design phase. And you make it a part
            
            
            
              of your process, make it a part of your process
            
            
            
              and make it visible. Which means, for example,
            
            
            
              you look at templates of, I don't know, the documentation that
            
            
            
              you need to write for each project. Maybe it's a solution.
            
            
            
              Brief enhancement proposal, request for comments
            
            
            
              and you add security section there. Exactly that.
            
            
            
              Like how the
            
            
            
              CIA of this can be broken. This is the question.
            
            
            
              You can add more if you're nice, but basically
            
            
            
              you inject security into your product development
            
            
            
              process and
            
            
            
              that's basically it. And it will help
            
            
            
              you develop better solutions for your customers.
            
            
            
              And look, there is no week
            
            
            
              when we don't hear about a new breach,
            
            
            
              about new security vulnerability.
            
            
            
              We are in this moment, in this magical moment in history
            
            
            
              when we as an industry need to agree
            
            
            
              that the time of move fast and break things is over
            
            
            
              and we held too much responsibility and
            
            
            
              our products influence lives of
            
            
            
              so many people that we need to take responsibility and we
            
            
            
              need to create better, more secure software
            
            
            
              and using the CIA triad. Any tips
            
            
            
              that I share with you today is the right good step.
            
            
            
              Enjoy the rest of the conference. Thank you
            
            
            
              for listening to me and I hope this presentation
            
            
            
              was helpful. If you have any comments or questions,
            
            
            
              please reach out to me on LinkedIn. Thank you.