Skip to content

Commit 561272c

Browse files
authored
Merge branch 'main' into add-curl-advisories-importer
2 parents 4b1aae7 + 84a35db commit 561272c

File tree

108 files changed

+6236
-1519
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

108 files changed

+6236
-1519
lines changed

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ toml==0.10.2
106106
tomli==2.0.1
107107
traitlets==5.1.1
108108
typing_extensions==4.1.1
109-
univers==30.11.0
109+
univers==30.12.0
110110
urllib3==1.26.19
111111
wcwidth==0.2.5
112112
websocket-client==0.59.0

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ install_requires =
7171

7272
#essentials
7373
packageurl-python>=0.10.5rc1
74-
univers>=30.11.0
74+
univers>=30.12.0
7575
license-expression>=21.6.14
7676

7777
# file and data formats

vulnerabilities/api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class VulnerabilityReferenceSerializer(serializers.ModelSerializer):
4747

4848
class Meta:
4949
model = VulnerabilityReference
50-
fields = ["reference_url", "reference_id", "scores", "url"]
50+
fields = ["reference_url", "reference_id", "reference_type", "scores", "url"]
5151

5252

5353
class BaseResourceSerializer(serializers.HyperlinkedModelSerializer):

vulnerabilities/importer.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ def from_dict(cls, severity: dict):
7676
@dataclasses.dataclass(order=True)
7777
class Reference:
7878
reference_id: str = ""
79+
reference_type: str = ""
7980
url: str = ""
8081
severities: List[VulnerabilitySeverity] = dataclasses.field(default_factory=list)
8182

@@ -85,11 +86,17 @@ def __post_init__(self):
8586

8687
def normalized(self):
8788
severities = sorted(self.severities)
88-
return Reference(reference_id=self.reference_id, url=self.url, severities=severities)
89+
return Reference(
90+
reference_id=self.reference_id,
91+
url=self.url,
92+
severities=severities,
93+
reference_type=self.reference_type,
94+
)
8995

