Skip to content

Commit 19146e5

Browse files
committed
Add pipeline to mark advisory as unfurled
Signed-off-by: Tushar Goel <tushar.goel.dav@gmail.com>
1 parent f641395 commit 19146e5

25 files changed

Lines changed: 1054 additions & 353 deletions

CHANGELOG.rst

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ next release
55
---------------------
66

77
- WARNING: Vulnerablecode V1 API and UI has stopped supporting Ubuntu OVAL advisories, please shift to V3 API for new Ubuntu advisories.
8-
- Add attribute ``pipeline_id`` to AdvisoryV2 to track the pipeline that created the advisory, also rename existing ``datasource_id`` and AVIDs.
8+
- WARNING: We will deprecate improver pipelines for calculating package version rank and grouping advisories for packages in the next release, we are doing it at advisory import time instead of as separate pipelines, this will improve the performance and consistency of the data.
9+
- Calculate package verion rank, group advisories for packages and package risk score and advisory risk score during import of advisories.
10+
- Add attribute ``pipeline_id`` to AdvisoryV2 to track the pipeline that created the advisory, also rename existing ``datasource_id`` and AVIDs.
11+
912

1013
Version v38.6.0
1114
---------------------

vulnerabilities/api_v3.py

Lines changed: 150 additions & 71 deletions
Large diffs are not rendered by default.

vulnerabilities/improvers/__init__.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,30 +9,24 @@
99

