Skip to content

Instantly share code, notes, and snippets.

@sbs2001
Last active June 20, 2020 10:43
Show Gist options
  • Select an option

  • Save sbs2001/f6bb87fd756787088a6acdc782fe22e3 to your computer and use it in GitHub Desktop.

Select an option

Save sbs2001/f6bb87fd756787088a6acdc782fe22e3 to your computer and use it in GitHub Desktop.
This is comparision of new models vs old models

Vulnerability model diff

Old Vulnerability model

class Vulnerability(models.Model):
   cve_id = models.CharField(max_length=50, help_text='CVE ID', unique=True, null=True)
   summary = models.TextField(help_text='Summary of the vulnerability', blank=True)
   cvss = models.FloatField(max_length=100, help_text='CVSS Score', null=True)

New Vulnerability model

class Vulnerability(models.Model):
   vuln_id = models.CharField(max_length=50, help_text='CVE ID', unique=True, null=True)
   reference_ids = pgfields.ArrayField(
       models.CharField(max_length=50,help_text='Reference ID, eg:DSA-4465-1'),default=list)

ImpactedPackage

We would delete `ResolvedPackage` and maybe rename ImpactedPackage to something else.

Old ImpactedPackage

class ImpactedPackage(models.Model):
   vulnerability = models.ForeignKey(Vulnerability, on_delete=models.CASCADE)
   package = models.ForeignKey(Package, on_delete=models.CASCADE)

   class Meta:
       unique_together = ('vulnerability', 'package')

New ImpactedPackage

class ImpactedPackage(models.Model):
   vulnerability = models.ForeignKey(Vulnerability, on_delete=models.CASCADE)
   package = models.ForeignKey(Package, on_delete=models.CASCADE)
   version_range = models.CharField(max_length=30,default='=')
   is_vulnerable = models.BooleanField()

   class Meta:
       unique_together = ('vulnerability', 'package')

VulnerabilityReference

Old VulnerabilityReference

class VulnerabilityReference(models.Model):
   vulnerability = models.ForeignKey(
       Vulnerability, on_delete=models.CASCADE)
   source = models.CharField(
       max_length=50, help_text='Source(s) name eg:NVD', blank=True)
   reference_id = models.CharField(
       max_length=50, help_text='Reference ID, eg:DSA-4465-1', blank=True)
   url = models.URLField(
       max_length=1024, help_text='URL of Vulnerability data', blank=True)

   class Meta:
       unique_together = ('vulnerability', 'source', 'reference_id', 'url')
      

New VulnerabilityReference

class VulnerabilityReference(models.Model):
   vulnerability = models.ForeignKey(
       Vulnerability, on_delete=models.CASCADE,required=True)
   source = models.ForeignKey(
       Importer, on_delete=models.CASCADE, required=True)
   urls = pgfields.ArrayField(models.URLField(
       max_length=1024, help_text='URL of Vulnerability data'),default=list)

   summary = models.TextField(help_text='Summary of the vulnerability', blank=True)
   cvss_v1 = models.FloatField(max_length=100, help_text='CVSS_v1 Score', null=True)
   cvss_v2 = models.FloatField(max_length=100, help_text='CVSS_v2 Score', null=True)
   cvss_v3 = models.FloatField(max_length=100, help_text='CVSS_v3 Score', null=True)
   cvss_v3_1 = models.FloatField(max_length=100, help_text='CVSS_v3.1 Score', null=True)
   severity_text = models.CharField(max_length=10,help_text='Values like MEDIUM, LOW, HIGH',blank=True)

   class Meta:
       unique_together = ('vulnerability', 'source')
@pombredanne
Copy link

Could you put that in a ticket or in a pr so we can comment there?

@sbs2001
Copy link
Author

sbs2001 commented Jun 20, 2020

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment