owasp-depscan 5.4.7__tar.gz → 5.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of owasp-depscan might be problematic. Click here for more details.
- {owasp_depscan-5.4.7/owasp_depscan.egg-info → owasp_depscan-5.5.0}/PKG-INFO +56 -23
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/README.md +54 -21
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/depscan/lib/analysis.py +28 -24
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/depscan/lib/config.py +14 -10
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0/owasp_depscan.egg-info}/PKG-INFO +56 -23
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/owasp_depscan.egg-info/requires.txt +1 -1
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/pyproject.toml +2 -2
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/test/test_analysis.py +19 -2
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/mpl-2.0.txt +1 -1
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/spdx/json/licenses.json +810 -664
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/LICENSE +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/MANIFEST.in +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/depscan/__init__.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/depscan/cli.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/depscan/lib/__init__.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/depscan/lib/audit.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/depscan/lib/bom.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/depscan/lib/csaf.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/depscan/lib/explainer.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/depscan/lib/github.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/depscan/lib/license.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/depscan/lib/logger.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/depscan/lib/normalize.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/depscan/lib/orasclient.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/depscan/lib/pkg_query.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/depscan/lib/utils.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/owasp_depscan.egg-info/SOURCES.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/owasp_depscan.egg-info/dependency_links.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/owasp_depscan.egg-info/entry_points.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/owasp_depscan.egg-info/top_level.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/setup.cfg +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/test/test_bom.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/test/test_csaf.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/test/test_explainer.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/test/test_github.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/test/test_license.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/test/test_norm.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/test/test_pkg_query.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/test/test_utils.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/__init__.py +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_data/fields.yml +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_data/meta.yml +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_data/rules.yml +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/0bsd.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/afl-3.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/agpl-3.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/apache-2.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/artistic-2.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/blueoak-1.0.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/bsd-2-clause-patent.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/bsd-2-clause.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/bsd-3-clause-clear.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/bsd-3-clause.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/bsd-4-clause.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/bsl-1.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/cc-by-4.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/cc-by-sa-4.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/cc0-1.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/cecill-2.1.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/cern-ohl-p-2.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/cern-ohl-s-2.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/cern-ohl-w-2.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/ecl-2.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/epl-1.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/epl-2.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/eupl-1.1.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/eupl-1.2.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/gfdl-1.3.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/gpl-2.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/gpl-3.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/isc.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/lgpl-2.1.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/lgpl-3.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/lppl-1.3c.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/mit-0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/mit.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/ms-pl.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/ms-rl.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/mulanpsl-2.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/ncsa.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/odbl-1.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/ofl-1.1.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/osl-3.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/postgresql.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/unlicense.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/upl-1.0.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/vim.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/wtfpl.txt +0 -0
- {owasp_depscan-5.4.7 → owasp_depscan-5.5.0}/vendor/choosealicense.com/_licenses/zlib.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: owasp-depscan
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.5.0
|
|
4
4
|
Summary: Fully open-source security audit for project dependencies based on known vulnerabilities and advisories.
|
|
5
5
|
Author-email: Team AppThreat <cloud@appthreat.com>
|
|
6
6
|
License: MIT
|
|
@@ -20,7 +20,7 @@ Classifier: Topic :: Utilities
|
|
|
20
20
|
Requires-Python: >=3.8
|
|
21
21
|
Description-Content-Type: text/markdown
|
|
22
22
|
License-File: LICENSE
|
|
23
|
-
Requires-Dist: appthreat-vulnerability-db==5.
|
|
23
|
+
Requires-Dist: appthreat-vulnerability-db==5.8.1
|
|
24
24
|
Requires-Dist: defusedxml
|
|
25
25
|
Requires-Dist: oras~=0.1.26
|
|
26
26
|
Requires-Dist: PyYAML
|
|
@@ -55,7 +55,6 @@ OWASP dep-scan is a next-generation security and risk audit tool based on known
|
|
|
55
55
|
- [Linux distros](#linux-distros)
|
|
56
56
|
- [Usage](#usage)
|
|
57
57
|
- [OCI Artifacts via ORAS cli](#oci-artifacts-via-oras-cli)
|
|
58
|
-
- [Single binary executables](#single-binary-executables)
|
|
59
58
|
- [Server mode](#server-mode)
|
|
60
59
|
- [Scanning projects locally (Python version)](#scanning-projects-locally-python-version)
|
|
61
60
|
- [Scanning containers locally (Python version)](#scanning-containers-locally-python-version)
|
|
@@ -319,25 +318,35 @@ dep-scan uses [cdxgen](https://github.com/CycloneDX/cdxgen) command internally t
|
|
|
319
318
|
|
|
320
319
|
The following projects and package-dependency format is supported by cdxgen.
|
|
321
320
|
|
|
322
|
-
| Language
|
|
323
|
-
|
|
|
324
|
-
|
|
|
325
|
-
|
|
|
326
|
-
|
|
|
327
|
-
|
|
|
328
|
-
|
|
|
329
|
-
|
|
|
330
|
-
|
|
|
331
|
-
|
|
|
332
|
-
|
|
|
333
|
-
|
|
|
334
|
-
|
|
|
335
|
-
|
|
|
336
|
-
|
|
|
337
|
-
|
|
|
338
|
-
|
|
|
339
|
-
|
|
|
340
|
-
|
|
|
321
|
+
| Language/Platform | Project Types | Package Formats | Supported Evidence | Supports Transitives |
|
|
322
|
+
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | -------------------- |
|
|
323
|
+
| Node.js | `npm`, `pnpm`, `nodejs`, `js`, `javascript`, `typescript`, `ts`, `tsx` | `npm-shrinkwrap.json`, `package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`, `rush.js`, `bower.json`, `.min.js` | Yes, except for `.min.` | ✅ |
|
|
324
|
+
| Java | `java`, `groovy`, `kotlin`, `scala`, `jvm`, `gradle`, `mvn`, `maven`, `sbt` | `pom.xml` [1], `build.gradle`, `.kts`, `sbt`, `bazel` | Yes, unless `pom.xml` is manually parsed due to unavailability of maven or errors) | ✅ |
|
|
325
|
+
| Android | `android`, `apk`, `aab` | `apk`, `aab` | - | - |
|
|
326
|
+
| JAR | `jar` | `.jar` | - | - |
|
|
327
|
+
| JAR (Gradle Cache) | `gradle-index`, `gradle-cache` | `$HOME/caches/modules-2/files-2.1/\*\*/\*.jar` | - | - |
|
|
328
|
+
| JAR (SBT Cache) | `sbt-index`, `sbt-cache` | `$HOME/.ivy2/cache/\*\*/\*.jar ` | - | - |
|
|
329
|
+
| JAR (Maven Cache) | `maven-index`, `maven-cache`, `maven-repo` | `$HOME/.m2/repository/\*\*/\*.jar` | - | - |
|
|
330
|
+
| Python | `python`, `py`, `pypi` | `pyproject.toml`, `setup.py`, `requirements.txt` [2], `Pipfile.lock`, `poetry.lock`, `pdm.lock`, `bdist_wheel`, `.whl`, `.egg-info` | Yes using the automatic pip install/freeze. When disabled, only with `Pipfile.lock` and `poetry.lock` | ✅ |
|
|
331
|
+
| Golang | `go`, `golang` | `binary`, `go.mod`, `go.sum`, `Gopkg.lock` | Yes except binary | ✅ |
|
|
332
|
+
| Rust | `rust`, `rust-lang`, `cargo` | `binary`, `Cargo.toml`, `Cargo.lock` | Only for `Cargo.lock` | - |
|
|
333
|
+
| Ruby | `ruby`, `gems` | `Gemfile.lock`, `gemspec` | Only for `Gemfile.lock` | - |
|
|
334
|
+
| .NET (#C) | `csharp`, `netcore`, `dotnet`, `vb`, `dotnet-framework` | `.csproj`, `.vbproj`, `.fsproj`, `packages.config`, `project.assets.json` [3], `packages.lock.json`, `.nupkg`, `paket.lock`, `binary` | Only for `project.assets.json`, `packages.lock.json`, `paket.lock` | - |
|
|
335
|
+
| Dart | `dart`, `flutter`, `pub` | `pubspec.lock`, `pubspec.yaml` | Only for `pubspec.lock` | - |
|
|
336
|
+
| Haskell | `haskell`, `hackage`, `cabal` | `cabal.project.freeze` | Yes | |
|
|
337
|
+
| Elixir | `elixir`, `hex`, `mix` | `mix.lock` | Yes | - |
|
|
338
|
+
| C++ | `c`, `cpp`, `c++`, `conan` | `conan.lock`, `conanfile.txt`, `\*.cmake`, `CMakeLists.txt`, `meson.build`, codebase without package managers! | Yes only for `conan.lock`. Best effort basis for `cmake` without version numbers. | ✅ |
|
|
339
|
+
| Clojure | `clojure`, `edn`, `clj`, `leiningen` | `deps.edn`, `project.clj` | Yes unless the files are parsed manually due to lack of clojure cli or leiningen command | - |
|
|
340
|
+
| GitHub Actions | `github`, `actions` | `.github/workflows/\*.yml` | n/a | ✅ |
|
|
341
|
+
| Operation System (OS) | `os`, `osquery`, `windows`, `linux`, `mac`, `macos`, `darwin` |
|
|
342
|
+
| Jenkins Plugins | `jenkins` | `.hpi files` | - | ✅ |
|
|
343
|
+
| Helm | `helm`, `charts` | `.yaml` | n/a | |
|
|
344
|
+
| Helm (Cache) | `helm-index`, `helm-repo` | `$HOME/.cache/helm/repository/\*\*/\*.yaml` | - | - |
|
|
345
|
+
| Container | `universal`, `containerfile`, `docker-compose`, `dockerfile`, `swarm`, `tekton`, `kustomize`, `operator`, `skaffold`, `kubernetes`, `openshift`, `yaml-manifest` | `.yaml`, `docker-compose\*.yml`, `*Dockerfile*`, `*Containerfile*`, `bitbucket-pipelines.yml` | n/a | - |
|
|
346
|
+
| Google Cloud Build | `cloudbuild` | `cloudbuild.yaml` | n/a | - |
|
|
347
|
+
| Swift (iOS) | `swift` | `Package.resolved`, `Package.swift` (swiftpm) | Yes | - |
|
|
348
|
+
| Binary | `binary`, `blint` |
|
|
349
|
+
| Open API | Open API Specification, Swagger | `openapi\*.json`, `openapi\*.yaml` | n/a | - |
|
|
341
350
|
|
|
342
351
|
## Reachability analysis
|
|
343
352
|
|
|
@@ -380,6 +389,30 @@ The following environment variables can be used to customize the behavior.
|
|
|
380
389
|
- VDB_HOME - Directory to use for caching database. For docker-based execution, this directory should get mounted as a volume from the host
|
|
381
390
|
- VDB_DATABASE_URL - Vulnerability DB URL. Defaults to: ghcr.io/appthreat/vdbgz:v5
|
|
382
391
|
- USE_VDB_10Y - Set to true to use the larger 10-year vulnerability database. Default download url: ghcr.io/appthreat/vdb-10y:v5
|
|
392
|
+
- VDB_APP_ONLY - Set to true to use a special app-only vulnerability database. Default download url: ghcr.io/appthreat/vdbgz-app:v5
|
|
393
|
+
|
|
394
|
+
Example 1 - Run depscan with app-only vdb.
|
|
395
|
+
|
|
396
|
+
```shell
|
|
397
|
+
docker run --rm \
|
|
398
|
+
-e VDB_HOME=/db \
|
|
399
|
+
-e VDB_APP_ONLY=true \
|
|
400
|
+
-e SCAN_DEBUG_MODE=debug \
|
|
401
|
+
-v /tmp:/db \
|
|
402
|
+
-v $PWD:/app ghcr.io/owasp-dep-scan/dep-scan --src /app --reports-dir /app/reports
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
Example 2 - Run depscan with a larger 10 year app-only vdb.
|
|
406
|
+
|
|
407
|
+
```shell
|
|
408
|
+
docker run --rm \
|
|
409
|
+
-e VDB_HOME=/db \
|
|
410
|
+
-e VDB_APP_ONLY=true \
|
|
411
|
+
-e USE_VDB_10Y=true \
|
|
412
|
+
-e SCAN_DEBUG_MODE=debug \
|
|
413
|
+
-v /tmp:/db \
|
|
414
|
+
-v $PWD:/app ghcr.io/owasp-dep-scan/dep-scan --src /app --reports-dir /app/reports
|
|
415
|
+
```
|
|
383
416
|
|
|
384
417
|
## GitHub Security Advisory
|
|
385
418
|
|
|
@@ -521,7 +554,7 @@ The objects available are taken from the CycloneDX \*.vdr.json BOM file generate
|
|
|
521
554
|
`pkg_group_rows` - List of vulnerability id and the dependency tree prioritized by depscan.
|
|
522
555
|
|
|
523
556
|
Furthermore, insights are imaginable to be made available to the template, please reach out or contribute on demand.
|
|
524
|
-
We appreciate it if you like to contribute your report templates as examples, please add/find them [here](contrib/report-templates
|
|
557
|
+
We appreciate it if you like to contribute your report templates as examples, please add/find them [here](contrib/report-templates).
|
|
525
558
|
|
|
526
559
|
## Performance tuning
|
|
527
560
|
|
|
@@ -14,7 +14,6 @@ OWASP dep-scan is a next-generation security and risk audit tool based on known
|
|
|
14
14
|
- [Linux distros](#linux-distros)
|
|
15
15
|
- [Usage](#usage)
|
|
16
16
|
- [OCI Artifacts via ORAS cli](#oci-artifacts-via-oras-cli)
|
|
17
|
-
- [Single binary executables](#single-binary-executables)
|
|
18
17
|
- [Server mode](#server-mode)
|
|
19
18
|
- [Scanning projects locally (Python version)](#scanning-projects-locally-python-version)
|
|
20
19
|
- [Scanning containers locally (Python version)](#scanning-containers-locally-python-version)
|
|
@@ -278,25 +277,35 @@ dep-scan uses [cdxgen](https://github.com/CycloneDX/cdxgen) command internally t
|
|
|
278
277
|
|
|
279
278
|
The following projects and package-dependency format is supported by cdxgen.
|
|
280
279
|
|
|
281
|
-
| Language
|
|
282
|
-
|
|
|
283
|
-
|
|
|
284
|
-
|
|
|
285
|
-
|
|
|
286
|
-
|
|
|
287
|
-
|
|
|
288
|
-
|
|
|
289
|
-
|
|
|
290
|
-
|
|
|
291
|
-
|
|
|
292
|
-
|
|
|
293
|
-
|
|
|
294
|
-
|
|
|
295
|
-
|
|
|
296
|
-
|
|
|
297
|
-
|
|
|
298
|
-
|
|
|
299
|
-
|
|
|
280
|
+
| Language/Platform | Project Types | Package Formats | Supported Evidence | Supports Transitives |
|
|
281
|
+
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | -------------------- |
|
|
282
|
+
| Node.js | `npm`, `pnpm`, `nodejs`, `js`, `javascript`, `typescript`, `ts`, `tsx` | `npm-shrinkwrap.json`, `package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`, `rush.js`, `bower.json`, `.min.js` | Yes, except for `.min.` | ✅ |
|
|
283
|
+
| Java | `java`, `groovy`, `kotlin`, `scala`, `jvm`, `gradle`, `mvn`, `maven`, `sbt` | `pom.xml` [1], `build.gradle`, `.kts`, `sbt`, `bazel` | Yes, unless `pom.xml` is manually parsed due to unavailability of maven or errors) | ✅ |
|
|
284
|
+
| Android | `android`, `apk`, `aab` | `apk`, `aab` | - | - |
|
|
285
|
+
| JAR | `jar` | `.jar` | - | - |
|
|
286
|
+
| JAR (Gradle Cache) | `gradle-index`, `gradle-cache` | `$HOME/caches/modules-2/files-2.1/\*\*/\*.jar` | - | - |
|
|
287
|
+
| JAR (SBT Cache) | `sbt-index`, `sbt-cache` | `$HOME/.ivy2/cache/\*\*/\*.jar ` | - | - |
|
|
288
|
+
| JAR (Maven Cache) | `maven-index`, `maven-cache`, `maven-repo` | `$HOME/.m2/repository/\*\*/\*.jar` | - | - |
|
|
289
|
+
| Python | `python`, `py`, `pypi` | `pyproject.toml`, `setup.py`, `requirements.txt` [2], `Pipfile.lock`, `poetry.lock`, `pdm.lock`, `bdist_wheel`, `.whl`, `.egg-info` | Yes using the automatic pip install/freeze. When disabled, only with `Pipfile.lock` and `poetry.lock` | ✅ |
|
|
290
|
+
| Golang | `go`, `golang` | `binary`, `go.mod`, `go.sum`, `Gopkg.lock` | Yes except binary | ✅ |
|
|
291
|
+
| Rust | `rust`, `rust-lang`, `cargo` | `binary`, `Cargo.toml`, `Cargo.lock` | Only for `Cargo.lock` | - |
|
|
292
|
+
| Ruby | `ruby`, `gems` | `Gemfile.lock`, `gemspec` | Only for `Gemfile.lock` | - |
|
|
293
|
+
| .NET (#C) | `csharp`, `netcore`, `dotnet`, `vb`, `dotnet-framework` | `.csproj`, `.vbproj`, `.fsproj`, `packages.config`, `project.assets.json` [3], `packages.lock.json`, `.nupkg`, `paket.lock`, `binary` | Only for `project.assets.json`, `packages.lock.json`, `paket.lock` | - |
|
|
294
|
+
| Dart | `dart`, `flutter`, `pub` | `pubspec.lock`, `pubspec.yaml` | Only for `pubspec.lock` | - |
|
|
295
|
+
| Haskell | `haskell`, `hackage`, `cabal` | `cabal.project.freeze` | Yes | |
|
|
296
|
+
| Elixir | `elixir`, `hex`, `mix` | `mix.lock` | Yes | - |
|
|
297
|
+
| C++ | `c`, `cpp`, `c++`, `conan` | `conan.lock`, `conanfile.txt`, `\*.cmake`, `CMakeLists.txt`, `meson.build`, codebase without package managers! | Yes only for `conan.lock`. Best effort basis for `cmake` without version numbers. | ✅ |
|
|
298
|
+
| Clojure | `clojure`, `edn`, `clj`, `leiningen` | `deps.edn`, `project.clj` | Yes unless the files are parsed manually due to lack of clojure cli or leiningen command | - |
|
|
299
|
+
| GitHub Actions | `github`, `actions` | `.github/workflows/\*.yml` | n/a | ✅ |
|
|
300
|
+
| Operation System (OS) | `os`, `osquery`, `windows`, `linux`, `mac`, `macos`, `darwin` |
|
|
301
|
+
| Jenkins Plugins | `jenkins` | `.hpi files` | - | ✅ |
|
|
302
|
+
| Helm | `helm`, `charts` | `.yaml` | n/a | |
|
|
303
|
+
| Helm (Cache) | `helm-index`, `helm-repo` | `$HOME/.cache/helm/repository/\*\*/\*.yaml` | - | - |
|
|
304
|
+
| Container | `universal`, `containerfile`, `docker-compose`, `dockerfile`, `swarm`, `tekton`, `kustomize`, `operator`, `skaffold`, `kubernetes`, `openshift`, `yaml-manifest` | `.yaml`, `docker-compose\*.yml`, `*Dockerfile*`, `*Containerfile*`, `bitbucket-pipelines.yml` | n/a | - |
|
|
305
|
+
| Google Cloud Build | `cloudbuild` | `cloudbuild.yaml` | n/a | - |
|
|
306
|
+
| Swift (iOS) | `swift` | `Package.resolved`, `Package.swift` (swiftpm) | Yes | - |
|
|
307
|
+
| Binary | `binary`, `blint` |
|
|
308
|
+
| Open API | Open API Specification, Swagger | `openapi\*.json`, `openapi\*.yaml` | n/a | - |
|
|
300
309
|
|
|
301
310
|
## Reachability analysis
|
|
302
311
|
|
|
@@ -339,6 +348,30 @@ The following environment variables can be used to customize the behavior.
|
|
|
339
348
|
- VDB_HOME - Directory to use for caching database. For docker-based execution, this directory should get mounted as a volume from the host
|
|
340
349
|
- VDB_DATABASE_URL - Vulnerability DB URL. Defaults to: ghcr.io/appthreat/vdbgz:v5
|
|
341
350
|
- USE_VDB_10Y - Set to true to use the larger 10-year vulnerability database. Default download url: ghcr.io/appthreat/vdb-10y:v5
|
|
351
|
+
- VDB_APP_ONLY - Set to true to use a special app-only vulnerability database. Default download url: ghcr.io/appthreat/vdbgz-app:v5
|
|
352
|
+
|
|
353
|
+
Example 1 - Run depscan with app-only vdb.
|
|
354
|
+
|
|
355
|
+
```shell
|
|
356
|
+
docker run --rm \
|
|
357
|
+
-e VDB_HOME=/db \
|
|
358
|
+
-e VDB_APP_ONLY=true \
|
|
359
|
+
-e SCAN_DEBUG_MODE=debug \
|
|
360
|
+
-v /tmp:/db \
|
|
361
|
+
-v $PWD:/app ghcr.io/owasp-dep-scan/dep-scan --src /app --reports-dir /app/reports
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
Example 2 - Run depscan with a larger 10 year app-only vdb.
|
|
365
|
+
|
|
366
|
+
```shell
|
|
367
|
+
docker run --rm \
|
|
368
|
+
-e VDB_HOME=/db \
|
|
369
|
+
-e VDB_APP_ONLY=true \
|
|
370
|
+
-e USE_VDB_10Y=true \
|
|
371
|
+
-e SCAN_DEBUG_MODE=debug \
|
|
372
|
+
-v /tmp:/db \
|
|
373
|
+
-v $PWD:/app ghcr.io/owasp-dep-scan/dep-scan --src /app --reports-dir /app/reports
|
|
374
|
+
```
|
|
342
375
|
|
|
343
376
|
## GitHub Security Advisory
|
|
344
377
|
|
|
@@ -480,7 +513,7 @@ The objects available are taken from the CycloneDX \*.vdr.json BOM file generate
|
|
|
480
513
|
`pkg_group_rows` - List of vulnerability id and the dependency tree prioritized by depscan.
|
|
481
514
|
|
|
482
515
|
Furthermore, insights are imaginable to be made available to the template, please reach out or contribute on demand.
|
|
483
|
-
We appreciate it if you like to contribute your report templates as examples, please add/find them [here](contrib/report-templates
|
|
516
|
+
We appreciate it if you like to contribute your report templates as examples, please add/find them [here](contrib/report-templates).
|
|
484
517
|
|
|
485
518
|
## Performance tuning
|
|
486
519
|
|
|
@@ -19,7 +19,7 @@ from rich.table import Table
|
|
|
19
19
|
from rich.tree import Tree
|
|
20
20
|
from vdb.lib import CPE_FULL_REGEX
|
|
21
21
|
from vdb.lib.config import placeholder_exclude_version, placeholder_fix_version
|
|
22
|
-
from vdb.lib.utils import parse_cpe, parse_purl
|
|
22
|
+
from vdb.lib.utils import get_cvss3_from_vector, get_cvss4_from_vector, parse_cpe, parse_purl
|
|
23
23
|
|
|
24
24
|
from depscan.lib import config
|
|
25
25
|
from depscan.lib.logger import LOG, console
|
|
@@ -336,6 +336,11 @@ def prepare_vdr(options: PrepareVdrOptions):
|
|
|
336
336
|
justify = "right"
|
|
337
337
|
table.add_column(header=h, justify=justify, vertical="top")
|
|
338
338
|
for vuln_occ_dict in options.results:
|
|
339
|
+
# If CVSS v4 data is available, override the severity and cvss_score
|
|
340
|
+
if vuln_occ_dict.get("cvss4_vector_string"):
|
|
341
|
+
cvss4_obj = get_cvss4_from_vector(vuln_occ_dict.get("cvss4_vector_string"))
|
|
342
|
+
vuln_occ_dict["cvss_score"] = cvss4_obj.get("baseScore")
|
|
343
|
+
vuln_occ_dict["severity"] = cvss4_obj.get("baseSeverity").upper()
|
|
339
344
|
vid = vuln_occ_dict.get("id")
|
|
340
345
|
problem_type = vuln_occ_dict.get("problem_type")
|
|
341
346
|
cwes = []
|
|
@@ -1026,34 +1031,33 @@ def cvss_to_vdr_rating(vuln_occ_dict):
|
|
|
1026
1031
|
|
|
1027
1032
|
:return: A list containing a dictionary with CVSS score information.
|
|
1028
1033
|
"""
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
ratings = [
|
|
1042
|
-
{
|
|
1043
|
-
"score": cvss_score,
|
|
1044
|
-
"severity": pkg_severity,
|
|
1045
|
-
}
|
|
1046
|
-
]
|
|
1047
|
-
method = "31"
|
|
1034
|
+
ratings = []
|
|
1035
|
+
# Support for cvss v4
|
|
1036
|
+
if vuln_occ_dict.get("cvss4_vector_string") and (vector_string := vuln_occ_dict.get("cvss4_vector_string")):
|
|
1037
|
+
cvss4_obj = get_cvss4_from_vector(vector_string)
|
|
1038
|
+
ratings.append(
|
|
1039
|
+
{
|
|
1040
|
+
"method": "CVSSv4",
|
|
1041
|
+
"score": cvss4_obj.get("baseScore"),
|
|
1042
|
+
"severity": cvss4_obj.get("baseSeverity").lower(),
|
|
1043
|
+
"vector": vector_string
|
|
1044
|
+
}
|
|
1045
|
+
)
|
|
1048
1046
|
if vuln_occ_dict.get("cvss_v3") and (
|
|
1049
1047
|
vector_string := vuln_occ_dict["cvss_v3"].get("vector_string")
|
|
1050
1048
|
):
|
|
1051
|
-
ratings[0]["vector"] = vector_string
|
|
1052
1049
|
with contextlib.suppress(CVSSError):
|
|
1053
|
-
|
|
1050
|
+
cvss3_obj = get_cvss3_from_vector(vector_string)
|
|
1051
|
+
method = cvss3_obj.get("version")
|
|
1054
1052
|
method = method.replace(".", "").replace("0", "")
|
|
1055
|
-
|
|
1056
|
-
|
|
1053
|
+
ratings.append(
|
|
1054
|
+
{
|
|
1055
|
+
"method": f"CVSSv{method}",
|
|
1056
|
+
"score": cvss3_obj.get("baseScore"),
|
|
1057
|
+
"severity": cvss3_obj.get("baseSeverity").lower(),
|
|
1058
|
+
"vector": vector_string
|
|
1059
|
+
}
|
|
1060
|
+
)
|
|
1057
1061
|
return ratings
|
|
1058
1062
|
|
|
1059
1063
|
|
|
@@ -314,17 +314,21 @@ vdb_rafs_database_url = os.getenv(
|
|
|
314
314
|
"VDB_RAFS_DATABASE_URL", "ghcr.io/appthreat/vdb:v5-rafs"
|
|
315
315
|
)
|
|
316
316
|
|
|
317
|
-
#
|
|
318
|
-
|
|
319
|
-
"
|
|
320
|
-
)
|
|
321
|
-
vdb_10y_rafs_database_url = os.getenv(
|
|
322
|
-
"VDB_10Y_RAFS_DATABASE_URL", "ghcr.io/appthreat/vdb-10y:v5-rafs"
|
|
323
|
-
)
|
|
317
|
+
# App only data
|
|
318
|
+
if os.getenv("VDB_APP_ONLY", "") in ("true", "1"):
|
|
319
|
+
vdb_database_url = os.getenv("VDB_APP_DATABASE_URL", "ghcr.io/appthreat/vdbgz-app:v5")
|
|
320
|
+
vdb_rafs_database_url = os.getenv("VDB_APP_RAFS_DATABASE_URL", "ghcr.io/appthreat/vdb-app:v5-rafs")
|
|
324
321
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
322
|
+
# Larger 10 year database
|
|
323
|
+
if os.getenv("USE_VDB_10Y", "") in ("true", "1") or os.getenv("NVD_START_YEAR", "") in ("2014",):
|
|
324
|
+
if os.getenv("VDB_APP_ONLY", "") in ("true", "1"):
|
|
325
|
+
# 10 year app-only database
|
|
326
|
+
vdb_database_url = os.getenv("VDB_APP_10Y_DATABASE_URL", "ghcr.io/appthreat/vdbgz-app-10y:v5")
|
|
327
|
+
vdb_rafs_database_url = os.getenv("VDB_APP_10Y_RAFS_DATABASE_URL", "ghcr.io/appthreat/vdb-app-10y:v5-rafs")
|
|
328
|
+
else:
|
|
329
|
+
# 10 year database
|
|
330
|
+
vdb_database_url = os.getenv("VDB_10Y_DATABASE_URL", "ghcr.io/appthreat/vdbgz-10y:v5")
|
|
331
|
+
vdb_rafs_database_url = os.getenv("VDB_10Y_RAFS_DATABASE_URL", "ghcr.io/appthreat/vdb-10y:v5-rafs")
|
|
328
332
|
|
|
329
333
|
# Package risk scoring using a simple weighted formula with no backing
|
|
330
334
|
# research All parameters and their max value and weight can be overridden
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: owasp-depscan
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.5.0
|
|
4
4
|
Summary: Fully open-source security audit for project dependencies based on known vulnerabilities and advisories.
|
|
5
5
|
Author-email: Team AppThreat <cloud@appthreat.com>
|
|
6
6
|
License: MIT
|
|
@@ -20,7 +20,7 @@ Classifier: Topic :: Utilities
|
|
|
20
20
|
Requires-Python: >=3.8
|
|
21
21
|
Description-Content-Type: text/markdown
|
|
22
22
|
License-File: LICENSE
|
|
23
|
-
Requires-Dist: appthreat-vulnerability-db==5.
|
|
23
|
+
Requires-Dist: appthreat-vulnerability-db==5.8.1
|
|
24
24
|
Requires-Dist: defusedxml
|
|
25
25
|
Requires-Dist: oras~=0.1.26
|
|
26
26
|
Requires-Dist: PyYAML
|
|
@@ -55,7 +55,6 @@ OWASP dep-scan is a next-generation security and risk audit tool based on known
|
|
|
55
55
|
- [Linux distros](#linux-distros)
|
|
56
56
|
- [Usage](#usage)
|
|
57
57
|
- [OCI Artifacts via ORAS cli](#oci-artifacts-via-oras-cli)
|
|
58
|
-
- [Single binary executables](#single-binary-executables)
|
|
59
58
|
- [Server mode](#server-mode)
|
|
60
59
|
- [Scanning projects locally (Python version)](#scanning-projects-locally-python-version)
|
|
61
60
|
- [Scanning containers locally (Python version)](#scanning-containers-locally-python-version)
|
|
@@ -319,25 +318,35 @@ dep-scan uses [cdxgen](https://github.com/CycloneDX/cdxgen) command internally t
|
|
|
319
318
|
|
|
320
319
|
The following projects and package-dependency format is supported by cdxgen.
|
|
321
320
|
|
|
322
|
-
| Language
|
|
323
|
-
|
|
|
324
|
-
|
|
|
325
|
-
|
|
|
326
|
-
|
|
|
327
|
-
|
|
|
328
|
-
|
|
|
329
|
-
|
|
|
330
|
-
|
|
|
331
|
-
|
|
|
332
|
-
|
|
|
333
|
-
|
|
|
334
|
-
|
|
|
335
|
-
|
|
|
336
|
-
|
|
|
337
|
-
|
|
|
338
|
-
|
|
|
339
|
-
|
|
|
340
|
-
|
|
|
321
|
+
| Language/Platform | Project Types | Package Formats | Supported Evidence | Supports Transitives |
|
|
322
|
+
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | -------------------- |
|
|
323
|
+
| Node.js | `npm`, `pnpm`, `nodejs`, `js`, `javascript`, `typescript`, `ts`, `tsx` | `npm-shrinkwrap.json`, `package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`, `rush.js`, `bower.json`, `.min.js` | Yes, except for `.min.` | ✅ |
|
|
324
|
+
| Java | `java`, `groovy`, `kotlin`, `scala`, `jvm`, `gradle`, `mvn`, `maven`, `sbt` | `pom.xml` [1], `build.gradle`, `.kts`, `sbt`, `bazel` | Yes, unless `pom.xml` is manually parsed due to unavailability of maven or errors) | ✅ |
|
|
325
|
+
| Android | `android`, `apk`, `aab` | `apk`, `aab` | - | - |
|
|
326
|
+
| JAR | `jar` | `.jar` | - | - |
|
|
327
|
+
| JAR (Gradle Cache) | `gradle-index`, `gradle-cache` | `$HOME/caches/modules-2/files-2.1/\*\*/\*.jar` | - | - |
|
|
328
|
+
| JAR (SBT Cache) | `sbt-index`, `sbt-cache` | `$HOME/.ivy2/cache/\*\*/\*.jar ` | - | - |
|
|
329
|
+
| JAR (Maven Cache) | `maven-index`, `maven-cache`, `maven-repo` | `$HOME/.m2/repository/\*\*/\*.jar` | - | - |
|
|
330
|
+
| Python | `python`, `py`, `pypi` | `pyproject.toml`, `setup.py`, `requirements.txt` [2], `Pipfile.lock`, `poetry.lock`, `pdm.lock`, `bdist_wheel`, `.whl`, `.egg-info` | Yes using the automatic pip install/freeze. When disabled, only with `Pipfile.lock` and `poetry.lock` | ✅ |
|
|
331
|
+
| Golang | `go`, `golang` | `binary`, `go.mod`, `go.sum`, `Gopkg.lock` | Yes except binary | ✅ |
|
|
332
|
+
| Rust | `rust`, `rust-lang`, `cargo` | `binary`, `Cargo.toml`, `Cargo.lock` | Only for `Cargo.lock` | - |
|
|
333
|
+
| Ruby | `ruby`, `gems` | `Gemfile.lock`, `gemspec` | Only for `Gemfile.lock` | - |
|
|
334
|
+
| .NET (#C) | `csharp`, `netcore`, `dotnet`, `vb`, `dotnet-framework` | `.csproj`, `.vbproj`, `.fsproj`, `packages.config`, `project.assets.json` [3], `packages.lock.json`, `.nupkg`, `paket.lock`, `binary` | Only for `project.assets.json`, `packages.lock.json`, `paket.lock` | - |
|
|
335
|
+
| Dart | `dart`, `flutter`, `pub` | `pubspec.lock`, `pubspec.yaml` | Only for `pubspec.lock` | - |
|
|
336
|
+
| Haskell | `haskell`, `hackage`, `cabal` | `cabal.project.freeze` | Yes | |
|
|
337
|
+
| Elixir | `elixir`, `hex`, `mix` | `mix.lock` | Yes | - |
|
|
338
|
+
| C++ | `c`, `cpp`, `c++`, `conan` | `conan.lock`, `conanfile.txt`, `\*.cmake`, `CMakeLists.txt`, `meson.build`, codebase without package managers! | Yes only for `conan.lock`. Best effort basis for `cmake` without version numbers. | ✅ |
|
|
339
|
+
| Clojure | `clojure`, `edn`, `clj`, `leiningen` | `deps.edn`, `project.clj` | Yes unless the files are parsed manually due to lack of clojure cli or leiningen command | - |
|
|
340
|
+
| GitHub Actions | `github`, `actions` | `.github/workflows/\*.yml` | n/a | ✅ |
|
|
341
|
+
| Operation System (OS) | `os`, `osquery`, `windows`, `linux`, `mac`, `macos`, `darwin` |
|
|
342
|
+
| Jenkins Plugins | `jenkins` | `.hpi files` | - | ✅ |
|
|
343
|
+
| Helm | `helm`, `charts` | `.yaml` | n/a | |
|
|
344
|
+
| Helm (Cache) | `helm-index`, `helm-repo` | `$HOME/.cache/helm/repository/\*\*/\*.yaml` | - | - |
|
|
345
|
+
| Container | `universal`, `containerfile`, `docker-compose`, `dockerfile`, `swarm`, `tekton`, `kustomize`, `operator`, `skaffold`, `kubernetes`, `openshift`, `yaml-manifest` | `.yaml`, `docker-compose\*.yml`, `*Dockerfile*`, `*Containerfile*`, `bitbucket-pipelines.yml` | n/a | - |
|
|
346
|
+
| Google Cloud Build | `cloudbuild` | `cloudbuild.yaml` | n/a | - |
|
|
347
|
+
| Swift (iOS) | `swift` | `Package.resolved`, `Package.swift` (swiftpm) | Yes | - |
|
|
348
|
+
| Binary | `binary`, `blint` |
|
|
349
|
+
| Open API | Open API Specification, Swagger | `openapi\*.json`, `openapi\*.yaml` | n/a | - |
|
|
341
350
|
|
|
342
351
|
## Reachability analysis
|
|
343
352
|
|
|
@@ -380,6 +389,30 @@ The following environment variables can be used to customize the behavior.
|
|
|
380
389
|
- VDB_HOME - Directory to use for caching database. For docker-based execution, this directory should get mounted as a volume from the host
|
|
381
390
|
- VDB_DATABASE_URL - Vulnerability DB URL. Defaults to: ghcr.io/appthreat/vdbgz:v5
|
|
382
391
|
- USE_VDB_10Y - Set to true to use the larger 10-year vulnerability database. Default download url: ghcr.io/appthreat/vdb-10y:v5
|
|
392
|
+
- VDB_APP_ONLY - Set to true to use a special app-only vulnerability database. Default download url: ghcr.io/appthreat/vdbgz-app:v5
|
|
393
|
+
|
|
394
|
+
Example 1 - Run depscan with app-only vdb.
|
|
395
|
+
|
|
396
|
+
```shell
|
|
397
|
+
docker run --rm \
|
|
398
|
+
-e VDB_HOME=/db \
|
|
399
|
+
-e VDB_APP_ONLY=true \
|
|
400
|
+
-e SCAN_DEBUG_MODE=debug \
|
|
401
|
+
-v /tmp:/db \
|
|
402
|
+
-v $PWD:/app ghcr.io/owasp-dep-scan/dep-scan --src /app --reports-dir /app/reports
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
Example 2 - Run depscan with a larger 10 year app-only vdb.
|
|
406
|
+
|
|
407
|
+
```shell
|
|
408
|
+
docker run --rm \
|
|
409
|
+
-e VDB_HOME=/db \
|
|
410
|
+
-e VDB_APP_ONLY=true \
|
|
411
|
+
-e USE_VDB_10Y=true \
|
|
412
|
+
-e SCAN_DEBUG_MODE=debug \
|
|
413
|
+
-v /tmp:/db \
|
|
414
|
+
-v $PWD:/app ghcr.io/owasp-dep-scan/dep-scan --src /app --reports-dir /app/reports
|
|
415
|
+
```
|
|
383
416
|
|
|
384
417
|
## GitHub Security Advisory
|
|
385
418
|
|
|
@@ -521,7 +554,7 @@ The objects available are taken from the CycloneDX \*.vdr.json BOM file generate
|
|
|
521
554
|
`pkg_group_rows` - List of vulnerability id and the dependency tree prioritized by depscan.
|
|
522
555
|
|
|
523
556
|
Furthermore, insights are imaginable to be made available to the template, please reach out or contribute on demand.
|
|
524
|
-
We appreciate it if you like to contribute your report templates as examples, please add/find them [here](contrib/report-templates
|
|
557
|
+
We appreciate it if you like to contribute your report templates as examples, please add/find them [here](contrib/report-templates).
|
|
525
558
|
|
|
526
559
|
## Performance tuning
|
|
527
560
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "owasp-depscan"
|
|
3
|
-
version = "5.
|
|
3
|
+
version = "5.5.0"
|
|
4
4
|
description = "Fully open-source security audit for project dependencies based on known vulnerabilities and advisories."
|
|
5
5
|
authors = [
|
|
6
6
|
{name = "Team AppThreat", email = "cloud@appthreat.com"},
|
|
7
7
|
]
|
|
8
8
|
dependencies = [
|
|
9
|
-
"appthreat-vulnerability-db==5.
|
|
9
|
+
"appthreat-vulnerability-db==5.8.1",
|
|
10
10
|
"defusedxml",
|
|
11
11
|
"oras~=0.1.26",
|
|
12
12
|
"PyYAML",
|
|
@@ -708,8 +708,7 @@ def test_cvss_to_vdr_rating():
|
|
|
708
708
|
"severity": "HIGH",
|
|
709
709
|
}
|
|
710
710
|
# Test missing score and vector string
|
|
711
|
-
assert cvss_to_vdr_rating(res) == [
|
|
712
|
-
{'method': 'CVSSv31', 'score': 2.0, 'severity': 'high'}]
|
|
711
|
+
assert cvss_to_vdr_rating(res) == []
|
|
713
712
|
# Test parsing
|
|
714
713
|
res["cvss_v3"]["vector_string"] = ("CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I"
|
|
715
714
|
":N/A:H")
|
|
@@ -729,6 +728,24 @@ def test_cvss_to_vdr_rating():
|
|
|
729
728
|
'severity': 'high',
|
|
730
729
|
'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'
|
|
731
730
|
}]
|
|
731
|
+
assert cvss_to_vdr_rating({
|
|
732
|
+
"cvss_v3": {
|
|
733
|
+
"vector_string": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:H"
|
|
734
|
+
},
|
|
735
|
+
"cvss4_vector_string": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:H/SA:H"
|
|
736
|
+
}) == [{
|
|
737
|
+
'method': 'CVSSv4',
|
|
738
|
+
'score': 7.9,
|
|
739
|
+
'severity': 'high',
|
|
740
|
+
'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:H/SA:H'
|
|
741
|
+
},
|
|
742
|
+
{
|
|
743
|
+
'method': 'CVSSv31',
|
|
744
|
+
'score': 10.0,
|
|
745
|
+
'severity': 'critical',
|
|
746
|
+
'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:H'
|
|
747
|
+
}
|
|
748
|
+
]
|
|
732
749
|
|
|
733
750
|
|
|
734
751
|
def test_get_version_range():
|
|
@@ -393,7 +393,7 @@ Exhibit A - Source Code Form License Notice
|
|
|
393
393
|
|
|
394
394
|
This Source Code Form is subject to the terms of the Mozilla Public
|
|
395
395
|
License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
396
|
-
file, You can obtain one at
|
|
396
|
+
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
397
397
|
|
|
398
398
|
If it is not possible or desirable to put the notice in a particular
|
|
399
399
|
file, then You may include the notice in a location (such as a LICENSE
|