Skip to main content

Black Duck Continuous Dynamic

Black Duck Continuous Dynamic (formerly WhiteHat Sentinel) is an application security tool that identifies vulnerabilities across your web applications. You can bring attack vector, dynamic code, and site data from Black Duck into Brinqa to centralize your applications attack surface, thus strengthening your cybersecurity posture.

This document details the information you must provide for the connector to authenticate with Black Duck Continuous Dynamic and how to obtain that information from Black Duck. See create a data integration for step-by-step instructions on setting up the integration.

Required connection settings

When setting up a data integration, select Black Duck Continuous Dynamic from the Connector dropdown list. You must provide the following information to authenticate Black Duck Continuous Dynamic with Brinqa:

  • Service URL: The Black Duck Continuous Dynamic service URL. The default URL is https://sentinel.whitehatsec.com.

  • API Key: The access key associated with the Black Duck Continuous Dynamic account, which must have permissions to log in to the API server and return data.

Generate a Black Duck Continuous Dynamic API key

For the Black Duck Continuous Dynamic connector to use the Black Duck API, you must provide an API key. You can access an existing API key or generate a new one. To obtain an API key, follow these steps:

  1. Log in to your organization's Black Duck Continuous Dynamic account.

  2. Click My Profile and then the API Key tab.

  3. Type your password in the Verify password field and click Authenticate.

    The API key displays. If this is your first time requesting an API key, a new key is generated. Click Regenerate API key if you want to replace your existing key.

note

If you do not have the permissions to create an API key, contact your Black Duck Continuous Dynamic administrator. For additional information, see Black Duck Continuous Dynamic documentation.

Additional settings

The Black Duck Continuous Dynamic connector contains additional options for specific configuration:

  • Page size: The maximum number of records to get per API request. The default setting is 100. It is not recommended to go over 100.

  • Parallel requests: The maximum number of parallel API requests. The default setting is 4.

Types of data to retrieve

The Black Duck Continuous Dynamic connector can retrieve the following types of data from the Black Duck API:

Table 1: Data retrieved from Black Duck Continuous Dynamic

Connector ObjectRequiredMaps to Data Model
ApplicationYesApplication
Attack VectorNoNot mapped
Dynamic Code FindingYesDynamic Code Finding
Dynamic Code Finding DefinitionYesDynamic Code Finding Definition
IssueYesStatic Code Finding
SiteYesSite
info

For detailed steps on how to view the data retrieved from Black Duck Continuous Dynamic in the Brinqa Platform, see How to view your data.

Attribute mappings

Expand the sections below to view the mappings between the source and the Brinqa data model attributes.

Application

Table 2: Application attribute mappings

Source FieldAttribute Name
AssetResource.idUID
AssetResource.idNAME
AssetResource.subIDSUB_ID
AssetResource.typeASSET_TYPE
AssetResource.serviceLevelSE
AssetResource.preScanStatusPRE_SCAN_STATUS
AssetResource.scanStatusSCAN_STATUS
AssetResource.assetOwnerNameOWNER
AssetResource.phasePHASE
AssetResource.industryINDUSTRY
AssetResource.clientRatingMethodCLIENT_RATING_METHOD
AssetResource.client.nameORG
AssetResource.tagsTAGS
AssetResource.creationTSOURCE_CREATED_DATE
AssetResource.lastScanDateTLAST_SCANNED
AssetResource.locationLOCATIONS
AssetResource.customAssetIDAPP_ID
AssetResource.applianceIDINSTANCE_ID
AssetResource.actionItemsACTION_ITEMS
AssetResource.activeUserACTIVE_USER
AssetResource.assetOwnerIDASSET_OWNER_ID
AssetResource.assetSizeASSET_SIZE
AssetResource.averageFileSizeAVERAGE_FILE_SIZE
AssetResource.averageLinesScannedAVERAGE_LINES_SCANNED
AssetResource.customPolicyIDCUSTOM_POLICY_ID
AssetResource.isWhiteHatEnabledIS_WHITEHAT_ENABLED
AssetResource.remainingScansREMAINING_SCANS
AssetResource.scheduleNameSCHEDULE_NAME
AssetResource.scheduleTimeZoneSCHEDULE_TIME_ZONE
AssetResource.weightWEIGHT
ApplicationResource.langLANGUAGES
ApplicationResource.packageNamePACKAGE_NAME
ApplicationResource.platformPLATFORM
normalized from AssetResource.statusSTATUS
AssetResource.statusSOURCE_STATUS
(constant)CATEGORIES
(sync timestamp)LAST_CAPTURED
Site