9096
def to_dict(self):
9197
return {
9298
"reference_id": self.reference_id,
99+
"reference_type": self.reference_type,
93100
"url": self.url,
94101
"severities": [severity.to_dict() for severity in self.severities],
95102
}
@@ -98,6 +105,7 @@ def to_dict(self):
98105
def from_dict(cls, ref: dict):
99106
return cls(
100107
reference_id=ref["reference_id"],
108+
reference_type=ref["reference_type"],
101109
url=ref["url"],
102110
severities=[
103111
VulnerabilitySeverity.from_dict(severity) for severity in ref["severities"]

vulnerabilities/importers/fireeye.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,9 @@ def get_references(references):
8989
"""
9090
Return a list of Reference from a list of URL reference in md format
9191
>>> get_references(["- http://1-4a.com/cgi-bin/alienform/af.cgi"])
92-
[Reference(reference_id='', url='http://1-4a.com/cgi-bin/alienform/af.cgi', severities=[])]
92+
[Reference(reference_id='', reference_type='', url='http://1-4a.com/cgi-bin/alienform/af.cgi', severities=[])]
9393
>>> get_references(["- [Mitre CVE-2021-42712](https://www.cve.org/CVERecord?id=CVE-2021-42712)"])
94-
[Reference(reference_id='', url='https://www.cve.org/CVERecord?id=CVE-2021-42712', severities=[])]
94+
[Reference(reference_id='', reference_type='', url='https://www.cve.org/CVERecord?id=CVE-2021-42712', severities=[])]
9595
"""
9696
urls = []
9797
for ref in references:

vulnerabilities/improve_runner.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,12 +98,14 @@ def process_inferences(
9898

9999
reference = VulnerabilityReference.objects.get_or_none(
100100
reference_id=ref.reference_id,
101+
reference_type=ref.reference_type,
101102
url=ref.url,
102103
)
103104

104105
if not reference:
105106
reference = create_valid_vulnerability_reference(
106107
reference_id=ref.reference_id,
108+
reference_type=ref.reference_type,
107109
url=ref.url,
108110
)
109111
if not reference:
@@ -167,14 +169,15 @@ def process_inferences(
167169
return inferences_processed_count
168170

169171

170-
def create_valid_vulnerability_reference(url, reference_id=None):
172+
def create_valid_vulnerability_reference(url, reference_type="", reference_id=None):
171173
"""
172174
Create and return a new validated VulnerabilityReference from a
173175
``url`` and ``reference_id``.
174176
Return None and log a warning if this is not a valid reference.
175177
"""
176178
reference = VulnerabilityReference(
177179
reference_id=reference_id,
180+
reference_type=reference_type,
178181
url=url,
179182
)
180183

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Generated by Django 4.1.13 on 2024-08-01 22:03
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("vulnerabilities", "0057_kev"),
10+
]
11+
12+
operations = [
13+
migrations.AlterModelOptions(
14+
name="vulnerabilityreference",
15+
options={"ordering": ["reference_id", "url", "reference_type"]},
16+
),
17+
migrations.AddField(
18+
model_name="vulnerabilityreference",
19+
name="reference_type",
20+
field=models.CharField(
21+
blank=True,
22+
choices=[
23+
("advisory", "Advisory"),
24+
("exploit", "Exploit"),
25+
("mailing_list", "Mailing List"),
26+
("bug", "Bug"),
27+
("other", "Other"),
28+
],
29+
max_length=20,
30+
),
31+
),
32+
]

vulnerabilities/models.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,22 @@ class VulnerabilityReference(models.Model):
359359
unique=True,
360360
)
361361

362+
ADVISORY = "advisory"
363+
EXPLOIT = "exploit"
364+
MAILING_LIST = "mailing_list"
365+
BUG = "bug"
366+
OTHER = "other"
367+
368+
REFERENCE_TYPES = [
369+
(ADVISORY, "Advisory"),
370+
(EXPLOIT, "Exploit"),
371+
(MAILING_LIST, "Mailing List"),
372+
(BUG, "Bug"),
373+
(OTHER, "Other"),
374+
]
375+
376+
reference_type = models.CharField(max_length=20, choices=REFERENCE_TYPES, blank=True)
377+
362378
reference_id = models.CharField(
363379
max_length=200,
364380
help_text="An optional reference ID, such as DSA-4465-1 when available",
@@ -368,7 +384,7 @@ class VulnerabilityReference(models.Model):
368384
objects = VulnerabilityReferenceQuerySet.as_manager()
369385

370386
class Meta:
371-
ordering = ["reference_id", "url"]
387+
ordering = ["reference_id", "url", "reference_type"]
372388

373389
def __str__(self):
374390
reference_id = f" {self.reference_id}" if self.reference_id else ""

vulnerabilities/templates/packages.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
<span
4949
class="has-tooltip-multiline has-tooltip-black has-tooltip-arrow has-tooltip-text-left"
5050
data-tooltip="This is the number of vulnerabilities fixed by the package.">
51-
<span class="affected-fixed">Fixed by</span> vulnerabilities
51+
<span class="affected-fixed">Fixing</span> vulnerabilities
5252
</span>
5353
</th>
5454
</tr>

vulnerabilities/templates/vulnerability_details.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@
244244
<thead>
245245
<tr>
246246
<th style="width: 250px;"> Reference id </th>
247+
<th style="width: 250px;"> Reference type </th>
247248
<th> URL </th>
248249
</tr>
249250
</thead>
@@ -254,6 +255,13 @@
254255
{% else %}
255256
<td></td>
256257
{% endif %}
258+
259+
{% if ref.reference_type %}
260+
<td class="wrap-strings">{{ ref.get_reference_type_display }}</td>
261+
{% else %}
262+
<td></td>
263+
{% endif %}
264+
257265
<td class="wrap-strings"><a href="{{ ref.url }}" target="_blank">{{ ref.url }}<i
258266
class="fa fa-external-link fa_link_custom"></i></a></td>
259267
</tr>

0 commit comments

Comments
 (0)