Created
June 20, 2020 13:29
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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