The SBOM Lifecycle

The SBOM Lifecycle

Software supply chain attacks have grown exponentially over the last three years:  malicious packages, package manager corruption, continuous delivery pipeline attacks, dependency confusion, zero days in open-source software and more.  This is driving many organizations to look for better visibility across their software supply chain. 

Let’s dive in a bit to see why the problem is growing and some potential solutions.

Application complexity is increasing

The reality is that modern applications are complex and dynamic, and therefore hard to secure. They use programming languages that run entirely in the browser, they talk directly to their dependencies on the internet and they use technologies like containers, serverless and public cloud. All of these bring their own challenges, so we need visibility into all these other application components and dependencies as well. What third-party APIs and public cloud components is it using? Is it using an identity provider like Auth0 or Cognito? What infrastructure is required to make the app run? All of these things need to be understood to really be able to better represent what is in an application and how to secure it.

SBOMs can help address software supply chain risks

One way to address the risks inherent to the complex applications we are building is to use “Software Bill of Materials” also known simply as “SBOM”.  At its simplest, a SBOM is a list of all the different component parts of an application. This typically includes several types of information about each component: Its name, who supplied the component, what license it uses, the version number, any known vulnerabilities, and a list of all the component’s dependencies.

Most SBOM tools that exist right now, focus on showing customers some of the open-source libraries that they are using in their applications.  Moreover, most SBOMs are stand-alone JSON documents and by themselves don’t provide much value.  Even worse, many SBOMs are created once and then never updated so they quickly become out of sync with the actual application they are supposed to describe.

sbom-lifecycle-arrow

What’s in the SBOM lifecycle?

Most SBOM advocates believe that SBOMs should be automatically created during deployment, and should be as descriptive of the actual application as possible.  To do this, organizations need to have a process that identifies applications, creates SBOMs and then makes them available for the business to gain value from.  We believe the best way to do that is to create a SBOM lifecycle policy.

There are five stages in the SBOM lifecycle: Asset discovery, application data analysis, SBOM creation, SBOM storage and SBOM searchability.

Let’s go through each of these stages one at a time.

Asset discovery

You can’t onboard what you don’t know about. This stage is all about helping the customer find the applications they need to ultimately provide an SBOM for, which hopefully, is all of them.  Most companies only know about 50% of their public-facing application names.  The other 50%?  Well, that’s the problem. Finding assets with domain names like app.niftybank.org and api.niftybank.org seem obvious but how do you find the less obvious apps? 

asset-discovery

Existing asset discovery or attack surface mapping tools can help find assets but what do you do with the list that these tools have generated?  Most of those tools don’t have any SBOM functionality, so how do you get the list of assets into your SBOM creation pipeline?  It’s better if your solution can find your assets, show them to you and allow them to create a SBOM from that same workflow.

Application data analysis

In this stage, the data that is needed to create an SBOM is collected about the target application. Historically, SBOMs got this info from package manifest files, but now, that’s typically not enough.  Modern SBOMs are able to incorporate data from cloud providers, third-party services and SaaS solutions in addition to source code.

SBOM creation

In this stage, the actual SBOM file is created and will include all the relevant application data.  Typically, you will want this to happen every time your engineering teams deploy a new version of the application.  After all, if you aren’t building a SBOM every time you deploy a new version, is your SBOM going to match the state of your production app?  The only thing worse than no SBOM, is a *wrong* SBOM.

sbom-data-analysis

SBOM storage

SBOMs need to be stored somewhere centrally and protected with a rich authorization layer.  This centralized storage can be an S3 bucket or other secure managed file server, but make sure that they’re stored in an encrypted manner! Otherwise, you might run afoul of compliance requirements!

sbom-cloud-storage

SBOM searchability

Finally, customers need to be able to search across some or all of their SBOMs. Ultimately, all the steps before this one led to enabling this functionality.  This searchability is the most important aspect of the SBOM process because this is the central source of truth. This is how you look up vulnerable software in your environment and find which applications to tackle.

