You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: website/docs/getting_started/getting_started-security.md
+26-1Lines changed: 26 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,32 @@
1
1
# Security
2
+
Software security is a very broad domain. The AboutCode commmunity has focused
3
+
on the identification, reporting, triage and remediation of open source
4
+
vulnerabilities because this fits with our core expertise in software
5
+
identification and SCA (Software Composition Analysis). We are, however, expanding our scope for software security with the recent addition of the **atom** and **chen" project to the AboutCode community, but most of our tools and data are related to software vulnerabilities.
6
+
See also [atom and chen join AboutCode](https://aboutcode-org.github.io/www.aboutcode.org/blog/atom-chen-aboutcode).
7
+
8
+
Note that our tools and data for software vulnerabilities expect that software
9
+
will be identified with a [PURL (Package-URL)](https://package-url.github.io/www.packageurl.org/docs/purl/purl-spec-introduction).
2
10
3
11
## Identify vulnerabilities
4
-
- VERS
12
+
For the basic use case of identifying software vulnerabilities, AboutCode
13
+
offers the VulnerableCode tools and data, the DejaCode application, ScanCode tools, and the PURL standard.
Copy file name to clipboardExpand all lines: website/docs/getting_started/getting_started-software-identification.md
+86-39Lines changed: 86 additions & 39 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,8 +17,10 @@ represents approximately 80% of software in use according to most surveys.
17
17
## Package-URL
18
18
19
19
The AboutCode team identified this problem in 2018 in the context of working
20
-
on our ScanCode and VulnerableCode projects. The solution was and is the PURL (Package-URL) specification which has become the most widely used software
21
-
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
+
on our ScanCode and VulnerableCode projects. The solution was and is the PURL
21
+
(Package-URL) specification which has become the most widely used software
22
+
identifier for open source software. PURL is now an Ecma standard - [ECMA-427]
23
+
(https://ecma-tc54.github.io/ECMA-427/), and it is on a fast track to become
22
24
an ISO standard.
23
25
24
26
Our team also identified a related problem - after you have a standard way
@@ -27,26 +29,33 @@ package versions to determine whether a reported vulnerability affects the
27
29
version that you use? Our solution is the VERS (VErsion Range Specifier)
28
30
specification which will be submitted to Ecma as a standard in 2026.
29
31
30
-
See the [Package-URL website](https://package-url.github.io/www.packageurl.org/) for more information about PURL and VERS.
32
+
See the [Package-URL website](https://package-url.github.io/www.packageurl.org/)
33
+
for more information about PURL and VERS.
31
34
32
35
See the Package-URL (PURL) projects section of the Home page for more
33
36
information about AboutCode tools that provide PURL- and VERS-specific
34
37
capabilities.
35
38
36
39
## Identify software packages and components
37
40
For the basic use case of identifying software packages and components,
38
-
AboutCode offers the DejaCode and ScanCode tools, the PURLDB database and the PURL standard.
41
+
AboutCode offers the DejaCode application, ScanCode tools, the PURLDB database and the [PURL standard](https://package-url.github.io/www.packageurl.org/docs/purl/purl-spec-introduction).
39
42
40
43
-[DejaCode](https://dejacode.readthedocs.io/en/latest/) is an enterprise-level
41
44
application to automate managing your software assets including license
42
45
compliance and security vulnerabilities. DejaCode embeds ScanCode.io for core
43
-
scanning functions and uses VulnerableCode data for vulnerability reporting. DejaCode includes a database of licenses, components and packages, and SBOMs.
44
-
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
46
+
scanning functions and uses VulnerableCode data for vulnerability reporting.
47
+
DejaCode includes a database of licenses, components and packages, and SBOMs.
48
+
It is also where you can set and apply your license and vulnerability risk
49
+
policies. DejaCode is designed for integration with GitHub, GitLab, JIRA and
50
+
other software development platforms. You normally run DejaCode as a Docker
45
51
container.
46
52
47
53
-[ScanCode.io](https://scancodeio.readthedocs.io/en/latest/) is an
48
-
application to scan codebases, packages, containers or other software collections. ScanCode.io uses a specific pipeline for scanning or analyzing
49
-
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. You can export
54
+
application to scan codebases, packages, containers or other software
55
+
collections. ScanCode.io uses a specific pipeline for scanning or analyzing
56
+
each software target and provides a database with UI and API access to your
57
+
scans. ScanCode.io is usually a good place to get started in the AboutCode
58
+
ecosystem. You normally run ScanCode.io as a Docker container. You can export
50
59
scan data in many formats including: JSON, XLSX, CycloneDX SBOM, SPDX SBOM, or
51
60
an attribution-notice.
52
61
@@ -55,18 +64,23 @@ library (and command line utility) that provides the scanning engine for
55
64
ScanCode.io. Its primary functions are to identify:
56
65
- Software licenses based on matching license notices and texts to ScanCode
57
66
license detection rules
58
-
- Software origin based on copyright or author notices, email addresses, URLs and other clues
59
-
- Software codebase structure including directories and files with extensive file information such as size, MIME type, file type, programming language,
67
+
- Software origin based on copyright or author notices, email addresses,
68
+
URLs and other clues
69
+
- Software codebase structure including directories and files with extensive
70
+
file information such as size, MIME type, file type, programming language,
provides license text and metadata for 2,470 open source and other third-party
64
-
licenses (and growing). Each license has an SPDX license identifier using the `Licenseref-scancode` namespace for licenses that are not yet included in the
75
+
licenses (and growing). Each license has an SPDX license identifier using the
76
+
`Licenseref-scancode` namespace for licenses that are not yet included in the
65
77
SPDX License List.
66
78
67
-
-[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
79
+
-[PURLDB](https://purldb.readthedocs.io/en/stable/) provides tools to create
80
+
and manage a database of package metadata keyed by PURL. You can use PURLDB
68
81
data via API to enrich your package and SBOM data in DejaCode, ScanCode.io,
69
-
or your own application. The AboutCode team also currently hosts a public [PURLDB](https://public.purldb.io/api/) service with REST API.
82
+
or your own application. The AboutCode team also currently hosts a public
83
+
[PURLDB](https://public.purldb.io/api/) service with REST API.
70
84
71
85
## Analyze containers
72
86
The analysis of containers to produce inventories or SBOMs for the software
@@ -85,7 +99,8 @@ detailed information about image layers and their file content.
85
99
export the data in CycloneDX or SPDX SBOM format, or in JSON or XLSX format
86
100
for use in another application.
87
101
88
-
If you need to update or enhance the scan data before you produce an SBOM, DejaCode provides several options.
102
+
If you need to update or enhance the scan data before you produce an SBOM,
103
+
DejaCode provides several options.
89
104
90
105
-[DejaCode](https://dejacode.readthedocs.io/en/latest/) is highly integrated
91
106
with ScanCode so that you can easily import ScanCode scan data from ScanCode
@@ -99,24 +114,36 @@ then:
99
114
- Generate an SBOM in CycloneDX or SPDX format
100
115
- Generate an attribution notice
101
116
102
-
-[container-inspector](https://github.com/aboutcode-org/container-inspector/blob/main/README.rst) is a static analysis tool to analyze the structure of software components in a container image. container-inspector is
103
-
used in the ScanCode.io `analyze_docker_image` pipeline for the layer analysis,
is a static analysis tool to analyze the structure of software components in a
119
+
container image. container-inspector is used in the ScanCode.io
120
+
`analyze_docker_image` pipeline for the layer analysis,
104
121
but you can also use it as a command line utility.
105
122
106
123
## Consume or produce SBOMs
107
124
The EU CRA (Cyber Resilience Act) and other regulatory initiatives have
108
125
dramatically raised the importance of SBOMs (Software Bills of Materials) for
109
-
compliance with security risk management laws and regulations. A key challenge in using SBOMs is the reliable identification of software packages so that someone else in your software supply chain (upstream or downstream) will recognize the same package identity. The PURL (Package-URL) standard [ECMA-427](https://ecma-tc54.github.io/ECMA-427/) provides the most popular solution.
110
-
111
-
**DejaCode** and **ScanCode.io** both provide full capabilities to import or export SBOMs in CycloneDX or SPDX format using PURL as the standard software
126
+
compliance with security risk management laws and regulations. A key challenge
127
+
in using SBOMs is the reliable identification of software packages so that
128
+
someone else in your software supply chain (upstream or downstream) will
129
+
recognize the same package identity. The PURL (Package-URL) standard
130
+
[ECMA-427](https://ecma-tc54.github.io/ECMA-427/) provides the most popular
131
+
solution.
132
+
133
+
**DejaCode** and **ScanCode.io** both provide full capabilities to import or
134
+
export SBOMs in CycloneDX or SPDX format using PURL as the standard software
112
135
identifier.
113
136
114
137
## Match binaries to source
115
-
One of the most difficult software identification tasks is to match the "binary" files that you distribute or deploy (on a device or the cloud) to the corresponding "source" files from your development/build systems. In the
138
+
One of the most difficult software identification tasks is to match the
139
+
"binary" files that you distribute or deploy (on a device or the cloud) to the
140
+
corresponding "source" files from your development/build systems. In the
116
141
AboutCode community we consider binary-source matching to be a subset of the
117
-
much larger domain of matching "deploy" files to "devel" files. This matching challenge includes:
142
+
much larger domain of matching "deploy" files to "devel" files. This matching
143
+
challenge includes:
118
144
119
-
-[ScanCode.io](https://scancodeio.readthedocs.io/en/latest/) supports "deploy-to-devel" matching with the `map_deploy_to_develop` pipeline.
"deploy-to-devel" matching with the `map_deploy_to_develop` pipeline.
120
147
This pipeline currently handles:
121
148
122
149
- Matching Linux ELF, Windows, MacOS or Rust binaries to source
@@ -126,33 +153,53 @@ This pipeline currently handles:
126
153
- Matching minified JavaScript to corresponding TS or JS files
127
154
- And other use cases
128
155
129
-
-[MatchCode Toolkit](https://github.com/aboutcode-org/matchcode-toolkit/blob/main/README.rst) is a Python library that provides the file and directory fingerprinting functionality for ScanCode Toolkit and ScanCode.io using
130
-
the HaloHash algorithm. You can use the **MatchCode Toolkit** as a library.
extracts symbols from binaries in ELF, Mach-O, WinPe and
135
165
other formats
136
-
-[elf-inspector](https://github.com/aboutcode-org/elf-inspector/blob/main/README.rst) collects data from ELF binaries
137
-
-[go-inspector](https://github.com/aboutcode-org/go-inspector/blob/main/README.rst) extracts dependencies and symbols from Go binaries
138
-
-[rust-inspector](https://github.com/aboutcode-org/rust-inspector/blob/main/README.rst) extracts dependencies and symbols from Rust binaries
139
-
-[source-inspector](https://github.com/aboutcode-org/source-inspector/blob/main/README.rst) collects code symbols, strings and comments from source files
collects code symbols, strings and comments from source files
140
174
141
175
These are all Python utilities that can also be used independently.
142
176
143
177
## Identify software dependencies
144
178
There are many use cases that require the identification of package software
145
179
dependencies including:
146
-
- Identifying the licenses and vulnerabilites from package dependencies before you select a software package to use it in your product or project.
147
-
- Identifying package version dependencies before you upgrade a package.
148
-
- Reporting package dependencies with their licenses or vulnerabilities in an SBOM or other document.
149
-
150
-
-**ScanCode Toolkit** and **ScanCode.io** both collect and report package
151
-
dependency data from package manifest and dependency lock files (e.g., package.json or package-lock.json for npm. The reported package data includes the scope of a dependency and related attributes (runtime, optional, pinned, direct).
152
-
-[dependency inspector](https://github.com/aboutcode-org/dependency-inspector/blob/main/README.rst) is a command line tool to generate package lockfiles and parsable package manifests to make it easy to collect resolved dependencies
153
-
and accurate metadata for a project. It uses the standard package management tool for each package type or ecosystem.
154
-
-[nuget-inspector](https://github.com/aboutcode-org/nuget-inspector/blob/main/README.rst) is a utility to resolve .NET or nuget package dependencies independently of a dotnet SDK installed on the computer used to run the **nuget-inspector**.
155
-
-[python-inspector](https://github.com/aboutcode-org/python-inspector/blob/main/README.rst) is utility to resovlve PyPI package dependencies and query PyPI
180
+
- Identifying the licenses and vulnerabilites from package dependencies
181
+
before you select a software package to use it in your product or project.
182
+
- Identifying package version dependencies before you upgrade a package.
183
+
- Reporting package dependencies with their licenses or vulnerabilities in
184
+
an SBOM or other document.
185
+
186
+
**ScanCode Toolkit** and **ScanCode.io** both collect and report package
187
+
dependency data from package manifest and dependency lock files (e.g.,
188
+
package.json or package-lock.json for npm. The reported package data includes
189
+
the scope of a dependency and related attributes (runtime, optional, pinned,
190
+
direct). Scancode uses many AboutCode libraries and utilities to identify software
0 commit comments