Skip to content

Instantly share code, notes, and snippets.

@sbs2001
Created June 20, 2020 13:29
Show Gist options
  • Select an option

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

Select an option

Save sbs2001/85a6d6a3a4e9f988518a892bbf51389a to your computer and use it in GitHub Desktop.
This is the script used to get the SQL queries upon writing an Advisory to db
from collections import OrderedDict
from packageurl import PackageURL
from vulnerabilities import models
from vulnerabilities.data_source import Advisory
from vulnerabilities.import_runner import _get_or_create_package
from vulnerabilities.import_runner import _get_or_create_vulnerability
def update_advisory(advisory: Advisory) :
vuln, _ = _get_or_create_vulnerability(advisory)
for id_ in advisory.reference_ids:
models.VulnerabilityReference.objects.get_or_create(
vulnerability=vuln, reference_id=id_)
for url in advisory.reference_urls:
models.VulnerabilityReference.objects.get_or_create(vulnerability=vuln, url=url)
for ipkg_url in advisory.impacted_package_urls:
pkg, created = _get_or_create_package(ipkg_url)
# FIXME Does not work yet due to cascading deletes.
# if not created:
# qs = models.ResolvedPackage.objects.filter(
# vulnerability_id=vuln.id, package_id=pkg.id)
# if qs:
# qs[0].delete()
models.ImpactedPackage.objects.get_or_create(
vulnerability_id=vuln.id, package_id=pkg.id)
for rpkg_url in advisory.resolved_package_urls:
pkg, created = _get_or_create_package(rpkg_url)
# FIXME Does not work yet due to cascading deletes.
# if not created:
# qs = models.ImpactedPackage.objects.filter(
# vulnerability_id=vuln.id, package_id=pkg.id)
# if qs:
# qs[0].delete()
models.ResolvedPackage.objects.get_or_create(
vulnerability_id=vuln.id, package_id=pkg.id)
sample_adv = Advisory(
summary=('Heap-based buffer overflow in the bm_readbody_bmp function'
' in bitmap_io.c in potrace before 1.13 allows remote attackers to '
'have unspecified impact via a crafted BMP image, a different '
'vulnerability than CVE-2016-8698, CVE-2016-8699, '
'CVE-2016-8700, CVE-2016-8701, and CVE-2016-8702.'),
impacted_package_urls={
PackageURL(
type='deb',
namespace=None,
name='potrace',
version='0.3.0',
qualifiers=OrderedDict(),
subpath=None),
PackageURL(
type='deb',
namespace=None,
name='potrace',
version='0.2.0',
qualifiers=OrderedDict(),
subpath=None)},
resolved_package_urls={
PackageURL(
type='deb',
namespace=None,
name='potrace',
version='2.14-2',
qualifiers=OrderedDict(),
subpath=None)},
reference_urls={
'http://people.canonical.com/~ubuntu-security/cve/2016/CVE-2016-8703.html',
'https://blogs.gentoo.org/ago/2016/08/08/potrace-multiplesix-heap-based-buffer-overflow-in-bm_readbody_bmp-bitmap_io-c/',
'https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8703'},
reference_ids=[],
cve_id='CVE-2016-8703')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment