diff --git a/CHANGELOG.md b/CHANGELOG.md index fb2777f..2dce4eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ and this project adheres to ## [Unreleased] +- bump sdk to pull in new rawData trimming logic +- add rawData back to vulns and assets + ## [8.3.7] - 2022-05-10 - remove `output` from the properties of `tenable_vulnerability_finding` diff --git a/package.json b/package.json index c3cab0d..8cc772b 100644 --- a/package.json +++ b/package.json @@ -38,12 +38,12 @@ "p-map": "^4.0.0" }, "peerDependencies": { - "@jupiterone/integration-sdk-core": "^8.13.1" + "@jupiterone/integration-sdk-core": "^8.13.6" }, "devDependencies": { - "@jupiterone/integration-sdk-core": "8.13.1", - "@jupiterone/integration-sdk-dev-tools": "8.13.1", - "@jupiterone/integration-sdk-testing": "8.13.1", + "@jupiterone/integration-sdk-core": "8.13.6", + "@jupiterone/integration-sdk-dev-tools": "8.13.6", + "@jupiterone/integration-sdk-testing": "8.13.6", "@types/nock": "10.0.3", "@types/node-fetch": "^2.3.2", "dotenv": "^10.0.0", diff --git a/src/steps/vulnerabilities/converters.ts b/src/steps/vulnerabilities/converters.ts index fecbd0e..ee2042a 100644 --- a/src/steps/vulnerabilities/converters.ts +++ b/src/steps/vulnerabilities/converters.ts @@ -12,15 +12,6 @@ import { import { generateEntityKey } from '../../utils/generateKey'; import getTime from '../../utils/getTime'; import { TargetEntity } from '../../utils/targetEntities'; -import { - AssetExportLimitedRawData, - VulnerabilityExportLimitedRawData, -} from '.'; - -const skippedRawDataSource = { - uploadStatus: 'LIMITED', - uploadStatusReason: 'Raw data currently limited for this entity type', -}; interface KeyAndSize { key: string; @@ -65,14 +56,7 @@ export function createAssetEntity( } return createIntegrationEntity({ entityData: { - source: { - ...skippedRawDataSource, - aws_ec2_instance_id: data.aws_ec2_instance_id, - azure_resource_id: data.azure_resource_id, - gcp_instance_id: data.gcp_instance_id, - gcp_project_id: data.gcp_project_id, - id: data.id, - }, + source: data, assign: { _class: Entities.ASSET._class, _type: Entities.ASSET._type, @@ -152,9 +136,7 @@ export function createAssetEntity( }); } -export function createTargetHostEntity( - data: AssetExportLimitedRawData, -): TargetEntity { +export function createTargetHostEntity(data: AssetExport): TargetEntity { let targetFilter; if (data.aws_ec2_instance_id) { @@ -309,11 +291,7 @@ export function createVulnerabilityEntity( } return createIntegrationEntity({ entityData: { - source: { - ...skippedRawDataSource, - cves: vuln.plugin.cve, - asset_uuid: vuln.asset.uuid, - }, + source: vuln, assign: { _key: generateEntityKey( Entities.VULNERABILITY._type, @@ -364,9 +342,9 @@ export function createVulnerabilityEntity( } export function createTargetCveEntities( - data: VulnerabilityExportLimitedRawData, + data: VulnerabilityExport, ): TargetEntity[] { - const { cves } = data; + const cves: string[] | undefined = data.plugin.cve; return (cves || []).map((cve) => { return { targetEntity: { diff --git a/src/steps/vulnerabilities/index.ts b/src/steps/vulnerabilities/index.ts index 5c29e8d..755f328 100644 --- a/src/steps/vulnerabilities/index.ts +++ b/src/steps/vulnerabilities/index.ts @@ -13,7 +13,10 @@ import { StepIds, } from '../../constants'; import TenableClient from '../../tenable/TenableClient'; -import { AssetExport } from '@jupiterone/tenable-client-nodejs'; +import { + AssetExport, + VulnerabilityExport, +} from '@jupiterone/tenable-client-nodejs'; import { createTargetHostEntity, createAssetEntity, @@ -27,19 +30,6 @@ import { import { getAccount } from '../../initializeContext'; import { createAccountEntity } from '../account/converters'; -export interface VulnerabilityExportLimitedRawData { - cves: string[] | undefined; - asset_uuid: string | undefined; -} - -export interface AssetExportLimitedRawData { - aws_ec2_instance_id: string | null; - azure_resource_id: string | null; - gcp_instance_id: string | null; - gcp_project_id: string | null; - id: string; -} - export async function fetchAssets( context: IntegrationStepExecutionContext, ): Promise { @@ -135,8 +125,7 @@ export async function buildAssetVulnerabilityRelationships( await jobState.iterateEntities( { _type: Entities.VULNERABILITY._type }, async (vulnEntity) => { - const vulnRawData = - getRawData(vulnEntity); + const vulnRawData = getRawData(vulnEntity); if (!vulnRawData) { logger.warn( { @@ -147,12 +136,12 @@ export async function buildAssetVulnerabilityRelationships( return; } - const assetEntity = await jobState.findEntity(vulnRawData.asset_uuid); + const assetEntity = await jobState.findEntity(vulnRawData.asset.uuid); if (!assetEntity) { logger.warn( { 'vuln._key': vulnEntity._key, - 'asset.uuid': vulnRawData.asset_uuid, + 'asset.uuid': vulnRawData.asset.uuid, }, 'Could not find asset specified by vulnerability in job state.', ); @@ -198,8 +187,7 @@ export async function buildVulnerabilityCveRelationships( await jobState.iterateEntities( { _type: Entities.VULNERABILITY._type }, async (vulnEntity) => { - const vulnRawData = - getRawData(vulnEntity); + const vulnRawData = getRawData(vulnEntity); if (!vulnRawData) { logger.warn( { diff --git a/yarn.lock b/yarn.lock index 6d36664..4c1b04f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -743,12 +743,12 @@ ajv "^8.0.0" ajv-formats "^2.0.0" -"@jupiterone/integration-sdk-cli@^8.13.1": - version "8.13.1" - resolved "https://registry.yarnpkg.com/@jupiterone/integration-sdk-cli/-/integration-sdk-cli-8.13.1.tgz#870f195808262e5c3846b160921bb16c7c368366" - integrity sha512-tFlum6Lgo7d1TEovgerGnsSGaKUXv6z0SkgjhxZZCde/+CBlAfKIWlKYSg0wMqEGDFYxFrYpxsWUWVaDY/6TkA== +"@jupiterone/integration-sdk-cli@^8.13.6": + version "8.13.6" + resolved "https://registry.yarnpkg.com/@jupiterone/integration-sdk-cli/-/integration-sdk-cli-8.13.6.tgz#8be49344830ea6a36320a0fbd6cf6d15c8fd217e" + integrity sha512-kVBG83VSuLgSVzIpZSI2BImPqSa0oY0NQASb8K8gzMSoK4CoHPXtSJq4lrTu/HB5ZOJIzMXtBSbYKOTIzW/6DQ== dependencies: - "@jupiterone/integration-sdk-runtime" "^8.13.1" + "@jupiterone/integration-sdk-runtime" "^8.13.6" chalk "^4" commander "^5.0.0" fs-extra "^10.1.0" @@ -762,22 +762,22 @@ upath "^1.2.0" vis "^4.21.0-EOL" -"@jupiterone/integration-sdk-core@8.13.1", "@jupiterone/integration-sdk-core@^8.13.1": - version "8.13.1" - resolved "https://registry.yarnpkg.com/@jupiterone/integration-sdk-core/-/integration-sdk-core-8.13.1.tgz#bde35abea0570484f4e99eddad3665af5e0e9f59" - integrity sha512-9ZR79pCCyWNoieY7W+kG9QWP0ZSCGsbNn5nbbEYCISUVNR/uCTB1vr2ShSPJpxC2my1zA9jNOOypgjixPNh6Dg== +"@jupiterone/integration-sdk-core@8.13.6", "@jupiterone/integration-sdk-core@^8.13.6": + version "8.13.6" + resolved "https://registry.yarnpkg.com/@jupiterone/integration-sdk-core/-/integration-sdk-core-8.13.6.tgz#68741ac15f21eb7a3178158bea19f17d0878a66e" + integrity sha512-NFoAxX9xGcLtiYn7HBA1ooWkxD+yAMtbo9MAkW87527SEUVgBcjTei5bRyaeVhRUiPx6Ufj13Yi0ZCPva9TXUw== dependencies: "@jupiterone/data-model" "^0.47.0" lodash "^4.17.21" uuid "^8.3.2" -"@jupiterone/integration-sdk-dev-tools@8.13.1": - version "8.13.1" - resolved "https://registry.yarnpkg.com/@jupiterone/integration-sdk-dev-tools/-/integration-sdk-dev-tools-8.13.1.tgz#6150a4f06cc1e18e41ff66127b5325902f4d489d" - integrity sha512-VNyrgDL5Q0jKH9MA0YcraIAzWNmcfqPIAMU0hnSnQlgY9XofDYHoohTx2+B55r11fTX9n2pwImaaigs+h3pElg== +"@jupiterone/integration-sdk-dev-tools@8.13.6": + version "8.13.6" + resolved "https://registry.yarnpkg.com/@jupiterone/integration-sdk-dev-tools/-/integration-sdk-dev-tools-8.13.6.tgz#05ac1c692ecbce94388efb70ea08c0fc1620f435" + integrity sha512-jY20w+7SBYpHbnXuAeQgsDhqfHVBOuDo82O8PzJa3q6bohtN7EaGCVfvmds26/2tXv2YHsY3AnA7hpY//fYo9A== dependencies: - "@jupiterone/integration-sdk-cli" "^8.13.1" - "@jupiterone/integration-sdk-testing" "^8.13.1" + "@jupiterone/integration-sdk-cli" "^8.13.6" + "@jupiterone/integration-sdk-testing" "^8.13.6" "@types/jest" "^27.1.0" "@types/node" "^14.0.5" "@typescript-eslint/eslint-plugin" "^4.22.0" @@ -793,12 +793,12 @@ ts-node "^9.1.1" typescript "^4.2.4" -"@jupiterone/integration-sdk-runtime@^8.13.1": - version "8.13.1" - resolved "https://registry.yarnpkg.com/@jupiterone/integration-sdk-runtime/-/integration-sdk-runtime-8.13.1.tgz#a18a4488934a3699140461087d1807aecf8421ba" - integrity sha512-Y2/F2ZTzMH82pwiHcq9Bm09itLh9HYSVbo9KMTb/hP4HGgWAmXOR/f1en9jX97aVpwCjUzHSLThhzyaVaa544A== +"@jupiterone/integration-sdk-runtime@^8.13.6": + version "8.13.6" + resolved "https://registry.yarnpkg.com/@jupiterone/integration-sdk-runtime/-/integration-sdk-runtime-8.13.6.tgz#402021c9a68ca4d6ac2c231440fb7bb6d2e411a8" + integrity sha512-Xxle9ZTNA18T+Y42BNgJozgMnKpexg6j2YJQwaEDhfR9zDTlgYO1wB+yyiOiQ/nF406I6xiIvBNgaZ4plv+lIQ== dependencies: - "@jupiterone/integration-sdk-core" "^8.13.1" + "@jupiterone/integration-sdk-core" "^8.13.6" "@lifeomic/alpha" "^1.4.0" "@lifeomic/attempt" "^3.0.3" async-sema "^3.1.0" @@ -816,13 +816,13 @@ rimraf "^3.0.2" uuid "^7.0.3" -"@jupiterone/integration-sdk-testing@8.13.1", "@jupiterone/integration-sdk-testing@^8.13.1": - version "8.13.1" - resolved "https://registry.yarnpkg.com/@jupiterone/integration-sdk-testing/-/integration-sdk-testing-8.13.1.tgz#0eb8c9d6edcf59c41d76a53ea62e6de98037202f" - integrity sha512-wDKwHxDS7DQpaiCmQmDD+saF3h5QThGnsmdePZmoBfIcqhymANhpGSe3ADdUclOUAu/YH+KDOeBoIaGGLMuQpQ== +"@jupiterone/integration-sdk-testing@8.13.6", "@jupiterone/integration-sdk-testing@^8.13.6": + version "8.13.6" + resolved "https://registry.yarnpkg.com/@jupiterone/integration-sdk-testing/-/integration-sdk-testing-8.13.6.tgz#20ae5db7d188f3ab50f7599630e092ac5cbe3f18" + integrity sha512-eA5pdYNlXAFIk1cxYOQ85MpaWbD3K95QxeIQP7lUMcO9gWYGbk/6TbdZrPjQP0GNlwfdM21sCowTRMNIJ/pIUQ== dependencies: - "@jupiterone/integration-sdk-core" "^8.13.1" - "@jupiterone/integration-sdk-runtime" "^8.13.1" + "@jupiterone/integration-sdk-core" "^8.13.6" + "@jupiterone/integration-sdk-runtime" "^8.13.6" "@pollyjs/adapter-node-http" "^6.0.5" "@pollyjs/core" "^6.0.5" "@pollyjs/persister-fs" "^6.0.5"