ds-analysis-lib 6.3.0__tar.gz → 6.3.2__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.
Files changed (66) hide show
  1. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/PKG-INFO +8 -8
  2. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/pyproject.toml +9 -8
  3. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/config.py +37 -1
  4. ds_analysis_lib-6.3.2/src/analysis_lib/data/__init__.py +1 -0
  5. ds_analysis_lib-6.3.2/src/analysis_lib/data/cyclonedx/bom-1.4.schema.json +1697 -0
  6. ds_analysis_lib-6.3.2/src/analysis_lib/data/cyclonedx/bom-1.5.schema.json +3799 -0
  7. ds_analysis_lib-6.3.2/src/analysis_lib/data/cyclonedx/bom-1.6.schema.json +5699 -0
  8. ds_analysis_lib-6.3.2/src/analysis_lib/data/cyclonedx/bom-1.7.schema.json +6700 -0
  9. ds_analysis_lib-6.3.2/src/analysis_lib/data/cyclonedx/cryptography-defs.schema.json +592 -0
  10. ds_analysis_lib-6.3.2/src/analysis_lib/data/cyclonedx/jsf-0.82.schema.json +240 -0
  11. ds_analysis_lib-6.3.2/src/analysis_lib/data/cyclonedx/spdx.schema.json +1632 -0
  12. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/golem_slices.py +81 -10
  13. ds_analysis_lib-6.3.2/src/analysis_lib/helpers.py +54 -0
  14. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/normalize.py +22 -20
  15. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/output.py +125 -58
  16. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/reachability.py +2 -2
  17. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/utils.py +126 -62
  18. ds_analysis_lib-6.3.2/src/analysis_lib/validation.py +151 -0
  19. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/vdr.py +8 -2
  20. ds_analysis_lib-6.3.2/src/analysis_lib/vex/dates.py +87 -0
  21. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/vex/emit.py +31 -6
  22. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/vex/models.py +1 -1
  23. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/vex/product_tree.py +2 -1
  24. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/vex/refs.py +57 -4
  25. ds_analysis_lib-6.3.2/src/analysis_lib/vex/semantic.py +557 -0
  26. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/vex/tracking.py +4 -15
  27. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/vex/vulnerabilities.py +67 -17
  28. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/ds_analysis_lib.egg-info/PKG-INFO +8 -8
  29. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/ds_analysis_lib.egg-info/SOURCES.txt +16 -0
  30. ds_analysis_lib-6.3.2/src/ds_analysis_lib.egg-info/requires.txt +7 -0
  31. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/tests/test_analysis.py +2 -1
  32. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/tests/test_dosai_runner.py +7 -7
  33. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/tests/test_golem_runner.py +7 -7
  34. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/tests/test_golem_slices.py +166 -10
  35. ds_analysis_lib-6.3.2/tests/test_imports.py +57 -0
  36. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/tests/test_norm.py +64 -0
  37. ds_analysis_lib-6.3.2/tests/test_output.py +328 -0
  38. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/tests/test_reachability.py +24 -24
  39. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/tests/test_rusi_runner.py +7 -7
  40. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/tests/test_rusi_slices.py +5 -11
  41. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/tests/test_search.py +5 -14
  42. ds_analysis_lib-6.3.2/tests/test_utils.py +804 -0
  43. ds_analysis_lib-6.3.2/tests/test_validation.py +110 -0
  44. ds_analysis_lib-6.3.2/tests/test_vdr.py +527 -0
  45. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/tests/test_vex.py +344 -6
  46. ds_analysis_lib-6.3.0/src/ds_analysis_lib.egg-info/requires.txt +0 -7
  47. ds_analysis_lib-6.3.0/tests/test_utils.py +0 -328
  48. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/README.md +0 -0
  49. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/setup.cfg +0 -0
  50. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/__init__.py +0 -0
  51. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/dosai_slices.py +0 -0
  52. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/rusi_slices.py +0 -0
  53. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/search.py +0 -0
  54. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/vex/__init__.py +0 -0
  55. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/vex/csaf.py +0 -0
  56. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/vex/cvss.py +0 -0
  57. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/vex/data/csaf_2.0_json_schema.json +0 -0
  58. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/vex/data/csaf_2.1_json_schema.json +0 -0
  59. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/vex/data/cvss/cvss-v2.0.json +0 -0
  60. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/vex/data/cvss/cvss-v3.0.json +0 -0
  61. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/vex/data/cvss/cvss-v3.1.json +0 -0
  62. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/vex/data/cvss/cvss-v4.0.json +0 -0
  63. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/analysis_lib/vex/reachability.py +0 -0
  64. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/ds_analysis_lib.egg-info/dependency_links.txt +0 -0
  65. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/src/ds_analysis_lib.egg-info/top_level.txt +0 -0
  66. {ds_analysis_lib-6.3.0 → ds_analysis_lib-6.3.2}/tests/test_dosai_slices.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ds-analysis-lib
3
- Version: 6.3.0
3
+ Version: 6.3.2
4
4
  Summary: Analysis library for owasp depscan
5
5
  Author-email: Team AppThreat <cloud@appthreat.com>
6
6
  License-Expression: MIT
@@ -20,10 +20,10 @@ Classifier: Topic :: Security
20
20
  Classifier: Topic :: Utilities
21
21
  Requires-Python: >=3.10
22
22
  Description-Content-Type: text/markdown
