예제 #1
0
def wrap_entries(target_entries):
    """
    Wraps all Vulnerability/Nvd entries into the VulnerabilityView class.
    :return:
    """
    new_entries = []
    if not target_entries:
        return

    first_element = target_entries[0]
    if isinstance(first_element, Nvd):
        for nvd in target_entries:
            vuln_view = VulnerabilityView(None, nvd, preview=True)
            new_entries.append(vuln_view)
    elif isinstance(first_element, Vulnerability):
        for vulnerability in target_entries:
            vuln_view = VulnerabilityView(vulnerability, None, preview=True)
            new_entries.append(vuln_view)
    else:
        for [vulnerability, nvd] in target_entries:
            vuln_view = VulnerabilityView(vulnerability, nvd, preview=True)
            new_entries.append(vuln_view)

    del target_entries[:]
    target_entries.extend(new_entries)
예제 #2
0
def wrap_entries(target_entries):
    """
    Wraps all Vulnerability/Nvd entries into the VulnerabilityView class.
    :return:
    """
    new_entries = []
    if not target_entries:
        return

    first_element = target_entries[0]
    if isinstance(first_element, Nvd):
        for nvd in target_entries:
            vuln_view = VulnerabilityView(None, nvd, preview=True)
            new_entries.append(vuln_view)
    elif isinstance(first_element, Vulnerability):
        for vulnerability in target_entries:
            vuln_view = VulnerabilityView(vulnerability, None, preview=True)
            new_entries.append(vuln_view)
    else:
        for columns in target_entries:
            vulnerability = columns[0]
            nvd = columns[1]
            if len(columns) > 2 and isinstance(columns[2], bool):
                annotation_exists = columns[2]
                vulnerability.set_has_annotations(annotation_exists)

            vuln_view = VulnerabilityView(vulnerability, nvd, preview=True)
            new_entries.append(vuln_view)

    del target_entries[:]
    target_entries.extend(new_entries)
예제 #3
0
    def _wrap_items(self):
        """
    Wraps Vulnerability/Nvd items with the VulnerabilityView class.
    :return:
    """
        new_items = []
        if not self.items:
            return

        first_element = self.items[0]
        if isinstance(first_element, Nvd):
            for nvd in self.items:
                vuln_view = VulnerabilityView(None, nvd, preview=True)
                new_items.append(vuln_view)
        elif isinstance(first_element, Vulnerability):
            for vulnerability in self.items:
                vuln_view = VulnerabilityView(vulnerability,
                                              None,
                                              preview=True)
                new_items.append(vuln_view)
        else:
            for [vulnerability, nvd] in self.items:
                vuln_view = VulnerabilityView(vulnerability, nvd, preview=True)
                new_items.append(vuln_view)

        self.items = new_items
예제 #4
0
    def _fetch_data(self):
        self._fetch_by_id()
        commit = self.get_master_commit()
        if commit:
            commit = self._vulnerability.master_commit
            self.commit_link = commit.commit_link
            self.commit_hash = commit.commit_hash
            self.repo_url = commit.repo_url
        # Initialize VCS specific data.
        self._init_repo_data()
        self._fetch_by_commit_hash()

        # Fetch IDs from vulnerability entry if it exists.
        if self._vulnerability:
            self.vcdb_id = str(self._vulnerability.vcdb_id)
            self.vuln_id = str(self._vulnerability.id)
            if self._vulnerability.cve_id:
                self.cve_id = self._vulnerability.cve_id

        # Fetch corresponding NVD data if possible.
        if self.cve_id:
            self._nvd_data = Nvd.get_by_cve_id(self.cve_id)
        elif self.commit_hash:
            self._nvd_data = Nvd.get_by_commit_hash(self.commit_hash)

        # Make sure to always use the properly formatted CVE-ID if available.
        if self._nvd_data:
            self.cve_id = self._nvd_data.cve_id

        if self._vulnerability or self._nvd_data:
            self.fetch_tree_cache()
            self.vulnerability_view = VulnerabilityView(
                self._vulnerability, self._nvd_data)