Open Source Security
Using Open Source
Learn about Microsoft’s approach for mitigating security risk when using Open Source Software:
Who Wants a Thousand Free Puppies? Managing Open Source Security in the Enterprise. (Presented at LocoMocoSec 2019)
Benefits of Open Source and Practices for Reducing Risk
-
Benefits of Open Source
There are many benefits to using open source software as part of your development process, a few of which include:- Increased time to market. Create software faster by connecting existing components together, rather than implementing them all from the ground up.
- Higher quality. All software components may contain defects, but focused effort on specialized software components often results in higher quality than having many engineers solving the same problems many times in isolation.
- Community. By contributing new features, reporting bugs, or in general interacting with the open source projects used, you're sharing in both the costs and benefits of the code base.
At Microsoft, we recognize the benefits of using open source responsibly when developing products and services and encourage our customers and the larger technology community to do the same. -
Security Risks of Open Source
Open source, like any software, can contain security defects, which can become manifest as vulnerabilities in the software systems that use them. Since source code is generally available for open source components, it can often be easier for security researchers to identify new vulnerabilities, and while most researchers will follow responsible disclosure methods when reporting issues to the maintainer, there is a risk that some vulnerabilities will become weaponized and used to attack systems that use them.
Exacerbating this, open source components are generally released as needed, often with little to no advance notice to the user community, so when a vulnerability is fixed and a new release is published, there is often a lag until users can upgrade to the new version; this lag can give adversaries time to create and launch an exploit. As a result, it's very important to update open source components in a timely manner, especially when they contain security fixes. -
Thinking about Open Source
Software organizations typically interact with the open source community in a few different ways:
- Use—integrating open source components within an application.
- Distribute—Releasing an application or component under an open source license.
- Collaborate—accepting external contributions (for example via pull requests) to distributed open source components.
- Contribute—Submitting patches or pull requests to external open source components.
The first item, “use”, presents the clearest security risk to most organizations due to how vulnerabilities in those components can affect the security of the systems that use them. - Use—integrating open source components within an application.
Practices

Inventory Open Source

Perform Security Analysis

Keep Open Source Up to Date

Align Security Response process
Practice #1—Inventory Open Source
Practice #2—Perform Security Analysis
- Check for public vulnerabilities—ensure the open source components do not contain publicly-known vulnerabilities, such as those with reported CVEs or with vulnerabilities described in other public resources.
- Use commercial security intelligence—use additional vulnerability data sources (such as from data vendors) to augment the public vulnerability data.
- Perform static analysis—use static analysis tools to validate that the open source components do not contain unreported security vulnerabilities. Report any newly-identified vulnerabilities to the open source project's author so it can be remediated.
- Perform comprehensive security reviews—in addition to the prior points, perform a comprehensive security review of the open source component.
- There is no requirement for an open source project to report vulnerabilities up centrally. Details may exist in a GitHub issue, change log, or commit message, but would not be easily discoverable.
- The vulnerability may have been found by an attacker, or a security researcher that is unwilling to publicly disclose the issue.
- The project author fixing a bug may be unaware that it's actually a vulnerability, and so has no reason to report it.