23
- Requires-Dist: appthreat-vulnerability-db[oras]~=6.7.2
24
- Requires-Dist: custom-json-diff>=2.1.6
25
- Requires-Dist: cvss>=3.4
26
- Requires-Dist: jsonschema>=4.20
27
- Requires-Dist: referencing>=0.31
28
- Requires-Dist: rich>=13.9.4
29
- Requires-Dist: toml>=0.10.2
23
+ Requires-Dist: appthreat-vulnerability-db[oras]~=6.7.7
24
+ Requires-Dist: custom-json-diff~=2.1.6
25
+ Requires-Dist: cvss~=3.6
26
+ Requires-Dist: jsonschema~=4.26.0
27
+ Requires-Dist: referencing~=0.37.0
28
+ Requires-Dist: rich~=15.0.0
29
+ Requires-Dist: toml~=0.10.2
@@ -1,18 +1,18 @@
1
1
  [project]
2
2
  name = "ds-analysis-lib"
3
- version = "6.3.0"
3
+ version = "6.3.2"
4
4
  description = "Analysis library for owasp depscan"
5
5
  authors = [
6
6
  {name = "Team AppThreat", email = "cloud@appthreat.com"},
7
7
  ]
8
8
  dependencies = [
9
- "appthreat-vulnerability-db[oras]~=6.7.2",
10
- "custom-json-diff>=2.1.6",
11
- "cvss>=3.4",
12
- "jsonschema>=4.20",
13
- "referencing>=0.31",
14
- "rich>=13.9.4",
15
- "toml>=0.10.2"
9
+ "appthreat-vulnerability-db[oras]~=6.7.7",
10
+ "custom-json-diff~=2.1.6",
11
+ "cvss~=3.6",
12
+ "jsonschema~=4.26.0",
13
+ "referencing~=0.37.0",
14
+ "rich~=15.0.0",
15
+ "toml~=0.10.2"
16
16
  ]
17
17
 
18
18
  requires-python = ">=3.10"
@@ -44,6 +44,7 @@ build-backend = "setuptools.build_meta"
44
44
 
45
45
  [tool.setuptools.package-data]
46
46
  "analysis_lib.vex.data" = ["*.json", "cvss/*.json"]
47
+ "analysis_lib.data" = ["cyclonedx/*.json"]
47
48
 
48
49
  [tool.pytest.ini_options]
49
50
  minversion = "6.0"
@@ -22,6 +22,24 @@ def get_int_from_env(name, default):
22
22
  return value
23
23
 
24
24
 
25
+ # BOM generation profiles understood by cdxgen. This is the single source of
26
+ # truth shared by the CLI (`--profile`) and the server (`/scan?profile=`): the
27
+ # value is forwarded to cdxgen as a command line argument, so any caller
28
+ # supplying it must constrain it to this set.
29
+ SUPPORTED_BOM_PROFILES = (
30
+ "appsec",
31
+ "research",
32
+ "operational",
33
+ "threat-modeling",
34
+ "license-compliance",
35
+ "generic",
36
+ "machine-learning",
37
+ "ml",
38
+ "deep-learning",
39
+ "ml-deep",
40
+ "ml-tiny",
41
+ )
42
+
25
43
  # CPE Full Regex including unused parameters
26
44
  CPE_FULL_REGEX = re.compile(
27
45
  "cpe:?:[^:]+:(?P<cve_type>[^:]+):(?P<vendor>[^:]+):(?P<package>[^:]+):(?P<version>[^:]+):(?P<update>[^:]+):(?P<edition>[^:]+):(?P<lang>[^:]+):(?P<sw_edition>[^:]+):(?P<target_sw>[^:]+):(?P<target_hw>[^:]+):(?P<other>[^:]+)"
@@ -307,7 +325,10 @@ TIME_FMT = "%Y-%m-%dT%H:%M:%S"
307
325
  CWE_SPLITTER = re.compile(r"(?<=CWE-)[0-9]\d{0,5}", re.IGNORECASE)
308
326
  JFROG_ADVISORY = re.compile(r"(?P<id>jfsa\S+)", re.IGNORECASE)
309
327
  ADVISORY = re.compile(
310
- r"(?P<org>[^\s./]+).(?:com|org)/(?:[\S]+)?/(?P<id>(?:(?:ghsa|ntap|rhsa|rhba|zdi|dsa|cisco|intel|usn)-)?[\w\d\-:]{5,})",
328
+ # A dot is part of the id only before a digit, so version numbers in a
329
+ # slug survive (vulncheck's node-forge-through-1.4.0-rsa-...) while a
330
+ # file extension does not (intel-sa-00123.html -> intel-sa-00123).
331
+ r"(?P<org>[^\s./]+).(?:com|org)/(?:[\S]+)?/(?P<id>(?:(?:ghsa|ntap|rhsa|rhba|zdi|dsa|cisco|intel|usn)-)?[\w\d\-:]{5,}(?:\.\d[\w\d\-:]*)*)",
311
332
  re.IGNORECASE,
312
333
  )
313
334
 
@@ -1461,4 +1482,19 @@ SAFE_ENDPOINT_REACHABLE_PURLS = (
1461
1482
  "pkg:npm/bootstrap",
1462
1483
  )
1463
1484
 
1485
+ # Rubygems version strings may carry a platform suffix (e.g. the x86_64-linux
1486
+ # build of a gem with native extensions). create_pkg_variations adds an alias
1487
+ # that strips the suffix so the platform-independent advisory still matches.
1488
+ RUBY_PLATFORM_MARKERS = [
1489
+ "-x86_64",
1490
+ "-x86",
1491
+ "-x64",
1492
+ "-aarch",
1493
+ "-arm",
1494
+ "-ruby",
1495
+ "-universal",
1496
+ "-java",
1497
+ "-truffle",
1498
+ ]
1499
+
1464
1500
  MIN_POSTBUILD_CONFIDENCE = 0.5
@@ -0,0 +1 @@
1
+ """Bundled JSON schemas used by :mod:`analysis_lib.validation`."""