|
1 | 1 | # Software identification |
| 2 | +One of the biggest and least appreciated challenges for managing open source |
| 3 | +and other third-party software is to identify software that you use in a |
| 4 | +standard way that will be recognized by your suppliers, customers and staff. |
| 5 | +This challenge is particularly painful in the domain of software supply chain |
| 6 | +security where all participants need to use a common software identifier in |
| 7 | +order to accomplish any other tasks. |
2 | 8 |
|
3 | | -**Identify software components and packages** |
| 9 | +Commercial software suppliers, of course, each have a set of software |
| 10 | +identifiers for their own products but these only work within their |
| 11 | +particular customer base. There have been two prominent attempts to |
| 12 | +standardize software identifiers for proprietary software - CPE (Common |
| 13 | +Platform Ennumeration) and SWID (SoftWare IDentification). Neither has been |
| 14 | +successful and neither was suitable for open source software which now |
| 15 | +represents approximately 80% of software in use according to most surveys. |
4 | 16 |
|
5 | | -**Identify software dependencies** |
| 17 | +The AboutCode team identified this problem in 2018 in the context of working |
| 18 | +on our ScanCode and VulnerableCode projects. The solution was and is the PURL (Package-URL) specification which has become the most widely used software |
| 19 | +identifier for open source software. PURL is now an Ecma standard - [ECMA-427](https://ecma-tc54.github.io/ECMA-427/), and it is on a fast track to become |
| 20 | +an ISO standard. |
6 | 21 |
|
7 | | -**Consume or produce SBOMs** |
| 22 | +Our team also identified a related problem - after you have a standard way |
| 23 | +to identify software packages, what is a standard way to compare software |
| 24 | +package versions to determine whether a reported vulnerability affects the |
| 25 | +version that you use. Our solution is the VERS (VErsion Range Specifier) |
| 26 | +specification which will be submitted to Ecma as a standard in 2026. |
8 | 27 |
|
9 | | -**Analyze containers** |
| 28 | +See https://package-url.github.io/www.packageurl.org/ for more |
| 29 | +information about PURL and VERS. |
10 | 30 |
|
11 | | -**Match binaries to source** |
| 31 | +## Identify software packages and components |
| 32 | +For the basic use case of identifying software packages and components, |
| 33 | +AboutCode offers the DejaCode and ScanCode tools, the PURLDB database and the PURL standard. |
| 34 | + |
| 35 | +- [DejaCode](https://dejacode.readthedocs.io/en/latest/) is an enterprise-level |
| 36 | +application to automate managing your software assets including license |
| 37 | +compliance and security vulnerabilities. DejaCode embeds ScanCode.io for core |
| 38 | +scanning functions and uses VulnerableCode data for vulnerability reporting. DejaCode includes a database of licenses, components and packages, and SBOMs. |
| 39 | +It is also where you can set and apply your license and vulnerability risk policies. DejaCode is designed for integration with GitHub, GitLab, JIRA and other software development platforms. You normally run DejaCode as a Docker |
| 40 | +container. |
| 41 | + |
| 42 | +- [ScanCode.io](https://scancodeio.readthedocs.io/en/latest/) is an |
| 43 | +application to scan codebases, packages, containers or other software collections. ScanCode.io uses a specific pipeline for scanning or analyzing |
| 44 | +each software target and provides a database with UI and API access to your scans. ScanCode.io is usually a good place to get started in the AboutCode ecosystem. You normally run ScanCode.io as a Docker container. |
| 45 | + |
| 46 | +- [ScanCode Toolkit](https://scancode-toolkit.readthedocs.io/en/stable/) is a |
| 47 | +library (and command line utility) that provides the scanning engine for |
| 48 | +ScanCode.io. Its primary functions are to identify: |
| 49 | + - Software licenses based on matching license notices and texts to the |
| 50 | +[ScanCode LicenseDB](https://scancode-licensedb.aboutcode.org/help.html) |
| 51 | + - Software origin based on copyright or author notices, email addresses, URLs and other clues |
| 52 | + - Software codebase structure including directories and files with exentensive file information such as size, MIME type, file type, programming language, |
| 53 | + checksums (MD5,SHA1,SHA256,SHA512) and more |
| 54 | + |
| 55 | +- [PURLDB](https://purldb.readthedocs.io/en/stable/) provides tools to create and manage a database of package metadata keyed by PURL. You can use PURLDB |
| 56 | +data via API to enrich your package and SBOM data in DejaCode, ScanCode.io., |
| 57 | +or your own application. The AboutCode team also currently hosts a public [PURLDB](https://public.purldb.io/api/) service with REST API. |
| 58 | + |
| 59 | + |
| 60 | +## Identify software dependencies |
| 61 | + |
| 62 | +## Consume or produce SBOMs |
| 63 | + |
| 64 | +## Analyze containers |
| 65 | + |
| 66 | +## Match binaries to sources |
12 | 67 |
|
0 commit comments