Skip to content

Commit f5b508b

Browse files
committed
1st draft of GS-Software Identification
Signed-off-by: Michael Herzog <mjherzog@nexb.com>
1 parent 2c37b21 commit f5b508b

1 file changed

Lines changed: 60 additions & 5 deletions

File tree

Lines changed: 60 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,67 @@
11
# 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.
28

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.
416

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.
621

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.
827

9-
**Analyze containers**
28+
See https://package-url.github.io/www.packageurl.org/ for more
29+
information about PURL and VERS.
1030

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
1267

0 commit comments

Comments
 (0)