Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion vulnerabilities/api_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -788,7 +788,7 @@ def get_latest_run(self, schedule):

def to_representation(self, schedule):
representation = super().to_representation(schedule)
representation["run_interval"] = f"{schedule.run_interval}hr"
representation["run_interval"] = f"{schedule.run_interval}min"
representation["execution_timeout"] = f"{schedule.execution_timeout}hr"
return representation

Expand Down
62 changes: 31 additions & 31 deletions vulnerabilities/importers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,37 +159,37 @@
collect_fix_commits_v2.CollectGitFixCommitsPipeline,
collect_fix_commits_v2.CollectJenkinsFixCommitsPipeline,
collect_fix_commits_v2.CollectGitlabFixCommitsPipeline,
github_importer.GitHubAPIImporterPipeline,
gitlab_importer.GitLabImporterPipeline,
github_osv.GithubOSVImporter,
pypa_importer.PyPaImporterPipeline,
npm_importer.NpmImporterPipeline,
nginx_importer.NginxImporterPipeline,
pysec_importer.PyPIImporterPipeline,
apache_tomcat.ApacheTomcatImporter,
postgresql.PostgreSQLImporter,
debian.DebianImporter,
curl.CurlImporter,
epss.EPSSImporter,
vulnrichment.VulnrichImporter,
alpine_linux_importer.AlpineLinuxImporterPipeline,
apache_kafka.ApacheKafkaImporter,
ruby.RubyImporter,
redhat.RedhatImporter,
archlinux.ArchlinuxImporter,
debian_oval.DebianOvalImporter,
retiredotnet.RetireDotnetImporter,
apache_httpd.ApacheHTTPDImporter,
mozilla.MozillaImporter,
gentoo.GentooImporter,
istio.IstioImporter,
project_kb_msr2019.ProjectKBMSRImporter,
suse_scores.SUSESeverityScoreImporter,
elixir_security.ElixirSecurityImporter,
xen.XenImporter,
ubuntu_usn.UbuntuUSNImporter,
fireeye.FireyeImporter,
oss_fuzz.OSSFuzzImporter,
# github_importer.GitHubAPIImporterPipeline,
# gitlab_importer.GitLabImporterPipeline,
# github_osv.GithubOSVImporter,
# pypa_importer.PyPaImporterPipeline,
# npm_importer.NpmImporterPipeline,
# nginx_importer.NginxImporterPipeline,
# pysec_importer.PyPIImporterPipeline,
# apache_tomcat.ApacheTomcatImporter,
# postgresql.PostgreSQLImporter,
# debian.DebianImporter,
# curl.CurlImporter,
# epss.EPSSImporter,
# vulnrichment.VulnrichImporter,
# alpine_linux_importer.AlpineLinuxImporterPipeline,
# apache_kafka.ApacheKafkaImporter,
# ruby.RubyImporter,
# redhat.RedhatImporter,
# archlinux.ArchlinuxImporter,
# debian_oval.DebianOvalImporter,
# retiredotnet.RetireDotnetImporter,
# apache_httpd.ApacheHTTPDImporter,
# mozilla.MozillaImporter,
# gentoo.GentooImporter,
# istio.IstioImporter,
# project_kb_msr2019.ProjectKBMSRImporter,
# suse_scores.SUSESeverityScoreImporter,
# elixir_security.ElixirSecurityImporter,
# xen.XenImporter,
# ubuntu_usn.UbuntuUSNImporter,
# fireeye.FireyeImporter,
# oss_fuzz.OSSFuzzImporter,
]
)

