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: README.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,7 @@ A good vulnerability database must have the following properties:
10
10
- Easy to [download](#download-pre-built-database-recommended), [integrate](./INTEGRATION.md), and use
11
11
- Performance
12
12
13
-
Multiple upstream sources are used by vdb to improve accuracy and reduce false negatives. SQLite database containing data in CVE 5.1 schema format is precompiled and distributed as files via ghcr to simplify download. With automatic purl prefix generation even for git repos, searches on the database can be performed with purl, cpe, or even http git url string. Every row in the database uses an open specification such as CVE 5.0 or Package URL (purl and vers) thus preventing the possibility of vendor lock-in.
13
+
Multiple upstream sources are used by vdb to improve accuracy and reduce false negatives. SQLite database containing data in CVE 5.2 schema format is precompiled and distributed as files via ghcr to simplify download. With automatic purl prefix generation even for git repos, searches on the database can be performed with purl, cpe, or even http git url string. Every row in the database uses an open specification such as CVE 5.2 or Package URL (purl and vers) thus preventing the possibility of vendor lock-in.
14
14
15
15
## Vulnerability Data sources
16
16
@@ -40,7 +40,7 @@ Multiple upstream sources are used by vdb to improve accuracy and reduce false n
40
40
## Installation
41
41
42
42
```shell
43
-
pip install appthreat-vulnerability-db>=6.2.0
43
+
pip install appthreat-vulnerability-db>=6.5.0
44
44
```
45
45
46
46
To install vdb with optional dependencies such as `oras` use the `[oras]` or `[all]` dependency group.
@@ -82,7 +82,7 @@ Use any sqlite browser or cli tools to load and query the two databases.
"description": "cve-schema specifies the CVE JSON record format. This is the blueprint for a rich set of JSON data that can be submitted by CVE Numbering Authorities (CNAs) and Authorized Data Publishers (ADPs) to describe a CVE Record. Some examples of CVE Record data include CVE ID number, affected product(s), affected version(s), and public references. While those specific items are required when assigning a CVE, there are many other optional data in the schema that can be used to enrich CVE Records for community benefit. Learn more about the CVE program at [the official website](https://cve.mitre.org). This CVE JSON record format is defined using JSON Schema. Learn more about JSON Schema [here](https://json-schema.org/).",
6
+
"description": "cve-schema specifies the CVE JSON record format. This is the blueprint for a rich set of JSON data that can be submitted by CVE Numbering Authorities (CNAs) and Authorized Data Publishers (ADPs) to describe a CVE Record. Some examples of CVE Record data include CVE ID number, affected product(s), affected version(s), and public references. While those specific items are required when assigning a CVE, there are many other optional data in the schema that can be used to enrich CVE Records for community benefit. Learn more about the CVE program at [the official website](https://www.cve.org). This CVE JSON record format is defined using JSON Schema. Learn more about JSON Schema [here](https://json-schema.org/).",
6
7
"definitions": {
7
8
"uriType": {
8
9
"description": "A universal resource identifier (URI), according to [RFC 3986](https://tools.ietf.org/html/rfc3986).",
@@ -51,8 +52,23 @@
51
52
},
52
53
"cveId": {
53
54
"type": "string",
55
+
"description":"The official CVE identifier contains the string 'CVE', followed by the year, followed by a 4 to 19 digit number. Note that the year-part of the identifier should indicate either the year the vulnerability was discovered, or the year the CVE ID is published in. CVE IDs must be unique.",
54
56
"pattern": "^CVE-[0-9]{4}-[0-9]{4,19}$"
55
57
},
58
+
"cpe22and23": {
59
+
"type": "string",
60
+
"description":"Common Platform Enumeration (CPE) Name in either 2.2 or 2.3 format",
"description": "A UUID for an organization participating in the CVE program. This UUID can be used to lookup the organization record in the user registry service.",
58
74
"$ref": "#/definitions/uuidType"
@@ -106,6 +122,7 @@
106
122
]
107
123
}
108
124
],
125
+
"additionalProperties": false,
109
126
"properties": {
110
127
"vendor": {
111
128
"type": "string",
@@ -196,15 +213,12 @@
196
213
},
197
214
"cpes": {
198
215
"type": "array",
199
-
"description": "Affected products defined by CPE. This is an array of CPE values (vulnerable and not), we use an array so that we can make multiple statements about the same version and they are separate (if we used a JSON object we'd essentially be keying on the CPE name and they would have to overlap). Also, this allows things like cveDataVersion or cveDescription to be applied directly to the product entry. This also allows more complex statements such as \"Product X between versions 10.2 and 10.8\" to be put in a machine-readable format. As well since multiple statements can be used multiple branches of the same product can be defined here.",
216
+
"description": "Affected products defined by CPE. This is an array of CPE values (vulnerable and not), we use an array so that we can make multiple statements about the same version and they are separate (if we used a JSON object we'd essentially be keying on the CPE name and they would have to overlap). Also, this allows things like cveDataVersion or cveDescription to be applied directly to the product entry. This also allows more complex statements such as \"Product X between versions 10.2 and 10.8\" to be put in a machine-readable format. As well since multiple statements can be used multiple branches of the same product can be defined here. NOTE: Consider using the newer cpeApplicability block for defining CPE data using the CPE Applicability Language which includes more options for defining CPE Names.",
200
217
"uniqueItems": true,
201
218
"items": {
202
219
"title": "CPE Name",
203
-
"type": "string",
204
220
"description":"Common Platform Enumeration (CPE) Name in either 2.2 or 2.3 format",
"description": "Set of product versions or version ranges related to the vulnerability. The versions satisfy the CNA Rules [8.1.2 requirement](https://cve.mitre.org/cve/cna/rules.html#section_8-1_cve_entry_information_requirements). Versions or defaultStatus may be omitted, but not both.",
289
+
"description": "Set of product versions or version ranges related to the vulnerability. The versions help satisfy the CNA Rules [5.1.3 requirement](https://www.cve.org/ResourcesSupport/AllResources/CNARules#section_5-1_Required_CVE_Record_Content). Versions or defaultStatus may be omitted, but not both.",
276
290
"minItems": 1,
277
291
"uniqueItems": true,
278
292
"items": {
@@ -350,6 +364,28 @@
350
364
},
351
365
"additionalProperties": false
352
366
}
367
+
},
368
+
"packageURL": {
369
+
"description": "A Package URL, a unified URL specification for identifying packages hosted by known package hosts. The Package URL MUST NOT include a version.",
"description": "This is meta data about the CVE ID such as the CVE ID, who requested it, who assigned it, when it was requested, the current state (PUBLISHED, REJECTED, etc.) and so on. These fields are controlled by the CVE Services.",
@@ -487,6 +523,87 @@
487
523
"required": ["orgId"],
488
524
"additionalProperties": false
489
525
},
526
+
"cpeApplicabilityElement": {
527
+
"description": "Affected products defined using an implementation of the CPE Applicability Language, mostly copied/forked from the NIST NVD CVE API v2.0 schema (optional). An operator property allows AND or OR logic between CPEs or combinations of CPEs. The negate and vulnerable Boolean properties allow CPEs to be inverted and/or defined as vulnerable or not. Multiple version fields are provided for capturing ranges of products when defining a CPE Match String Range. NOTE: When defining a cpeApplicability block, it is recommended that it align with (as much as possible) the product data provided within the affected block.",
528
+
"properties": {
529
+
"operator": {
530
+
"type": "string",
531
+
"enum": [
532
+
"AND",
533
+
"OR"
534
+
]
535
+
},
536
+
"negate": {
537
+
"type": "boolean"
538
+
},
539
+
"nodes": {
540
+
"type": "array",
541
+
"items": {
542
+
"$ref": "#/definitions/cpe_node"
543
+
}
544
+
}
545
+
},
546
+
"required": [
547
+
"nodes"
548
+
]
549
+
},
550
+
"cpe_node": {
551
+
"description": "Defines a CPE configuration node in an applicability statement.",
552
+
"properties": {
553
+
"operator": {
554
+
"type": "string",
555
+
"enum": [
556
+
"AND",
557
+
"OR"
558
+
]
559
+
},
560
+
"negate": {
561
+
"type": "boolean"
562
+
},
563
+
"cpeMatch": {
564
+
"type": "array",
565
+
"items": {
566
+
"$ref": "#/definitions/cpe_match"
567
+
}
568
+
}
569
+
},
570
+
"required": [
571
+
"operator",
572
+
"cpeMatch"
573
+
]
574
+
},
575
+
"cpe_match": {
576
+
"description": "CPE match string or range",
577
+
"type": "object",
578
+
"properties": {
579
+
"vulnerable": {
580
+
"type": "boolean"
581
+
},
582
+
"criteria": {
583
+
"$ref": "#/definitions/cpe23"
584
+
},
585
+
"matchCriteriaId": {
586
+
"$ref": "#/definitions/uuidType"
587
+
},
588
+
"versionStartExcluding": {
589
+
"$ref": "#/definitions/version"
590
+
},
591
+
"versionStartIncluding": {
592
+
"$ref": "#/definitions/version"
593
+
},
594
+
"versionEndExcluding": {
595
+
"$ref": "#/definitions/version"
596
+
},
597
+
"versionEndIncluding": {
598
+
"$ref": "#/definitions/version"
599
+
}
600
+
},
601
+
"required": [
602
+
"vulnerable",
603
+
"criteria"
604
+
],
605
+
"additionalProperties": false
606
+
},
490
607
"cnaPublishedContainer": {
491
608
"description": "An object containing the vulnerability information provided by a CVE Numbering Authority (CNA) for a published CVE ID. There can only be one CNA container per CVE record since there can only be one assigning CNA. The CNA container must include the required information defined in the CVE Rules, which includes a product, version, problem type, prose description, and a reference.",
0 commit comments