From 0c3167ee5fbbaee64f9f931250a74f4d4c17ec68 Mon Sep 17 00:00:00 2001 From: Christopher Langton Date: Fri, 8 Nov 2024 02:53:26 +1100 Subject: [PATCH] feat: queue improvements --- functions/api/issue/[uuid].js | 365 +------- functions/api/next-issue.js | 12 +- .../assets/images/icons/logo/cve.png | Bin .../assets/images/icons/logo/first.png | Bin src/assets/images/icons/logo/nvd.png | Bin 0 -> 17856 bytes src/assets/images/icons/logo/osv-logo.png | Bin 121194 -> 0 bytes .../assets/images/icons/logo/osv.png | Bin src/components/Finding.vue | 873 ++++++++++++------ src/finding.js | 363 ++++++++ .../DefaultLayoutWithVerticalNav.vue | 2 +- src/layouts/components/NavSearchBar.vue | 1 - src/pages/Integrations.vue | 9 +- src/pages/Issue.vue | 12 +- src/pages/NewIssues.vue | 24 +- src/stores/findingQueue.js | 23 - src/utils.js | 26 +- 16 files changed, 1035 insertions(+), 675 deletions(-) rename public/cve-logo.png => src/assets/images/icons/logo/cve.png (100%) rename public/1st-logo.png => src/assets/images/icons/logo/first.png (100%) create mode 100644 src/assets/images/icons/logo/nvd.png delete mode 100644 src/assets/images/icons/logo/osv-logo.png rename public/osv-logo.png => src/assets/images/icons/logo/osv.png (100%) create mode 100644 src/finding.js delete mode 100644 src/stores/findingQueue.js diff --git a/functions/api/issue/[uuid].js b/functions/api/issue/[uuid].js index 445b3e3..5c92f7f 100644 --- a/functions/api/issue/[uuid].js +++ b/functions/api/issue/[uuid].js @@ -1,5 +1,5 @@ -import { AuthResult, EPSS, MitreCVE, OSV, Server, constructVersionRangeString, convertIsoDatesToTimestamps } from "@/utils"; -import { CVSS30, CVSS31, CVSS40 } from '@pandatix/js-cvss'; +import { processFinding } from '@/finding'; +import { AuthResult, Server } from "@/utils"; import { PrismaD1 } from '@prisma/adapter-d1'; import { PrismaClient } from '@prisma/client'; @@ -25,8 +25,10 @@ export async function onRequestGet(context) { if (!verificationResult.isValid) { return Response.json({ ok: false, result: verificationResult.message }) } + const { searchParams } = new URL(request.url) + const seen = parseInt(searchParams.get('seen'), 10) || 0 const { uuid } = params - const finding = await prisma.Finding.findUnique({ + let finding = await prisma.Finding.findUnique({ where: { uuid, AND: { orgId: verificationResult.session.orgId } @@ -61,206 +63,7 @@ export async function onRequestGet(context) { if (!finding) { return new Response(null, { status: 404 }) } - const osvData = await new OSV().query(prisma, verificationResult.session.orgId, verificationResult.session.memberEmail, finding.detectionTitle) - finding.modifiedAt = (new Date(osvData.modified)).getTime() - finding.publishedAt = (new Date(osvData.published)).getTime() - finding.databaseReviewed = osvData?.database_specific?.github_reviewed ? 1 : 0 - finding.aliases = JSON.stringify(osvData?.aliases?.filter(a => a !== finding.cveId) || []) - finding.cwes = JSON.stringify(osvData?.database_specific?.cwe_ids || []) - finding.packageEcosystem = osvData.affected.map(affected => affected.package.ecosystem).pop() - finding.advisoryUrl = osvData.affected.map(affected => affected.database_specific.source).pop() - finding.fixVersion = osvData.affected.map(affected => affected.ranges.pop()?.events.pop()?.fixed).pop() - finding.vulnerableVersionRange = osvData.affected.map(affected => affected.database_specific.last_known_affected_version_range).pop() - finding.fixAutomatable = !!finding.vulnerableVersionRange && !!finding.fixVersion ? 1 : 0 - finding.malicious = osvData.id.startsWith("MAL-") ? 1 : 0 - finding.referencesJSON = JSON.stringify(osvData.references.map(reference => reference.url)) - - const cveId = finding.detectionTitle.startsWith('CVE-') ? finding.detectionTitle : osvData?.aliases?.filter(a => a.startsWith('CVE-')).pop() - let cvssVector - let cvssScore - let cvelistv5 - let cve - if (cveId) { - cve = await getCveData(prisma, env.r2artifacts, verificationResult, cveId) - } - if (cve?.fileLink?.url) { - const [, year, number] = cveId.split('-') - const objectPath = `cvelistv5/${year}/${number.slice(0, -3) + "xxx"}/${cveId}.json` - const r2object = await env.r2artifacts.get(objectPath) - if (r2object) { - try { - cvelistv5 = await r2object.json() - } catch (err) {} - } - } - if (cvelistv5) { - const { - cveMetadata, - containers: { cna, adp } - } = cvelistv5 - const cvssVector = findVectorString(cna.metrics) - if (cvssVector) { - if (cvssVector.startsWith('CVSS:4.0/')) { - cvssScore = new CVSS40(cvssVector).Score().toString() - } else if (cvssVector.startsWith('CVSS:3.1/')) { - cvssScore = new CVSS31(cvssVector).BaseScore().toString() - } else if (cvssVector.startsWith('CVSS:3.0/')) { - cvssScore = new CVSS30(cvssVector).BaseScore().toString() - } - } - if (cna?.timeline) { - finding.timelineJSON = JSON.stringify(cna.timeline.map(i => convertIsoDatesToTimestamps(i))) - } - // Extract CISA date - const cisaAdp = adp?.find(container => container.providerMetadata.shortName === 'CISA-ADP') - if (cisaAdp?.providerMetadata?.dateUpdated) { - finding.cisaDateAdded = new Date(cisaAdp.providerMetadata.dateUpdated).getTime() - } - // Get affected data from ADP and CNA - const adpAffected = adp.flatMap(container => container.affected || []) - const cnaAffected = cna.affected || [] - // Required properties we're looking for - const requiredProps = ['versions', 'vendor', 'product'] - // Find first valid affected data, preferring ADP over CNA - const primaryAffected = findFirstValidAffected(adpAffected, requiredProps) || - findFirstValidAffected(cnaAffected, requiredProps) || null - // Extract affected data ensuring valid values - const affectedData = { - versions: primaryAffected?.versions?.filter(v => isValidValue(v.version)) || [], - vendor: isValidValue(primaryAffected?.vendor) ? primaryAffected.vendor : null, - product: isValidValue(primaryAffected?.product) ? primaryAffected.product : null, - cpes: primaryAffected?.cpes?.filter(cpe => isValidValue(cpe))?.join('\n') - } - - if (cveMetadata?.datePublished) { - finding.publishedAt = new Date(cveMetadata.datePublished).getTime() - } - if (cveMetadata?.dateReserved) { - finding.createdAt = new Date(cveMetadata.dateReserved).getTime() - } - if (cveMetadata?.dateUpdated) { - finding.modifiedAt = new Date(cveMetadata.dateUpdated).getTime() - } - finding.vulnerableVersionRange = affectedData.versions.length > 0 ? constructVersionRangeString(affectedData.versions) : null - finding.cpe = affectedData?.cpes - finding.vendor = affectedData?.vendor - finding.product = affectedData?.product - } - const info = await prisma.Finding.update({ - where: { uuid }, - data: { - detectionTitle: finding.detectionTitle, - createdAt: finding.createdAt, - modifiedAt: finding.modifiedAt, - publishedAt: finding.publishedAt, - databaseReviewed: finding.databaseReviewed, - cisaDateAdded: finding.cisaDateAdded, - aliases: finding.aliases, - cwes: finding.cwes, - packageEcosystem: finding.packageEcosystem, - advisoryUrl: finding.advisoryUrl, - fixVersion: finding.fixVersion, - fixAutomatable: finding.fixAutomatable, - vulnerableVersionRange: finding.vulnerableVersionRange, - cpe: finding.cpe, - vendor: finding.vendor, - product: finding.product, - malicious: finding.malicious, - referencesJSON: finding.referencesJSON, - timelineJSON: finding.timelineJSON, - } - }) - // console.log(`Update ${finding.detectionTitle}`, info) - let scores - if (cveId) { - const epss = new EPSS() - scores = await epss.query(prisma, verificationResult.session.orgId, verificationResult.session.memberEmail, cveId) - } - let epssScore, epssPercentile; - if (scores?.epss) { - epssScore = parseFloat(scores.epss) - epssPercentile = parseFloat(scores.percentile) - } - const cvss = {} - if (!cvssVector) { - cvss.v4 = osvData?.severity?.filter(i => i.score.startsWith('CVSS:4/'))?.pop() - cvss.v31 = osvData?.severity?.filter(i => i.score.startsWith('CVSS:3.1/'))?.pop() - cvss.v3 = osvData?.severity?.filter(i => i.score.startsWith('CVSS:3/'))?.pop() - cvssVector = !!cvss.v4 ? cvss.v4.score : !!cvss.v31 ? cvss.v31.score : cvss.v3 ? cvss.v3.score : null - const vector = !!cvss.v4 ? new CVSS40(cvss.v4.score) : !!cvss.v31 ? new CVSS31(cvss.v31.score) : cvss.v3 ? new CVSS30(cvss.v3.score) : null - cvssScore = !!cvss.v4 ? vector.Score().toString() : !!cvss.v31 ? vector.BaseScore().toString() : cvss.v3 ? vector.BaseScore().toString() : null - } - // Decision - // Methodology - // Exploitation - // TechnicalImpact - // Automatable - // MissionWellbeingImpact - - const { searchParams } = new URL(request.url) - const seen = parseInt(searchParams.get('seen'), 10) || 0 - let { analysisState = 'in_triage', triageAutomated = 0, triagedAt = null, seenAt = null } = finding?.triage || {} - if ( - (cvssVector && ( - ['E:U', 'E:P', 'E:F', 'E:H'].some(substring => cvss.v3?.score?.includes(substring)) || - ['E:U', 'E:P', 'E:F', 'E:H'].some(substring => cvss.v31?.score?.includes(substring)) || - ['E:A', 'E:P', 'E:U'].some(substring => cvss.v4?.score?.includes(substring)) - )) || epssPercentile > 0.27 - ) { - analysisState = 'exploitable' - triageAutomated = 1 - if (!triagedAt) { - triagedAt = new Date().getTime() - } - } - if (seen === 1) { - seenAt = new Date().getTime() - } - const vexExist = finding.triage.filter(t => t.analysisState === analysisState).length !== 0 - let vexData = finding.triage.filter(t => t.analysisState === analysisState).pop() || {} - if (!vexExist) { - vexData.analysisState = analysisState - vexData.findingUuid = finding.uuid - vexData.createdAt = new Date().getTime() - vexData.lastObserved = new Date().getTime() - } - vexData.triageAutomated = triageAutomated - vexData.triagedAt = triagedAt - vexData.cvssVector = cvssVector - vexData.cvssScore = cvssScore - if (epssPercentile) { - vexData.epssPercentile = epssPercentile.toString() - } - if (epssScore) { - vexData.epssScore = epssScore.toString() - } - vexData.seen = seen - vexData.seenAt = seenAt - if (vexExist) { - const vexInfo = await prisma.Triage.update({ - where: { - uuid: vexData.uuid, - }, - data: vexData, - }) - // console.log(`Updated VEX ${finding.detectionTitle}`, vexInfo) - } else { - vexData = await prisma.Triage.create({ data: vexData }) - } - finding.triage = finding.triage.filter(f => f.uuid != vexData.uuid) - finding.triage.push(vexData) - - // expand JSON fields - finding.references = finding?.referencesJSON ? JSON.parse(finding.referencesJSON) : [] - finding.timeline = finding?.timelineJSON ? JSON.parse(finding.timelineJSON) : [] - finding.exploits = finding?.exploitsJSON ? JSON.parse(finding.exploitsJSON) : [] - finding.knownExploits = finding?.knownExploitsJSON ? JSON.parse(finding.knownExploitsJSON) : [] - finding.aliases = finding?.aliases ? JSON.parse(finding.aliases) : [] - finding.cwes = finding?.cwes ? JSON.parse(finding.cwes) : [] - delete finding.referencesJSON - delete finding.knownExploitsJSON - delete finding.timelineJSON - delete finding.exploitsJSON + finding = await processFinding(prisma, env.r2artifacts, verificationResult, finding, seen) let spdxJson, cdxJson; if (finding?.spdx?.artifact?.uuid) { @@ -294,159 +97,3 @@ export async function onRequestGet(context) { return Response.json({ ok: false, error: { message: err }, result: AuthResult.REVOKED }) } } - -// Helper function to check if a value is valid (exists and not "n/a") -const isValidValue = (value) => { - return value != null && value !== "n/a" && value !== ""; -}; - -// Helper function to find first affected entry with valid required properties -const findFirstValidAffected = (affectedList = [], requiredProps = []) => { - return affectedList.find(affected => - requiredProps.every(prop => { - if (prop === 'versions') { - return Array.isArray(affected.versions) && - affected.versions.length > 0 && - affected.versions.some(v => isValidValue(v.version)); - } - if (prop === 'cpes') { - return Array.isArray(affected.cpes) && - affected.cpes.length > 0 && - affected.cpes.some(cpe => isValidValue(cpe)); - } - return isValidValue(affected[prop]); - }) - ); -}; - -// Helper function to find valid CVSS vector string with version preference -const findVectorString = (metrics = []) => { - const cvssVersions = ['cvssV4_0', 'cvssV3_1', 'cvssV3_0'] - - for (const version of cvssVersions) { - for (const metric of metrics) { - const vectorString = metric[version]?.vectorString - if (isValidValue(vectorString)) { - return vectorString - } - } - } - return null -} - -// Helper function to find valid CVSS vector string with version preference -const getCveData = async (prisma, r2adapter, verificationResult, cveId) => { - let cve = await prisma.CVEMetadata.findUnique({ - where: { cveId }, - include: { - fileLink: true, - adp: true, - cna: true, - } - }) - if (!cve) { - cve = await fetchCVE(prisma, r2adapter, verificationResult, cveId) - } - return cve -} - -const fetchCVE = async (prisma, r2adapter, verificationResult, cveId) => { - const cvelistv5 = await new MitreCVE().query(prisma, verificationResult.session.orgId, verificationResult.session.memberEmail, cveId) - const { - cveMetadata, - dataVersion, - containers: { cna, adp = [] } - } = cvelistv5 - // Create or connect CNA organization - await prisma.cVENumberingAuthrity.upsert({ - where: { orgId: cna.providerMetadata.orgId }, - create: { - orgId: cna.providerMetadata.orgId, - shortName: cna.providerMetadata.shortName - }, - update: {} - }) - - // Get affected data from ADP and CNA - const adpAffected = adp.flatMap(container => container.affected || []); - const cnaAffected = cna.affected || []; - - // Required properties we're looking for - const requiredProps = ['versions', 'vendor', 'product']; - - // Find first valid affected data, preferring ADP over CNA - const primaryAffected = findFirstValidAffected(adpAffected, requiredProps) || - findFirstValidAffected(cnaAffected, requiredProps) || - null; - - // Extract affected data ensuring valid values - const affectedData = { - versions: primaryAffected?.versions?.filter(v => isValidValue(v.version)) || [], - vendor: isValidValue(primaryAffected?.vendor) ? primaryAffected.vendor : null, - product: isValidValue(primaryAffected?.product) ? primaryAffected.product : null, - cpes: primaryAffected?.cpes?.filter(cpe => isValidValue(cpe)) || [] - } - - const vectorString = findVectorString(cna.metrics) - - // Create file link for the source - const [, year, number] = cveId.split('-') - const objectPath = `cvelistv5/${year}/${number.slice(0, -3) + "xxx"}/${cveId}.json` - const putOptions = { httpMetadata: { contentType: 'application/json', contentEncoding: 'utf8' } } - await r2adapter.put(objectPath, JSON.stringify(cvelistv5), putOptions) - const fileLink = await prisma.Link.create({ - data: { - url: `https://artifacts.vulnetix.app/${objectPath}`, - contentType: "PLAIN_JSON" - } - }) - const update = { - dataVersion, - state: cveMetadata.state, - datePublished: new Date(cveMetadata.datePublished).getTime(), - dateUpdated: cveMetadata?.dateUpdated ? new Date(cveMetadata.dateUpdated).getTime() : null, - dateReserved: cveMetadata?.dateReserved ? new Date(cveMetadata.dateReserved).getTime() : null, - vectorString, - title: cna?.title || 'Mitre CVE', - sourceAdvisoryRef: isValidValue(cna.source?.advisory) ? cna.source.advisory : null, - affectedVendor: affectedData.vendor, - affectedProduct: affectedData.product, - affectedVersionsJSON: affectedData.versions.length > 0 ? JSON.stringify(affectedData.versions) : null, - cpesJSON: affectedData.cpes.length > 0 ? JSON.stringify(affectedData.cpes) : null, - cnaOrgId: cna.providerMetadata.orgId, - fileLinkId: fileLink.id - } - // Create the main CVE record - const cve = await prisma.CVEMetadata.upsert({ - where: { cveId }, - create: { - cveId, - ...update - }, - update, - }) - - // Link ADP records - for (const adpContainer of adp) { - const { providerMetadata, title = '' } = adpContainer - await prisma.authorizedDataPublisher.upsert({ - where: { orgId: providerMetadata.orgId }, - create: { - orgId: providerMetadata.orgId, - shortName: providerMetadata.shortName, - title - }, - update: {} - }) - try { - // Create the relationship between CVE and ADP - await prisma.CVEADP.create({ - data: { - cveId, - adpId: providerMetadata.orgId - } - }) - } catch (e) { } - } - return cve -} diff --git a/functions/api/next-issue.js b/functions/api/next-issue.js index eee261d..2c55574 100644 --- a/functions/api/next-issue.js +++ b/functions/api/next-issue.js @@ -1,3 +1,4 @@ +import { processFinding } from '@/finding'; import { AuthResult, Server } from "@/utils"; import { PrismaD1 } from '@prisma/adapter-d1'; import { PrismaClient } from '@prisma/client'; @@ -69,16 +70,7 @@ export async function onRequestGet(context) { } }) - finding.references = finding?.referencesJSON ? JSON.parse(finding.referencesJSON) : [] - finding.timeline = finding?.timelineJSON ? JSON.parse(finding.timelineJSON) : [] - finding.exploits = finding?.exploitsJSON ? JSON.parse(finding.exploitsJSON) : [] - finding.knownExploits = finding?.knownExploitsJSON ? JSON.parse(finding.knownExploitsJSON) : [] - finding.aliases = finding?.aliases ? JSON.parse(finding.aliases) : [] - finding.cwes = finding?.cwes ? JSON.parse(finding.cwes) : [] - delete finding.referencesJSON - delete finding.knownExploitsJSON - delete finding.timelineJSON - delete finding.exploitsJSON + finding = await processFinding(prisma, env.r2artifacts, verificationResult, finding) if (finding?.spdx?.artifact?.uuid) { const resp = await env.r2artifacts.get(`spdx/${finding.spdx.artifact.uuid}.json`) diff --git a/public/cve-logo.png b/src/assets/images/icons/logo/cve.png similarity index 100% rename from public/cve-logo.png rename to src/assets/images/icons/logo/cve.png diff --git a/public/1st-logo.png b/src/assets/images/icons/logo/first.png similarity index 100% rename from public/1st-logo.png rename to src/assets/images/icons/logo/first.png diff --git a/src/assets/images/icons/logo/nvd.png b/src/assets/images/icons/logo/nvd.png new file mode 100644 index 0000000000000000000000000000000000000000..f86eb54768d10e27a9b4cfe542d052f1612575f5 GIT binary patch literal 17856 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 TqWs8z(maq=yq7KW{NMirvGAuH diff --git a/public/osv-logo.png b/src/assets/images/icons/logo/osv.png similarity index 100% rename from public/osv-logo.png rename to src/assets/images/icons/logo/osv.png diff --git a/src/components/Finding.vue b/src/components/Finding.vue index 759155f..c424243 100644 --- a/src/components/Finding.vue +++ b/src/components/Finding.vue @@ -1,10 +1,8 @@ + Download SPDX Artifact + {{ [props.finding.spdx.name, + props.finding.spdx?.version].filter(a => !!a).join('@') }} + + + + + + Open {{ props.finding.repoSource }} in a new tab + + {{ props.finding.repoName }} + + + + + + Open NVD Calculator in a new tab + + {{ props.currentTriage.cvssVector }} + + + + - {{ props.finding.repoName }} - - - - - - - - - + + + + + + + - - -

- - - -
-
- EPSS Score: {{ props.currentTriage?.epssScore }} - ({{ props.currentTriage?.epssPercentile }} percentile) -
+ + +
SSVC: {{ props.currentTriage?.ssvc }}
-
- Fixed in version: {{ props.finding.fixVersion }} + + +
+
+
+ CVSS + + v{{ cvssVersion }} + +
+ {{ props.currentTriage.cvssScore + }} / 10.0 +
+
-
- Vulnerable versions: {{ props.finding.vulnerableVersionRange }} + + +
+
+ EPSS Score + {{ + parseFloat(props.currentTriage.epssScore).toFixed(5) + }} +
+ +
-
- - - - - - - - - - Dependencies (TODO locked ver) - - - - - - + + + + + - - - - - + + + {{ ref }} - - - - - {{ props.finding.repoName }} - + - { color="error" > {{ exploit }} - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - + + - - + - - + - - - + - - + - - + + - *indicates required field - + *indicates required field + - + - - + + - + - - - - - + + + + Next Finding - - - - - - + + + + + + diff --git a/src/finding.js b/src/finding.js new file mode 100644 index 0000000..29b2500 --- /dev/null +++ b/src/finding.js @@ -0,0 +1,363 @@ +import { EPSS, MitreCVE, OSV, constructVersionRangeString, convertIsoDatesToTimestamps } from "@/utils"; +import { CVSS30, CVSS31, CVSS40 } from '@pandatix/js-cvss'; + +export const processFinding = async (prisma, r2adapter, verificationResult, finding, seen = 0) => { + const osvData = await new OSV().query(prisma, verificationResult.session.orgId, verificationResult.session.memberEmail, finding.detectionTitle) + finding.modifiedAt = (new Date(osvData.modified)).getTime() + finding.publishedAt = (new Date(osvData.published)).getTime() + finding.databaseReviewed = osvData?.database_specific?.github_reviewed ? 1 : 0 + finding.aliases = JSON.stringify(osvData?.aliases?.filter(a => a !== finding.cveId) || []) + finding.cwes = JSON.stringify(osvData?.database_specific?.cwe_ids || []) + finding.packageEcosystem = osvData.affected.map(affected => affected.package.ecosystem).pop() + finding.advisoryUrl = osvData.affected.map(affected => affected.database_specific.source).pop() + finding.fixVersion = osvData.affected.map(affected => affected.ranges.pop()?.events.pop()?.fixed).pop() + finding.vulnerableVersionRange = osvData.affected.map(affected => affected.database_specific.last_known_affected_version_range).pop() + finding.fixAutomatable = !!finding.vulnerableVersionRange && !!finding.fixVersion ? 1 : 0 + finding.malicious = osvData.id.startsWith("MAL-") ? 1 : 0 + finding.referencesJSON = JSON.stringify(osvData.references.map(reference => reference.url)) + + const cveId = finding.detectionTitle.startsWith('CVE-') ? finding.detectionTitle : osvData?.aliases?.filter(a => a.startsWith('CVE-')).pop() + let cvssVector + let cvssScore + let cvelistv5 + let cve + if (cveId) { + cve = await getCveData(prisma, r2adapter, verificationResult, cveId) + } + if (cve?.fileLink?.url) { + const [, year, number] = cveId.split('-') + const objectPath = `cvelistv5/${year}/${number.slice(0, -3) + "xxx"}/${cveId}.json` + const r2object = await r2adapter.get(objectPath) + if (r2object) { + try { + cvelistv5 = await r2object.json() + } catch (err) { } + } + } + if (cvelistv5) { + const { + cveMetadata, + containers: { cna, adp } + } = cvelistv5 + const cvssVector = findVectorString(cna.metrics) + if (cvssVector) { + if (cvssVector.startsWith('CVSS:4.0/')) { + cvssScore = new CVSS40(cvssVector).Score().toString() + } else if (cvssVector.startsWith('CVSS:3.1/')) { + cvssScore = new CVSS31(cvssVector).BaseScore().toString() + } else if (cvssVector.startsWith('CVSS:3.0/')) { + cvssScore = new CVSS30(cvssVector).BaseScore().toString() + } + } + if (cna?.timeline) { + finding.timelineJSON = JSON.stringify(cna.timeline.map(i => convertIsoDatesToTimestamps(i))) + } + // Extract CISA date + const cisaAdp = adp?.find(container => container.providerMetadata.shortName === 'CISA-ADP') + if (cisaAdp?.providerMetadata?.dateUpdated) { + finding.cisaDateAdded = new Date(cisaAdp.providerMetadata.dateUpdated).getTime() + } + // Get affected data from ADP and CNA + const adpAffected = adp.flatMap(container => container.affected || []) + const cnaAffected = cna.affected || [] + // Required properties we're looking for + const requiredProps = ['versions', 'vendor', 'product'] + // Find first valid affected data, preferring ADP over CNA + const primaryAffected = findFirstValidAffected(adpAffected, requiredProps) || + findFirstValidAffected(cnaAffected, requiredProps) || null + // Extract affected data ensuring valid values + const affectedData = { + versions: primaryAffected?.versions?.filter(v => isValidValue(v.version)) || [], + vendor: isValidValue(primaryAffected?.vendor) ? primaryAffected.vendor : null, + product: isValidValue(primaryAffected?.product) ? primaryAffected.product : null, + cpes: primaryAffected?.cpes?.filter(cpe => isValidValue(cpe))?.join('\n') + } + + if (cveMetadata?.datePublished) { + finding.publishedAt = new Date(cveMetadata.datePublished).getTime() + } + if (cveMetadata?.dateReserved) { + finding.createdAt = new Date(cveMetadata.dateReserved).getTime() + } + if (cveMetadata?.dateUpdated) { + finding.modifiedAt = new Date(cveMetadata.dateUpdated).getTime() + } + finding.vulnerableVersionRange = affectedData.versions.length > 0 ? constructVersionRangeString(affectedData.versions) : null + finding.cpe = affectedData?.cpes + finding.vendor = affectedData?.vendor + finding.product = affectedData?.product + } + const info = await prisma.Finding.update({ + where: { uuid: finding.uuid }, + data: { + detectionTitle: finding.detectionTitle, + createdAt: finding.createdAt, + modifiedAt: finding.modifiedAt, + publishedAt: finding.publishedAt, + databaseReviewed: finding.databaseReviewed, + cisaDateAdded: finding.cisaDateAdded, + aliases: finding.aliases, + cwes: finding.cwes, + packageEcosystem: finding.packageEcosystem, + advisoryUrl: finding.advisoryUrl, + fixVersion: finding.fixVersion, + fixAutomatable: finding.fixAutomatable, + vulnerableVersionRange: finding.vulnerableVersionRange, + cpe: finding.cpe, + vendor: finding.vendor, + product: finding.product, + malicious: finding.malicious, + referencesJSON: finding.referencesJSON, + timelineJSON: finding.timelineJSON, + } + }) + // console.log(`Update ${finding.detectionTitle}`, info) + let scores + if (cveId) { + const epss = new EPSS() + scores = await epss.query(prisma, verificationResult.session.orgId, verificationResult.session.memberEmail, cveId) + } + let epssScore, epssPercentile; + if (scores?.epss) { + epssScore = parseFloat(scores.epss) + epssPercentile = parseFloat(scores.percentile) + } + const cvss = {} + if (!cvssVector) { + cvss.v4 = osvData?.severity?.filter(i => i.score.startsWith('CVSS:4/'))?.pop() + cvss.v31 = osvData?.severity?.filter(i => i.score.startsWith('CVSS:3.1/'))?.pop() + cvss.v3 = osvData?.severity?.filter(i => i.score.startsWith('CVSS:3/'))?.pop() + cvssVector = !!cvss.v4 ? cvss.v4.score : !!cvss.v31 ? cvss.v31.score : cvss.v3 ? cvss.v3.score : null + const vector = !!cvss.v4 ? new CVSS40(cvss.v4.score) : !!cvss.v31 ? new CVSS31(cvss.v31.score) : cvss.v3 ? new CVSS30(cvss.v3.score) : null + cvssScore = !!cvss.v4 ? vector.Score().toString() : !!cvss.v31 ? vector.BaseScore().toString() : cvss.v3 ? vector.BaseScore().toString() : null + } + // Decision + // Methodology + // Exploitation + // TechnicalImpact + // Automatable + // MissionWellbeingImpact + + let { analysisState = 'in_triage', triageAutomated = 0, triagedAt = null, seenAt = null } = finding?.triage || {} + if ( + (cvssVector && ( + ['E:U', 'E:P', 'E:F', 'E:H'].some(substring => cvss.v3?.score?.includes(substring)) || + ['E:U', 'E:P', 'E:F', 'E:H'].some(substring => cvss.v31?.score?.includes(substring)) || + ['E:A', 'E:P', 'E:U'].some(substring => cvss.v4?.score?.includes(substring)) + )) || epssPercentile > 0.27 + ) { + analysisState = 'exploitable' + triageAutomated = 1 + if (!triagedAt) { + triagedAt = new Date().getTime() + } + } + if (seen === 1) { + seenAt = new Date().getTime() + } + const vexExist = finding.triage.filter(t => t.analysisState === analysisState).length !== 0 + let vexData = finding.triage.filter(t => t.analysisState === analysisState).pop() || {} + if (!vexExist) { + vexData.analysisState = analysisState + vexData.findingUuid = finding.uuid + vexData.createdAt = new Date().getTime() + vexData.lastObserved = new Date().getTime() + } + vexData.triageAutomated = triageAutomated + vexData.triagedAt = triagedAt + vexData.cvssVector = cvssVector + vexData.cvssScore = cvssScore + if (epssPercentile) { + vexData.epssPercentile = epssPercentile.toString() + } + if (epssScore) { + vexData.epssScore = epssScore.toString() + } + vexData.seen = seen + vexData.seenAt = seenAt + if (vexExist) { + const vexInfo = await prisma.Triage.update({ + where: { + uuid: vexData.uuid, + }, + data: vexData, + }) + // console.log(`Updated VEX ${finding.detectionTitle}`, vexInfo) + } else { + vexData = await prisma.Triage.create({ data: vexData }) + } + finding.triage = finding.triage.filter(f => f.uuid != vexData.uuid) + finding.triage.push(vexData) + + // expand JSON fields + finding.references = finding?.referencesJSON ? JSON.parse(finding.referencesJSON) : [] + finding.timeline = finding?.timelineJSON ? JSON.parse(finding.timelineJSON) : [] + finding.exploits = finding?.exploitsJSON ? JSON.parse(finding.exploitsJSON) : [] + finding.knownExploits = finding?.knownExploitsJSON ? JSON.parse(finding.knownExploitsJSON) : [] + finding.aliases = finding?.aliases ? JSON.parse(finding.aliases) : [] + finding.cwes = finding?.cwes ? JSON.parse(finding.cwes) : [] + delete finding.referencesJSON + delete finding.knownExploitsJSON + delete finding.timelineJSON + delete finding.exploitsJSON + return finding +} + +// Helper function to check if a value is valid (exists and not "n/a") +export const isValidValue = value => { + return value != null && value !== "n/a" && value !== ""; +}; + +// Helper function to find first affected entry with valid required properties +export const findFirstValidAffected = (affectedList = [], requiredProps = []) => { + return affectedList.find(affected => + requiredProps.every(prop => { + if (prop === 'versions') { + return Array.isArray(affected.versions) && + affected.versions.length > 0 && + affected.versions.some(v => isValidValue(v.version)); + } + if (prop === 'cpes') { + return Array.isArray(affected.cpes) && + affected.cpes.length > 0 && + affected.cpes.some(cpe => isValidValue(cpe)); + } + return isValidValue(affected[prop]); + }) + ); +}; + +// Helper function to find valid CVSS vector string with version preference +export const findVectorString = (metrics = []) => { + const cvssVersions = ['cvssV4_0', 'cvssV3_1', 'cvssV3_0'] + + for (const version of cvssVersions) { + for (const metric of metrics) { + const vectorString = metric[version]?.vectorString + if (isValidValue(vectorString)) { + return vectorString + } + } + } + return null +} + +// Helper function to find valid CVSS vector string with version preference +export const getCveData = async (prisma, r2adapter, verificationResult, cveId) => { + let cve = await prisma.CVEMetadata.findUnique({ + where: { cveId }, + include: { + fileLink: true, + adp: true, + cna: true, + } + }) + if (!cve) { + cve = await fetchCVE(prisma, r2adapter, verificationResult, cveId) + } + return cve +} + +export const fetchCVE = async (prisma, r2adapter, verificationResult, cveId) => { + const cvelistv5 = await new MitreCVE().query(prisma, verificationResult.session.orgId, verificationResult.session.memberEmail, cveId) + if (!cvelistv5) { + return {} + } + const { + cveMetadata, + dataVersion, + containers: { cna = {}, adp = [] } + } = cvelistv5 + // Create or connect CNA organization + await prisma.cVENumberingAuthrity.upsert({ + where: { orgId: cna.providerMetadata.orgId }, + create: { + orgId: cna.providerMetadata.orgId, + shortName: cna.providerMetadata.shortName + }, + update: {} + }) + + // Get affected data from ADP and CNA + const adpAffected = adp.flatMap(container => container.affected || []); + const cnaAffected = cna.affected || []; + + // Required properties we're looking for + const requiredProps = ['versions', 'vendor', 'product']; + + // Find first valid affected data, preferring ADP over CNA + const primaryAffected = findFirstValidAffected(adpAffected, requiredProps) || + findFirstValidAffected(cnaAffected, requiredProps) || + null; + + // Extract affected data ensuring valid values + const affectedData = { + versions: primaryAffected?.versions?.filter(v => isValidValue(v.version)) || [], + vendor: isValidValue(primaryAffected?.vendor) ? primaryAffected.vendor : null, + product: isValidValue(primaryAffected?.product) ? primaryAffected.product : null, + cpes: primaryAffected?.cpes?.filter(cpe => isValidValue(cpe)) || [] + } + + const vectorString = findVectorString(cna.metrics) + + // Create file link for the source + const [, year, number] = cveId.split('-') + const objectPath = `cvelistv5/${year}/${number.slice(0, -3) + "xxx"}/${cveId}.json` + const putOptions = { httpMetadata: { contentType: 'application/json', contentEncoding: 'utf8' } } + await r2adapter.put(objectPath, JSON.stringify(cvelistv5), putOptions) + const fileLink = await prisma.Link.create({ + data: { + url: `https://artifacts.vulnetix.app/${objectPath}`, + contentType: "PLAIN_JSON" + } + }) + const update = { + dataVersion, + state: cveMetadata.state, + datePublished: new Date(cveMetadata.datePublished).getTime(), + dateUpdated: cveMetadata?.dateUpdated ? new Date(cveMetadata.dateUpdated).getTime() : null, + dateReserved: cveMetadata?.dateReserved ? new Date(cveMetadata.dateReserved).getTime() : null, + vectorString, + title: cna?.title || 'Mitre CVE', + sourceAdvisoryRef: isValidValue(cna.source?.advisory) ? cna.source.advisory : null, + affectedVendor: affectedData.vendor, + affectedProduct: affectedData.product, + affectedVersionsJSON: affectedData.versions.length > 0 ? JSON.stringify(affectedData.versions) : null, + cpesJSON: affectedData.cpes.length > 0 ? JSON.stringify(affectedData.cpes) : null, + cnaOrgId: cna.providerMetadata.orgId, + fileLinkId: fileLink.id + } + // Create the main CVE record + const cve = await prisma.CVEMetadata.upsert({ + where: { cveId }, + create: { + cveId, + ...update + }, + update, + }) + + // Link ADP records + for (const adpContainer of adp) { + const { providerMetadata, title = '' } = adpContainer + await prisma.authorizedDataPublisher.upsert({ + where: { orgId: providerMetadata.orgId }, + create: { + orgId: providerMetadata.orgId, + shortName: providerMetadata.shortName, + title + }, + update: {} + }) + try { + // Create the relationship between CVE and ADP + await prisma.CVEADP.create({ + data: { + cveId, + adpId: providerMetadata.orgId + } + }) + } catch (e) { } + } + return cve +} diff --git a/src/layouts/components/DefaultLayoutWithVerticalNav.vue b/src/layouts/components/DefaultLayoutWithVerticalNav.vue index 3d03b43..2425b72 100644 --- a/src/layouts/components/DefaultLayoutWithVerticalNav.vue +++ b/src/layouts/components/DefaultLayoutWithVerticalNav.vue @@ -9,7 +9,7 @@ import { useNotificationsStore } from '@/stores/notifications' import { timeAgo } from '@/utils' import Notifications from '@core/components/Notifications.vue' import mendIcon from '@images/icons/logo/mend-io-logo.png' -import osvIcon from '@images/icons/logo/osv-logo.png' +import osvIcon from '@images/icons/logo/osv.png' import vulncheckIcon from '@images/icons/logo/vulncheck-logo.png' import VerticalNavLayout from '@layouts/components/VerticalNavLayout.vue' import VerticalNavLink from '@layouts/components/VerticalNavLink.vue' diff --git a/src/layouts/components/NavSearchBar.vue b/src/layouts/components/NavSearchBar.vue index 1cc7e16..cb5fa1f 100644 --- a/src/layouts/components/NavSearchBar.vue +++ b/src/layouts/components/NavSearchBar.vue @@ -3,7 +3,6 @@ import { Client } from '@/utils'; import { watchEffect } from 'vue'; const client = new Client() -const router = useRouter() defineOptions({ inheritAttrs: false }) diff --git a/src/pages/Integrations.vue b/src/pages/Integrations.vue index 4472253..5aed59a 100644 --- a/src/pages/Integrations.vue +++ b/src/pages/Integrations.vue @@ -3,6 +3,9 @@ import router from "@/router"; import { Client, timeAgo } from '@/utils'; import { reactive } from 'vue'; import { useTheme } from 'vuetify'; +import osvIcon from '@images/icons/logo/osv.png' +import cveIcon from '@images/icons/logo/cve.png' +import firstIcon from '@images/icons/logo/first.png' const client = new Client() const { global } = useTheme() @@ -867,7 +870,7 @@ const controller = reactive(new Controller()) @@ -919,7 +922,7 @@ const controller = reactive(new Controller()) @@ -1111,7 +1114,7 @@ const controller = reactive(new Controller()) diff --git a/src/pages/Issue.vue b/src/pages/Issue.vue index a34d82e..0130265 100644 --- a/src/pages/Issue.vue +++ b/src/pages/Issue.vue @@ -1,6 +1,5 @@