search-sbom

Imagine if you had this functionality back in December 2021 when the Log4j zero-day dropped!  Wouldn’t it have been nice to go to a central place you could go and say “hey, tell me all the places that Log4j is being used and what versions they are!”

Tying it all together

Building a complete SBOM lifecycle can be a challenge, but in the end, the value that it provides to organizations is enormous.  Simply having the ability to quickly find all the software and application components in your estate of apps is huge.   But even better, being able to query that data for vulnerable components could save organizations millions of dollars in lost productivity.  

comprehensive-sbom-securestack

Native SBOM lifecycle

You can build your own SBOM lifecycle or alternatively, SecureStack automates the whole process from end to end.  Our platform delivers all stages of the SBOM lifecycle in a fully integrated solution that is incredibly easy to onboard. Our platform provides an end-to-end SBOM solution that helps organizations address software supply chain risks holistically.  We find all your application assets, automate the creation of your SBOMs, store them for you in a secure central repository, and make them searchable.

Our role-based access control means you can give your security and engineering teams access to those pieces of the SBOM lifecycle that they need.

 

 

 

See how it works!

 

Paul McCarty

Founder of SecureStack

DevSecOps evangelist, entrepreneur, father of 3 and snowboarder

Forbes Top 20 Cyber Startups to Watch in 2021!

 Mentioned in KuppingerCole's Leadership Compass for Software Supply Chain Security!

 

SecureStack is sponsoring NDC Sydney 2022!

SecureStack is super excited to be a gold sponsor for NDC Sydney 2022.  NDC is a global high-end conference for software developers.  We will be on the main floor right behind the registration area at booth #8.  Our CEO Paul McCarty will be there as will some of our customer success engineers.