Table 3: Site attribute mappings

Source FieldAttribute Name
SiteResource.idUID
SiteResource.nameNAME
SiteResource.clientIDCLIENT_ID
SiteResource.organizationORG
SiteResource.abbreviationABBREVIATION
SiteResource.hostnameHOSTNAMES
SiteResource.associatedHostnameASSOCIATED_HOSTNAME
SiteResource.industryINDUSTRY
SiteResource.weightWEIGHT
SiteResource.speedSPEED
SiteResource.customAssetIDCUSTOM_ASSET_ID
SiteResource.notesNOTES
SiteResource.applianceIDAPPLIANCE_ID
SiteResource.usesSatelliteUSES_SATELLITE
(constant)CATEGORIES
(constant)STATUS
(sync timestamp)LAST_CAPTURED
Dynamic Code Finding Definition

Table 4: Dynamic Code Finding Definition attribute mappings

Source FieldAttribute Name
VulnerabilityClassResource.idUID
VulnerabilityClassResource.shortNameNAME
VulnerabilityClassResource.nameTITLE
VulnerabilityClassResource.descriptionDESCRIPTION
VulnerabilityClassResource.solutionRECOMMENDATION
VulnerabilityClassResource.defaultRiskRISK
VulnerabilityClassResource.retiredRETIRED
VulnerabilityClassResource.cvssV3ScoreCVSS_V3_BASE_SCORE
derived from VulnerabilityClassResource.cvssV3VectorCVSS_V3_VECTOR
parsed CVSS v3 metricsCVSS_V3_AV / _AC / _PR / _UI / _CI / _II / _AI / _E / _RL / _RC
VulnerabilityClassResource.hasApplicationsHAS_APPLICATIONS
VulnerabilityClassResource.hasSitesHAS_SITES
(sync timestamp)LAST_CAPTURED
Dynamic Code Finding

Table 5: Dynamic Code Finding attribute mappings