1010
from vulnerabilities.improvers import valid_versions
1111
from vulnerabilities.improvers import vulnerability_status
12-
from vulnerabilities.pipelines import add_cvss31_to_CVEs
1312
from vulnerabilities.pipelines import compute_package_risk
1413
from vulnerabilities.pipelines import compute_package_version_rank
1514
from vulnerabilities.pipelines import enhance_with_exploitdb
1615
from vulnerabilities.pipelines import enhance_with_kev
1716
from vulnerabilities.pipelines import enhance_with_metasploit
1817
from vulnerabilities.pipelines import flag_ghost_packages
1918
from vulnerabilities.pipelines import populate_vulnerability_summary_pipeline
20-
from vulnerabilities.pipelines import remove_duplicate_advisories
2119
from vulnerabilities.pipelines.v2_improvers import archive_urls
2220
from vulnerabilities.pipelines.v2_improvers import collect_ssvc_trees
2321
from vulnerabilities.pipelines.v2_improvers import compute_advisory_todo as compute_advisory_todo_v2
2422
from vulnerabilities.pipelines.v2_improvers import compute_package_risk as compute_package_risk_v2
25-
from vulnerabilities.pipelines.v2_improvers import (
26-
computer_package_version_rank as compute_version_rank_v2,
27-
)
2823
from vulnerabilities.pipelines.v2_improvers import enhance_with_exploitdb as exploitdb_v2
2924
from vulnerabilities.pipelines.v2_improvers import enhance_with_github_poc
3025
from vulnerabilities.pipelines.v2_improvers import enhance_with_kev as enhance_with_kev_v2
3126
from vulnerabilities.pipelines.v2_improvers import (
3227
enhance_with_metasploit as enhance_with_metasploit_v2,
3328
)
3429
from vulnerabilities.pipelines.v2_improvers import flag_ghost_packages as flag_ghost_packages_v2
35-
from vulnerabilities.pipelines.v2_improvers import group_advisories_for_packages
3630
from vulnerabilities.pipelines.v2_improvers import reference_collect_commits
3731
from vulnerabilities.pipelines.v2_improvers import relate_severities
3832
from vulnerabilities.pipelines.v2_improvers import unfurl_version_range as unfurl_version_range_v2
@@ -62,20 +56,16 @@
6256
enhance_with_exploitdb.ExploitDBImproverPipeline,
6357
compute_package_risk.ComputePackageRiskPipeline,
6458
compute_package_version_rank.ComputeVersionRankPipeline,
65-
add_cvss31_to_CVEs.CVEAdvisoryMappingPipeline,
66-
remove_duplicate_advisories.RemoveDuplicateAdvisoriesPipeline,
6759
populate_vulnerability_summary_pipeline.PopulateVulnerabilitySummariesPipeline,
6860
exploitdb_v2.ExploitDBImproverPipeline,
6961
enhance_with_kev_v2.VulnerabilityKevPipeline,
7062
flag_ghost_packages_v2.FlagGhostPackagePipeline,
7163
enhance_with_metasploit_v2.MetasploitImproverPipeline,
7264
compute_package_risk_v2.ComputePackageRiskPipeline,
73-
compute_version_rank_v2.ComputeVersionRankPipeline,
7465
unfurl_version_range_v2.UnfurlVersionRangePipeline,
7566
collect_ssvc_trees.CollectSSVCPipeline,
7667
relate_severities.RelateSeveritiesPipeline,
7768
archive_urls.ArchiveImproverPipeline,
78-
group_advisories_for_packages.GroupAdvisoriesForPackages,
7969
compute_advisory_todo_v2.ComputeToDo,
8070
reference_collect_commits.CollectReferencesFixCommitsPipeline,
8171
enhance_with_github_poc.GithubPocsImproverPipeline,
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Generated by Django 5.2.11 on 2026-05-26 08:07
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("vulnerabilities", "0132_migrate_advisoryv2_datasource_ids"),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name="advisoryv2",
15+
name="advisory_id",
16+
field=models.CharField(
17+
db_index=True,
18+
help_text="An advisory is a unique vulnerability identifier in some database, such as PYSEC-2020-2233",
19+
max_length=200,
20+
),
21+
),
22+
migrations.AlterField(
23+
model_name="advisoryv2",
24+
name="avid",
25+
field=models.CharField(
26+
help_text="Unique ID for the datasource used for this advisory .e.g.: pysec_importer_v2/PYSEC-2020-2233",
27+
max_length=250,
28+
),
29+
),
30+
migrations.AlterField(
31+
model_name="advisoryv2",
32+
name="datasource_id",
33+
field=models.CharField(
34+
db_index=True,
35+
help_text="Unique ID for the datasource used for this advisory .e.g.: nginx",
36+
max_length=50,
37+
),
38+
),
39+
migrations.AlterField(
40+
model_name="advisoryv2",
41+
name="pipeline_id",
42+
field=models.CharField(
43+
db_index=True,
44+
help_text="Unique ID for the pipeline used for this advisory .e.g.: nginx_importer_v2",
45+
max_length=50,
46+
),
47+
),
48+
]
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Generated by Django 5.2.11 on 2026-05-28 13:58
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("vulnerabilities", "0133_alter_advisoryv2_advisory_id_alter_advisoryv2_avid_and_more"),
10+
]
11+
12+
operations = [
13+
migrations.AlterUniqueTogether(
14+
name="advisoryset",
15+
unique_together={("package", "relation_type", "primary_advisory")},
16+
),
17+
]
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Generated by Django 5.2.11 on 2026-06-01 10:56
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("vulnerabilities", "0134_alter_advisoryset_unique_together"),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name="advisoryv2",
15+
name="_all_impacts_unfurled",
16+
field=models.BooleanField(
17+
default=False,
18+
help_text="Indicates whether all impacts for this advisory have been unfurled.",
19+
),
20+
),
21+
]
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Generated by Django 5.2.11 on 2026-06-01 11:25
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("vulnerabilities", "0135_advisoryv2__all_impacts_unfurled"),
10+
]
11+
12+
operations = [
13+
migrations.AddIndex(
14+
model_name="impactedpackage",
15+
index=models.Index(
16+
fields=["advisory", "last_range_unfurl_at"], name="vulnerabili_advisor_1e3414_idx"
17+
),
18+
),
19+
]

0 commit comments

Comments
 (0)