Expand Down
76 changes: 41 additions & 35 deletions vulnerabilities/improvers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,14 @@
from vulnerabilities.pipelines import enhance_with_metasploit
from vulnerabilities.pipelines import flag_ghost_packages
from vulnerabilities.pipelines import populate_vulnerability_summary_pipeline
from vulnerabilities.pipelines.v2_improvers import archive_urls
from vulnerabilities.pipelines.v2_improvers import collect_ssvc_trees
from vulnerabilities.pipelines.v2_improvers import archive_urls as archive_urls_v2
from vulnerabilities.pipelines.v2_improvers import collect_ssvc_trees as collect_ssvc_trees_v2
from vulnerabilities.pipelines.v2_improvers import compute_advisory_todo as compute_advisory_todo_v2
from vulnerabilities.pipelines.v2_improvers import compute_package_risk as compute_package_risk_v2
from vulnerabilities.pipelines.v2_improvers import enhance_with_exploitdb as exploitdb_v2
from vulnerabilities.pipelines.v2_improvers import enhance_with_github_poc
from vulnerabilities.pipelines.v2_improvers import (
enhance_with_github_poc as enhance_with_github_poc_v2,
)
from vulnerabilities.pipelines.v2_improvers import enhance_with_kev as enhance_with_kev_v2
from vulnerabilities.pipelines.v2_improvers import (
enhance_with_metasploit as enhance_with_metasploit_v2,
Expand All @@ -30,9 +32,13 @@
from vulnerabilities.pipelines.v2_improvers import (
group_advisories_for_packages as group_advisories_for_packages_v2,
)
from vulnerabilities.pipelines.v2_improvers import mark_unfurl_version_range
from vulnerabilities.pipelines.v2_improvers import reference_collect_commits
from vulnerabilities.pipelines.v2_improvers import relate_severities
from vulnerabilities.pipelines.v2_improvers import (
mark_unfurl_version_range as mark_unfurl_version_range_v2,
)
from vulnerabilities.pipelines.v2_improvers import (
reference_collect_commits as reference_collect_commits_v2,
)
from vulnerabilities.pipelines.v2_improvers import relate_severities as relate_severities_v2
from vulnerabilities.pipelines.v2_improvers import unfurl_version_range as unfurl_version_range_v2
from vulnerabilities.utils import create_registry

Expand All @@ -44,36 +50,36 @@
enhance_with_metasploit_v2.MetasploitImproverPipeline,
compute_package_risk_v2.ComputePackageRiskPipeline,
unfurl_version_range_v2.UnfurlVersionRangePipeline,
collect_ssvc_trees.CollectSSVCPipeline,
relate_severities.RelateSeveritiesPipeline,
archive_urls.ArchiveImproverPipeline,
collect_ssvc_trees_v2.CollectSSVCPipeline,
relate_severities_v2.RelateSeveritiesPipeline,
archive_urls_v2.ArchiveImproverPipeline,
compute_advisory_todo_v2.ComputeToDo,
reference_collect_commits.CollectReferencesFixCommitsPipeline,
enhance_with_github_poc.GithubPocsImproverPipeline,
mark_unfurl_version_range.MarkUnfurlVersionRangePipeline,
valid_versions.GitHubBasicImprover,
valid_versions.GitLabBasicImprover,
valid_versions.NginxBasicImprover,
valid_versions.ApacheHTTPDImprover,
valid_versions.DebianBasicImprover,
valid_versions.NpmImprover,
valid_versions.ElixirImprover,
valid_versions.ApacheTomcatImprover,
valid_versions.ApacheKafkaImprover,
valid_versions.IstioImprover,
valid_versions.DebianOvalImprover,
valid_versions.OSSFuzzImprover,
valid_versions.RubyImprover,
valid_versions.GithubOSVImprover,
vulnerability_status.VulnerabilityStatusImprover,
valid_versions.CurlImprover,
flag_ghost_packages.FlagGhostPackagePipeline,
enhance_with_kev.VulnerabilityKevPipeline,
enhance_with_metasploit.MetasploitImproverPipeline,
enhance_with_exploitdb.ExploitDBImproverPipeline,
compute_package_risk.ComputePackageRiskPipeline,
compute_package_version_rank.ComputeVersionRankPipeline,
populate_vulnerability_summary_pipeline.PopulateVulnerabilitySummariesPipeline,
reference_collect_commits_v2.CollectReferencesFixCommitsPipeline,
enhance_with_github_poc_v2.GithubPocsImproverPipeline,
mark_unfurl_version_range_v2.MarkUnfurlVersionRangePipeline,
group_advisories_for_packages_v2.GroupAdvisoriesForPackages,
# valid_versions.GitHubBasicImprover,
# valid_versions.GitLabBasicImprover,
# valid_versions.NginxBasicImprover,
# valid_versions.ApacheHTTPDImprover,
# valid_versions.DebianBasicImprover,
# valid_versions.NpmImprover,
# valid_versions.ElixirImprover,
# valid_versions.ApacheTomcatImprover,
# valid_versions.ApacheKafkaImprover,
# valid_versions.IstioImprover,
# valid_versions.DebianOvalImprover,
# valid_versions.OSSFuzzImprover,
# valid_versions.RubyImprover,
# valid_versions.GithubOSVImprover,
# vulnerability_status.VulnerabilityStatusImprover,
# valid_versions.CurlImprover,
# flag_ghost_packages.FlagGhostPackagePipeline,
# enhance_with_kev.VulnerabilityKevPipeline,
# enhance_with_metasploit.MetasploitImproverPipeline,
# enhance_with_exploitdb.ExploitDBImproverPipeline,
# compute_package_risk.ComputePackageRiskPipeline,
# compute_package_version_rank.ComputeVersionRankPipeline,
# populate_vulnerability_summary_pipeline.PopulateVulnerabilitySummariesPipeline,
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Generated by Django 5.2.11 on 2026-06-16 12:29

import django.core.validators
from django.db import migrations
from django.db import models
from django.db.models import F


class Migration(migrations.Migration):

dependencies = [
("vulnerabilities", "0136_advisorysetmember_unique_advisory_per_set"),
]

def convert_hours_to_minutes(apps, schema_editor):
PipelineSchedule = apps.get_model("vulnerabilities", "PipelineSchedule")
PipelineSchedule.objects.update(run_interval=F("run_interval") * 60)

def revert_convert_hours_to_minutes(apps, schema_editor):
PipelineSchedule = apps.get_model("vulnerabilities", "PipelineSchedule")
for schedule in PipelineSchedule.objects.all():
schedule.run_interval = min(8760, max(1, schedule.run_interval // 60))
schedule.save(update_fields=["run_interval"])

operations = [
migrations.AlterField(
model_name="pipelineschedule",
name="run_interval",
field=models.IntegerField(
default=720,
help_text="Number of minutes to wait between run of this pipeline.",
validators=[
django.core.validators.MinValueValidator(
5, message="Interval must be at least 5 minutes."
),
django.core.validators.MaxValueValidator(
43200, message="Interval must be at most 43200 minutes (i.e 30 days)."
),
],
),
),
migrations.RunPython(
convert_hours_to_minutes,
revert_convert_hours_to_minutes,
),
]
12 changes: 7 additions & 5 deletions vulnerabilities/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2302,13 +2302,15 @@ class ExecutionPriority(models.IntegerChoices):
),
)

run_interval = models.PositiveSmallIntegerField(
run_interval = models.IntegerField(
validators=[
MinValueValidator(1, message="Interval must be at least 1 hour."),
MaxValueValidator(8760, message="Interval must be at most 8760 hours."),
MinValueValidator(5, message="Interval must be at least 5 minutes."),
MaxValueValidator(
43200, message="Interval must be at most 43200 minutes (i.e 30 days)."
),
],
default=24,
help_text=("Number of hours to wait between run of this pipeline."),
default=720,
help_text=("Number of minutes to wait between run of this pipeline."),
)

run_priority = models.IntegerField(
Expand Down
12 changes: 6 additions & 6 deletions vulnerabilities/pipelines/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,8 @@ class VulnerableCodePipeline(PipelineDefinition, BasePipelineRun):
# When set to true pipeline is run only once.
# To rerun onetime pipeline reset is_active field to True via migration.
run_once = False
# Interval between runs in hour.
run_interval = 24
# Interval between runs in minutes.
run_interval = 720
run_priority = PipelineSchedule.ExecutionPriority.DEFAULT

def on_failure(self):
Expand Down Expand Up @@ -180,8 +180,8 @@ class VulnerableCodeBaseImporterPipeline(VulnerableCodePipeline):
# When set to true pipeline is run only once.
# To rerun onetime pipeline reset is_active field to True via migration.
run_once = False
# Interval between runs in hour.
run_interval = 24
# Interval between runs in minutes.
run_interval = 720
run_priority = PipelineSchedule.ExecutionPriority.DEFAULT

@classmethod
Expand Down Expand Up @@ -290,8 +290,8 @@ class VulnerableCodeBaseImporterPipelineV2(VulnerableCodePipeline):
# When set to true pipeline is run only once.
# To rerun onetime pipeline reset is_active field to True via migration.
run_once = False
# Interval between runs in hour.
run_interval = 24
# Interval between runs in minutes.
run_interval = 720
run_priority = PipelineSchedule.ExecutionPriority.DEFAULT

@classmethod
Expand Down
5 changes: 5 additions & 0 deletions vulnerabilities/pipelines/v2_improvers/collect_ssvc_trees.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
from vulnerabilities.models import SSVC
from vulnerabilities.models import AdvisorySeverity
from vulnerabilities.models import AdvisoryV2
from vulnerabilities.models import PipelineSchedule
from vulnerabilities.pipelines import VulnerableCodePipeline
from vulnerabilities.severity_systems import SCORING_SYSTEMS

Expand All @@ -31,6 +32,10 @@ class CollectSSVCPipeline(VulnerableCodePipeline):

pipeline_id = "collect_ssvc_trees"

# Run pipeline every 30 minutes.
run_interval = 30
run_priority = PipelineSchedule.ExecutionPriority.HIGH

@classmethod
def steps(cls):
return (cls.collect_ssvc_data,)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
from vulnerabilities.models import AdvisorySeverity
from vulnerabilities.models import AdvisoryV2
from vulnerabilities.models import PackageV2
from vulnerabilities.models import PipelineSchedule
from vulnerabilities.pipelines import VulnerableCodePipeline
from vulnerabilities.pipes.risk_score import bulk_update
from vulnerabilities.risk import compute_vulnerability_risk_factors
Expand All @@ -30,6 +31,10 @@ class ComputePackageRiskPipeline(VulnerableCodePipeline):
pipeline_id = "compute_package_risk_v2"
license_expression = None

# Run pipeline every 30 minutes.
run_interval = 30
run_priority = PipelineSchedule.ExecutionPriority.HIGH

@classmethod
def steps(cls):
return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from dateutil import parser as dateparser

from vulnerabilities.models import AdvisoryExploit
from vulnerabilities.models import PipelineSchedule
from vulnerabilities.pipelines import VulnerableCodePipeline
from vulnerabilities.utils import build_alias_to_advisory_map

Expand All @@ -30,6 +31,10 @@ class ExploitDBImproverPipeline(VulnerableCodePipeline):
pipeline_id = "enhance_with_exploitdb_v2"
spdx_license_expression = "GPL-2.0"

# Run pipeline every 30 minutes.
run_interval = 30
run_priority = PipelineSchedule.ExecutionPriority.HIGH

@classmethod
def steps(cls):
return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@
from aboutcode.pipeline import LoopProgress
from fetchcode.vcs import fetch_via_vcs

from vulnerabilities.models import AdvisoryAlias
from vulnerabilities.models import AdvisoryPOC
from vulnerabilities.models import AdvisoryV2
from vulnerabilities.pipelines import VulnerableCodePipeline
from vulnerabilities.utils import relate_aliases_with_advisories

Expand Down
5 changes: 5 additions & 0 deletions vulnerabilities/pipelines/v2_improvers/enhance_with_kev.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from aboutcode.pipeline import LoopProgress

from vulnerabilities.models import AdvisoryExploit
from vulnerabilities.models import PipelineSchedule
from vulnerabilities.pipelines import VulnerableCodePipeline
from vulnerabilities.utils import build_alias_to_advisory_map

Expand All @@ -27,6 +28,10 @@ class VulnerabilityKevPipeline(VulnerableCodePipeline):
pipeline_id = "enhance_with_kev_v2"
license_expression = None

# Run pipeline every 30 minutes.
run_interval = 30
run_priority = PipelineSchedule.ExecutionPriority.HIGH

@classmethod
def steps(cls):
return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
from dateutil import parser as dateparser

from vulnerabilities.models import AdvisoryExploit
from vulnerabilities.models import PipelineSchedule
from vulnerabilities.pipelines import VulnerableCodePipeline
from vulnerabilities.utils import build_alias_to_advisory_map

Expand All @@ -29,6 +30,10 @@ class MetasploitImproverPipeline(VulnerableCodePipeline):
pipeline_id = "enhance_with_metasploit_v2"
spdx_license_expression = "BSD-3-clause"

# Run pipeline every 30 minutes.
run_interval = 30
run_priority = PipelineSchedule.ExecutionPriority.HIGH

@classmethod
def steps(cls):
return (
Expand Down
3 changes: 3 additions & 0 deletions vulnerabilities/pipelines/v2_improvers/flag_ghost_packages.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ class FlagGhostPackagePipeline(VulnerableCodePipeline):

pipeline_id = "flag_ghost_packages_v2"

# Run pipeline every 6 hours.
run_interval = 360

@classmethod
def steps(cls):
return (cls.flag_ghost_packages,)
Expand Down
Loading