Source FieldAttribute Name
FindingResource.idUID
FindingResource.idNAME
FindingResource.class.idTYPE
FindingResource.class.nameCATEGORIES
FindingResource.asset.idSITE_ID
FindingResource.asset.subIDSUB_ID
FindingResource.asset.subIDTARGETS
FindingResource.asset.nameSITE_NAME
FindingResource.locationURL
FindingResource.statusSOURCE_STATUS
normalized from FindingResource.statusSTATUS
derived from STATUSSTATUS_CATEGORY
FindingResource.verificationStatusVERIFICATION_STATUS
FindingResource.retestStatusRETEST_STATUS
normalized from FindingResource.severitySEVERITY
FindingResource.severitySOURCE_SEVERITY
derived from normalized severitySEVERITY_SCORE
FindingResource.threatTHREAT
FindingResource.impactIMPACT
FindingResource.likelihoodLIKELIHOOD
derived from FindingResource.riskRISK
derived from FindingResource.customRiskCUSTOM_RISK
FindingResource.customAcceptedACCEPTED
FindingResource.reasonREASON
FindingResource.firstOpenedFIRST_FOUND
FindingResource.openedLAST_FOUND
FindingResource.closedLAST_FIXED
FindingResource.lastModifiedSOURCE_LAST_MODIFIED
FindingResource.lastRetestedLAST_RETESTED
FindingResource.tagsTAGS
FindingResource.cvssV3.scoreCVSS_V3_BASE_SCORE
derived from FindingResource.cvssV3.vectorCVSS_V3_VECTOR
parsed CVSS v3 metricsCVSS_V3_AV / _AC / _PR / _UI / _CI / _II / _AI / _E / _RL / _RC
FindingResource.cvssV3.environmentalScoreCVSS_ENV_SCORE
derived from FindingResource.cvssV3.environmentalVectorCVSS_ENV_VECTOR
FindingResource.cvssScore (fallback when v3 absent)CVSS_V2_BASE_SCORE
FindingResource.directRemediationAvailablePATCHABLE
FindingResource.unreachableUNREACHABLE
FindingResource.isAccessibleIS_ACCESSIBLE
FindingResource.outOfScopeReasonsOUT_OF_SCOPE_REASONS
FindingResource.manualMANUAL
aggregated from attack-vector requestsREQUEST
aggregated from attack-vector responsesRESPONSE
filtered CVE entries from FindingResource.cveTagsCVE_IDS
filtered CVE entries from FindingResource.cveTagsCVE_RECORDS
FindingResource.foundRevisionREVISION
FindingResource.attackVectorsATTACK_VECTOR_IDS
FindingResource.hasInstanceLevelCVSSCustomizationHAS_INSTANCE_LEVEL_CVSS_CUSTOMIZATION
FindingResource.hasInstanceLevelCustomizationHAS_INSTANCE_LEVEL_CUSTOMIZATION
FindingResource.impactRatingIMPACT_RATING
FindingResource.likelihoodRatingLIKELIHOOD_RATING
FindingResource.nonAcceptedStatusNON_ACCEPTED_STATUS
FindingResource.notesCountNOTES_COUNT
FindingResource.subTypeTagsSUB_TYPE_TAGS
FindingResource.zeroDayTagsZERO_DAY_TAGS
(sync timestamp)LAST_CAPTURED
Issue

Table 6: Issue attribute mappings

Source FieldAttribute Name
SourceVulnResource.idUID
SourceVulnResource.locationNAME
normalized from vuln.statusSTATUS
vuln.statusSOURCE_STATUS
derived from STATUSSTATUS_CATEGORY
vuln.threatTHREAT
vuln.scoreSCORE
vuln.impactIMPACT
vuln.likelihoodLIKELIHOOD
vuln.cvss_v3_scoreCVSS_V3_BASE_SCORE
derived from vuln.cvss_v3_vectorCVSS_V3_VECTOR
parsed CVSS v3 metricsCVSS_V3_AV / _AC / _PR / _UI / _CI / _II / _AI / _E / _RL / _RC
vuln.cvss_v3_environmental_scoreCVSS_ENV_SCORE
vuln.cvss_v3_environmental_vectorCVSS_ENV_VECTOR
vuln.cvss_score (fallback when v3 absent)CVSS_V2_BASE_SCORE
parsed CVSS v2 metrics (fallback)CVSS_V2_VECTOR / _AV / _AC / _AU / _CI / _II / _AI / _E / _RL / _RC
vuln.foundFIRST_FOUND
vuln.openedLAST_FOUND
vuln.closedLAST_FIXED
vuln.modifiedSOURCE_LAST_MODIFIED
vuln.application_idTARGETS
vuln.clean_descriptionDESCRIPTION
vuln.clean_solutionSOLUTION
vuln.cve_reference[].titleCVE_IDS
vuln.cve_reference[].titleCVE_RECORDS
vuln.dast_classes[].nameDAST_CLASSES
vuln.class_readableCATEGORIES
capitalized vuln.riskRISK
capitalized vuln.custom_riskCUSTOM_RISK
vuln.tagsTAGS
VulnerabilityClassResource.idTYPE
VulnerabilityClassResource.idDEFINITION_ID
(sync timestamp)LAST_CAPTURED
Attack Vector

Table 7: Attack Vector attribute mappings