We will be giving away a brand new super rare “Back to the Future” DeLorean LEGO set while we are there!  To be added to the draw all you have to do is create a free account in the SecureStack web portal (https://app.securestack.com) and create at least one managed app.

The drawing will be held at 2:50pm on Friday the 14th.  You must be there to win.

You can learn more about NDC at https://ndcsydney.com/

 

back-to-the-future-delorean-lego

 

Paul McCarty

Founder of SecureStack

DevSecOps evangelist, entrepreneur, father of 3 and snowboarder

Forbes Top 20 Cyber Startups to Watch in 2021!

 Mentioned in KuppingerCole's Leadership Compass for Software Supply Chain Security!

 

What is a SBOM?

What is a SBOM?

One of my friends messaged me on LinkedIn today and asked “What is this SBOM you keep talking about?”  I realized that he’s right and I should probably explain what an SBOM is.  So, let me start by defining the acronym: SBOM refers to a “Software Bill of Materials”.

An SBOM is a complete inventory of all the software and dependencies of an application and is typically delivered in the form of a JSON or XML document.  Although, for some vendors, the “SBOM” is really just their web portal and not a deliverable file.  This matters as many customers are looking to provide SBOMs for compliance requirements made by partners or customers.  In most cases, the requestor is looking for a file to be delivered, and at some point, inspected for accuracy.

Why is an SBOM critical?  Well, one reason is that they provide visibility into what is actually *inside* an application, but it also helps identify the software supply chain underpinning a particular application. 

Wikipedia defines an SBOM this way:
“A software bill of materials (SBOM) is a list of components in a piece of software. Software vendors often create products by assembling open source and commercial software components. The SBOM describes the components in a product.  It is analogous to a list of ingredients on food packaging: where you might consult a label to avoid foods that may cause allergies, SBOMs can help organizations or persons avoid consumption of software that could harm them.”

Why is everybody talking about SBOM now?

The need for something like an SBOM specification has existed for a while now but has become more necessary in the last two years driven by several high-profile security incidents. In particular, the SolarWinds incident in early 2020 as well as ongoing issues with NPM have made it obvious that there needed to be more governance around the software supply chain than there was.

Applications have become increasingly complex which in turn makes securing and managing those applications more difficult. Cloud-native services and open source make up a growing part of the average modern web application. Software engineering teams don’t necessarily understand how adopting these new technologies or services changes the threat model for their applications. The SBOM is meant, in part, to at least make these components visible to the naked eye so teams can understand the scope and breadth of their applications.

But modern applications are complex and include dependencies outside of the libraries that traditional SBOMs cover. Modern apps use multiple languages, third-party APIs, cloud-native services, and a lot more. Unfortunately, most SBOMs don’t address any of these additional dependencies or the vulnerabilities in them either. So we need to expand the idea of an SBOM to include all of the other resources and dependencies in

The government gets involved

Risks against the software supply chain are increasing. One of the problems historically has been a lack of visibility into how your vendors or partners create the software products you consume. The Solarwinds hack and the ongoing struggles for package managers like NPM prove that this part of our ecosystem needs better protections.

cisa-logo

The Biden administration passed an executive order in 2021 entitled “The Executive Order on Improving the Nations Cybersecurity”. This executive order requires that any companies wishing to sell to the US government must meet SBOM requirements.

executive-order-banner

The UK government is thinking about how to create supply chain protections including SBOMs.  The UK government is seeing opinions and looking to build a working group which you can read about here.

It is reported that the Australian government is going to mandate SBOMs for critical infrastructure organizations later this year.  This will be a multi-stage process and will eventually mandate SBOMs for organizations of a certain size or in specific industries.  This is an important step and will force many Australian organizations to learn about and implement SBOMs.

What’s in an SBOM?

This is a tough question because not all SBOM tools agree on what should be in an SBOM.  At its simplest, an SBOM is a list of all the different component parts of an application.  So think of this as an index of all the dependencies built from a package manifest file.  That’s really pretty simple and doesn’t really offer any additional functionality or benefit of simply using the package manifests themselves to derive this information.  This is why most modern SBOM specifications include more info than just the package manifest.  Things like the dependencies of a package should be understood and cataloged too.  Many developers don’t realize how many additional pieces of software are being pulled into their projects because of dependencies, so this function is important.

I think most modern SBOM specifications agree on many things that should be in an SBOM.  This typically includes several types of information about each component:

  • Component name
  • Supplier or vendor of the component
  • Software license type
  • Component version number
  • Known vulnerabilities for component
  • Transitive dependencies to other software

Defining these core data points about each application composition object means that engineering teams are in a better place to be able to mitigate or remediate issues in these components. Tracking this information over time means that a properly built SBOM will catch and make visible any changes that can adversely affect the application.

How do you create an SBOM?

Because there are several different formats for SBOMs organizations will need to make a decision on which they will support internally. Or, alternatively, they will need to have the right data in place to create any format they are asked for.

Unfortunately, there is no consensus on what an SBOM should look like or include. There are LOTS of suggestions, and vendors describing their way as the only way to create and handle SBOMs. The reality is that there are at least 3 different formats for SBOMs:

It’s important to note here that the SBOM specification or format, and the tool that is actually creating the SBOM are totally different.  The former is the agreement of what should go into an SBOM and the latter is what is actually *put* in the SBOM.

Use Cases for SBOMs

The traditional use case for a SBOM is to provide a list of ingredients for an application. Typically, a software engineering team will own that use case and create SBOMs to store them for future reference.  However, the idea of what a SBOM is has evolved.  SBOMs have become less of a point-in-time snapshot and become more dynamic.  SBOMs should be generated everytime an application is built and deployed.  This allows organizations to track how their applications are changing over time with more granularity.

Engineering teams and security teams will have different use cases depending on what those teams roles are.   In my conversations with security architects, their need for SBOMs is different.  One of the best infosec use cases will involve giving infosec teams a searchable index of all applications so they can search it anytime there is a new software vulnerability disclosed.

Remember back in December of 2021 when the log4j vulnerabilities went public and the world freaked out right before Christmas.  Teams spent days searching for applications that had log4j in them.  Imagine instead if you had a central repository of SBOMs and could simply search them for log4j and get back a concise list of where log4j was used and what version it was.  I can tell you from personal conversations I’ve had that would have saved thousands of hours of work by security and engineering teams globally.

SBOMs will evolve to become “Application Bill of Materials”

Software bill of materials (SBOMs) are a great way of capturing the software components and libraries that an application uses at a specific point in time. This gives the consumer of the software assurance that it is secure and built well.

Unfortunately, SBOMs don’t really capture the complexity of the modern application as those applications use multiple languages (monorepos, SSR), new types of infrastructure (Kubernetes, containers, serverless), third party services (Auth0, Stripe, analytics) and use cloud native resources from AWS, Azure and others. So we need to expand the idea of an SBOM to include these new components and evolve into an “Application Bill of Materials” or ABOM.

 

Paul McCarty

Founder of SecureStack

DevSecOps evangelist, entrepreneur, father of 3 and snowboarder

Forbes Top 20 Cyber Startups to Watch in 2021!

 Mentioned in KuppingerCole's Leadership Compass for Software Supply Chain Security!

 

SecureStack Organizations is now available

SecureStack Organizations is now available

The SecureStack team has been working on this release for months as we were introducing several new concepts which meant we had to rearchitect many parts of the platform.  But most importantly we are introducing several new pieces of functionality in this release.

Role-based access control

The first of these new features is our new Organizations functionality which allows you to create a SecureStack Organization and share access to that Org with your teammates, partners, and compliance bodies.  Initially, the Organization functionality will allow the creation of users with 3 roles:  Owner, Admin, and User.  However, over the next two months, we will introduce even more granularity around access controls.  As an example, we want you to be able to share just the compliance report for one application with an auditor or partner and not the whole application.

add-users-component

Software bill of materials (SBOM)

We’ve been working on this feature for a long time and this feature is incredibly important to us.   The reason it’s so important is that we don’t believe that the SBOM tools that exist today are giving customers what they really need, which is a comprehensive “ingredients list” of their software.  Instead, existing tools focus on showing customers *some* of the open-source libraries that they are using in their applications.  Unfortunately, that’s like showing someone a wheel when they really want to see the whole car:  its just a small part of a larger, more complex thing.

securestack-sbom

Continuous Compliance

SecureStack is the first platform to provide its customers with real-time compliance reporting on their software development lifecycle (SDLC).  Every time your CI/CD pipeline is run we take a snapshot of the application’s compliance exposure.  SecureStack can map your SDLC to ISO27001, SOC2, CIS and the Australian ISM.  

complete-security-coverage-startups

SecureStack provides security coverage across the whole of your SDLC

Our platform helps you protect your most valuable asset:  Your source code.

SecureStack is easy to use as it’s a SaaS-based platform so you can be up and running in less than 3 minutes with complete coverage.

 

 

Paul McCarty

Founder of SecureStack

DevSecOps evangelist, entrepreneur, father of 3 and snowboarder

Forbes Top 20 Cyber Startups to Watch in 2021!

 Mentioned in KuppingerCole's Leadership Compass for Software Supply Chain Security!

 

LastPass hacked and source code stolen

LastPass hacked and source code stolen

LastPass was hacked and their source code was stolen.  What can we learn from this?

LastPass, just sent an email to its customers saying that it has been hacked.  Again.  LastPass has publicized that it’s been hacked at least 4 times: in 2011, 2015, 2021, and now in 2022.  In addition, there have been a number of other security events where security researchers have identified vulnerabilities in the LastPass platform that could have led to data loss or password compromise.  You can see the list of historical security incidents here.  This time, the attack vector is different than previous incidents, so let’s drill into what happened.

What we know so far:

  • LastPass alerted its customers yesterday that there had been a security incident and that they had hired an incident response company.  We don’t know which IR firm they’ve hired.
  • The attack happened two weeks ago and targeted its development environment.
  • LastPass is saying that a single developer’s account was compromised and that source code and some “proprietary LastPass technical information” was accessed.
  • LastPass says that no passwords or vault material was accessed
lastpass-hack-email
You can find the LastPass official blog post here:  https://blog.lastpass.com/2022/08/notice-of-recent-security-incident/

Other than that, there are no other details, which is a bit concerning.  But, let’s take this at face value right now.   According to the LastPass press release no passwords appear to have been stolen or accessed.  This is a good thing!  Unfortunately, this type of attack is potentially more dangerous than a data breach where a set of point-in-time passwords was stolen.  Let me explain why.

How could this be worse than my passwords being stolen?

This attack appears to have targeted the LastPass development environment where the company writes, stores, and manages its source code.  It’s essentially where all the intellectual property for a software-based company is stored.  And the reality is that most companies are software-based now, with most of their revenue and growth tied to their software-based systems.  This centralized storage of a company’s intellectual crown jewels is a very sexy target for criminals.  Unfortunately, as we’ll see below, this core IP is not as protected as other parts of the IT infrastructure.

developer-logo

Developers are the best place to target it you want to own someone

Software engineers have access to the source code for the platforms they work on.  For LastPass that access probably includes how things like encryption of passwords are performed, when MFA challenges are performed and how LastPass detects anomalies.  Thes are core fundamentals of how the LastPass Vault works.

So imagine if you had access to that source code and you could change one small thing that sent all the passwords to a remote API endpoint you owned?  Or worse, maybe you sabotaged the encryption algorithm to give yourself a backdoor so you could easily decrypt any master passwords stored with LastPass. Or more realistically, if you stole the source code and didn’t have the opportunity to add anything malicious to it, you would still have access to how core LastPass functions worked because you had the source code.

All of that is speculation, and hopefully, that’s not what’s happened with LastPass this time.  But the reality is that access to source code is one of the most sensitive things you can get, and yet we don’t generally protect it very well.

Why are developers so easily targeted?

Most source code management (SCM) platforms use someone’s work email for the username that they use to interact with the SCM platform.  This is common practice as it’s the easiest way to manage a large number of devs instead of letting them choose their own usernames.  However, this means that if you know a developer’s email you have half of their login credentials already.  This is made worse by the fact that many orgs don’t sync their SCM logins with Active Directory so the management of those SCM creds is a manual process.  Also, the use of password controls mandated by AD is ignored by SaaS providers like Bitbucket, GitLab, and GitHub as they are managed independently.

Unfortunately, this common practice means that developers are constantly being targeted by automated phishing campaigns that can be very effective as the logins themselves are easy to copy.  The one to the right uses a domain that is similar to GitHub but is in fact malicious.

fake-github-phishing-login

Okay, if it’s so easy to phish developers, what other security controls can we use?

The reality is that developers don’t typically use any other security controls other than a username and password, which we’ve just shown are under constant attack.  The centralized versioning system that most developers use is called Git and it has several security functions built into it.  Unfortunately, most development teams don’t take advantage of these security features, so if you can successfully phish them you are in.  I can’t say this is how the LastPass incident went down, but it’s certainly possible.

Contrary to what you might have heard, security is relatively easy to add to developers workflow

There are many security controls that software engineers can use to secure how they write, test and deploy code.  Even better, many of them are simple, easy to implement, and are automatable.  Why then do so few devs actually use these security controls?  In my experience, it’s a cultural thing.  They aren’t incentivized as software engineers to prioritize security, so they don’t.  We need to change this culture and instead help devs understand that if they use these security controls, we are all better off.

devsecops-playbook-infinity-loop
Earlier this year I wrote and published the DevSecOps Playbook, which is an open-source step-by-step guide to implementing DevSecOps for any type and size company.

You can find the Playbook at: https://github.com/6mile/DevSecOps-Playbook

The DevSecOps Playbook is 58 controls and is very detailed and prescriptive.  If you are looking for some simpler tips you can use to protect your software engineers from the same thing happening to you that happened to LastPass, we’ve got you covered!

6 easy things to increase source code security

Enable MFA for SCM

Bitbucket, GitHub, and GitLab all support the use of MFA for logins.   This simple security control means that there’s more than just a crappy password between your source code and attackers.  Even better, if you use GitHub or Bitbucket or GitLab for SSO to other platforms the requirement to use MFA at login will propagate across automatically, providing security there too.

The obvious limitation with this method is that you are only going to get an MFA challenge when you log in, so doesn’t provide any security when you are actually interacting with code (pulls, fetches, clones, etc).  That’s why the next option is particularly important.

Use SSH keys to interact with SCM

There are two protocols that are supported when you interact with source code in your SCM.  The default is HTTPS which is encrypted but doesn’t offer any additional security.  The other option is to use SSH for transport which requires SSH keys as it’s PKI based.  This is significant as you can change, expire, and update your keys based on company requirements.

My team has gone even further, as we use an app that manages SSH private keys behind an MFA challenge.    This means that each time we push code we get a challenge on our mobile devices.  Combining this control with the first one (MFA) adds a layer of security that is very powerful.  You can see how to add SSH keys to your GitHub account here.

Signed commits

When an engineer makes an important change to source code they will “commit” that code to version control so it’s protected.  Unfortunately, by default git just keeps track of the author via the email address of the author which can be easily faked.  If you want to verify that the person pretending to be linus@linux.org really is Linus Torvalds, then you need to sign your commits with GPG. It takes 60 seconds to set up and then can be easily automated so that every commit is signed.  Find out how to sign commits here.

Scan your source code for vulnerabilities

While this control wouldn’t have stopped the LastPass hack, it’s still a super important security control.  Good engineering teams will use software composition (SCA), secret scanning tools, and static analysis (SAST) code scanning solutions in their local environments.  It’s super important to scan source code for issues when it goes through your CI/CD pipelines, but it’s important to do on your developer’s laptops too.  Git provides an automated function to do this when you commit code with something called a pre-commit git hook.   Unfortunately, a lot of engineering teams are NOT running security tooling on their laptops so there is no way to stop security issues or malicious code from getting into the centralized source control system.  Yes, you can eventually remove it there too, but it’s a lot harder to do than if you stopped it before it got there.  I like to use the analogy of someone poisoning a city’s water supply.  It’s a lot easier to stop them from pouring the poison into the lake than it is to take the poison OUT of the lake.

Sync your SCM provider to AD

One of the common themes I see is that enterprise orgs will use a cloud-based SCM like GitHub or Bitbucket, but not connect their active directory to it (usually because of cost).  Because they aren’t linked, the users in the SCM platform must be managed separately.  This causes challenges as users have to manage two separate sets of credentials, one for AD and one for SCM.  It also means that accounts are often out of date with people still having accounts in SCM when they no longer work for the company.  Onboarding, off-boarding, password resets, and everything else is more complicated in this scenario.

Security training for your software engineers

Because of the unique security challenges presented to developers, they need specialized security training.  That’s why we use partners that teach how to create more secure code, but also how to secure the systems they use to manage the code.  Reach out to me if you would like an intro to one of our partners that does this.

coverage-sdlc

SecureStack provides automated security for your software engineers

Our platform helps you protect your most valuable asset:  Your source code.

SecureStack is easy to use as it’s a SaaS-based platform so you can be up and running in less than 3 minutes with complete coverage.

 

Paul McCarty

Founder of SecureStack

DevSecOps evangelist, entrepreneur, father of 3 and snowboarder

Forbes Top 20 Cyber Startups to Watch in 2021!

 Mentioned in KuppingerCole's Leadership Compass for Software Supply Chain Security!