Source FieldAttribute Name
AttackVectorResource.idUID
AttackVectorResource.idNAME
[VulnResource.id, VulnResource.site]TARGETS
VulnResource.idFINDING_ID
VulnResource.siteSITE_ID
AttackVectorResource.stateSTATE
AttackVectorResource.scanner_tagsTAGS
AttackVectorResource.auth_detailsAUTH_DETAILS
VulnResource.url + AttackVectorResource.request.urlURL
serialized AttackVectorResource.requestREQUEST
serialized AttackVectorResource.responseRESPONSE
AttackVectorResource.testedTESTED
AttackVectorResource.openedOPENED
AttackVectorResource.foundFIRST_FOUND
(sync timestamp)LAST_CAPTURED

Operation options

The Black Duck Continuous Dynamic connector supports the following operation options. See connector operation options for information about how to apply them.

Table 8: Black Duck Continuous Dynamic connector operation options

Connector ObjectOptionAll Possible ValuesDescriptionExample
Attack Vectorstatusaccepted, certified, closed, openA comma-separated list of attack vector statuses. Retrieve attack vector information based on the specific status as determined by Black Duck.Key: status Value: accepted. This key and value combination only retrieves attack vector information with a status of accepted.
Dynamic Code Findingstatusaccepted, closed, invalid, mitigated, open, out_of_scopeA comma-separated list of finding statuses. Retrieve findings based on the specified status as determined by Black Duck.Key: status Value: mitigated,accepted. This key and value combination only retrieves findings with a status of accepted or mitigated.
Issuestatusclosed, discovered, false, openA comma-separated list of issue statuses. Retrieve issue information based on the specific status as determined by Black Duck.Key: status Value: open,discovered. This key and value combination only retrieves issues with a status of open or discovered.
note

The option keys and values are case-sensitive as they are shown in this documentation.

APIs

The Black Duck Continuous Dynamic connector uses the WhiteHat Sentinel API v1 and v2. Specifically, it uses the following endpoints:

Table 9: Black Duck Continuous Dynamic API Endpoints

Connector ObjectAPI Endpoint
ApplicationGET /api/assets
Attack VectorGET /api/vuln
Dynamic Code FindingGET /api/findings
GET /api/vuln/{findingId}/attack_vector
Dynamic Code Finding DefinitionGET /api/vulnerabilityClasses
IssueGET /api/source_vuln
GET /api/vulnerabilityClasses
SiteGET /api/v2/sites

Changelog

The Black Duck Continuous Dynamic connector has undergone the following changes:

note

This connector is part of a bundled release with other connectors from the same vendor. If a version shows "No change", it means that the connector version was updated for consistency as part of the bundle, but no functional changes were made to this specific connector. You can update to or skip this version without affecting your existing configuration.

Table 10: Black Duck Continuous Dynamic connector changelog

VersionDescriptionDate Published
3.2.4- Added the LAST_CAPTURED attribute and additional asset and Dynamic Code Finding attributes ingested from the Black Duck Continuous Dynamic API.
- Fixed a deserialization error in Dynamic Code Finding sync caused by the location field on nested asset data being returned inconsistently between the assets and findings endpoints.
No migration required.
May 12th, 2026
3.2.3No change.February 18th, 2026
3.2.2No change.December 24th, 2025
3.2.1No change.November 25th, 2025
3.2.0No change.October 17th, 2025
3.1.2No change.August 5th, 2025
3.1.1No change.August 5th, 2025
3.1.0No change.May 21st, 2025
3.0.5- The WhiteHat Sentinel connector has been renamed to "Black Duck Continuous Dynamic". If you were using the WhiteHat Sentinel connector, install Black Duck Continuous Dynamic and update any existing integrations.
- Updated to the new Black Duck Continuous Dynamic logo.
April 11th, 2025
3.0.4Added the CUSTOM_ASSET_ID attribute to the Site object.February 19th, 2025
3.0.3No change.January 16th, 2025
3.0.2- Changed the MANUAL attribute type on the Dynamic Code Finding object from string to boolean to resolve a data mismatch error.
- Changed the SOURCE_SEVERITY attribute type on the Dynamic Code Finding object from string to integer to resolve a data mismatch error.
July 10th, 2024
3.0.1No change.March 6th, 2024
3.0.0Initial Integration+ release.September 27th, 2023