@mitre/hdf-converters 2.12.2 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -24
- package/lib/data/converters/csv2json.d.ts +1 -0
- package/lib/data/converters/csv2json.d.ts.map +1 -0
- package/lib/data/converters/csv2json.js +1 -1
- package/lib/data/converters/csv2json.js.map +1 -1
- package/lib/data/converters/xml2json.d.ts +1 -0
- package/lib/data/converters/xml2json.d.ts.map +1 -0
- package/lib/data/converters/xml2json.js +6 -25
- package/lib/data/converters/xml2json.js.map +1 -1
- package/lib/data/reverse-html-mapper/convert-to-embedded-strings.d.ts +2 -0
- package/lib/data/reverse-html-mapper/convert-to-embedded-strings.d.ts.map +1 -0
- package/lib/data/reverse-html-mapper/convert-to-embedded-strings.js +13 -0
- package/lib/data/reverse-html-mapper/convert-to-embedded-strings.js.map +1 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +23 -8
- package/lib/index.js.map +1 -1
- package/lib/package.json +28 -45
- package/lib/src/anchore-grype-mapper.d.ts +1 -0
- package/lib/src/anchore-grype-mapper.d.ts.map +1 -0
- package/lib/src/anchore-grype-mapper.js +7 -1
- package/lib/src/anchore-grype-mapper.js.map +1 -1
- package/lib/src/asff-mapper/asff-mapper.d.ts +1 -0
- package/lib/src/asff-mapper/asff-mapper.d.ts.map +1 -0
- package/lib/src/asff-mapper/asff-mapper.js +276 -242
- package/lib/src/asff-mapper/asff-mapper.js.map +1 -1
- package/lib/src/asff-mapper/case-cms-inspec.d.ts +1 -0
- package/lib/src/asff-mapper/case-cms-inspec.d.ts.map +1 -0
- package/lib/src/asff-mapper/case-cms-inspec.js +18 -9
- package/lib/src/asff-mapper/case-cms-inspec.js.map +1 -1
- package/lib/src/asff-mapper/case-firewall-manager.d.ts +1 -0
- package/lib/src/asff-mapper/case-firewall-manager.d.ts.map +1 -0
- package/lib/src/asff-mapper/case-firewall-manager.js +18 -9
- package/lib/src/asff-mapper/case-firewall-manager.js.map +1 -1
- package/lib/src/asff-mapper/case-guardduty.d.ts +1 -0
- package/lib/src/asff-mapper/case-guardduty.d.ts.map +1 -0
- package/lib/src/asff-mapper/case-guardduty.js +18 -9
- package/lib/src/asff-mapper/case-guardduty.js.map +1 -1
- package/lib/src/asff-mapper/case-inspector.d.ts +1 -0
- package/lib/src/asff-mapper/case-inspector.d.ts.map +1 -0
- package/lib/src/asff-mapper/case-inspector.js +18 -9
- package/lib/src/asff-mapper/case-inspector.js.map +1 -1
- package/lib/src/asff-mapper/case-previously-hdf.d.ts +1 -0
- package/lib/src/asff-mapper/case-previously-hdf.d.ts.map +1 -0
- package/lib/src/asff-mapper/case-previously-hdf.js +28 -15
- package/lib/src/asff-mapper/case-previously-hdf.js.map +1 -1
- package/lib/src/asff-mapper/case-prowler.d.ts +1 -0
- package/lib/src/asff-mapper/case-prowler.d.ts.map +1 -0
- package/lib/src/asff-mapper/case-prowler.js +19 -9
- package/lib/src/asff-mapper/case-prowler.js.map +1 -1
- package/lib/src/asff-mapper/case-security-hub.d.ts +1 -0
- package/lib/src/asff-mapper/case-security-hub.d.ts.map +1 -0
- package/lib/src/asff-mapper/case-security-hub.js +24 -9
- package/lib/src/asff-mapper/case-security-hub.js.map +1 -1
- package/lib/src/asff-mapper/case-trivy.d.ts +1 -0
- package/lib/src/asff-mapper/case-trivy.d.ts.map +1 -0
- package/lib/src/asff-mapper/case-trivy.js +18 -9
- package/lib/src/asff-mapper/case-trivy.js.map +1 -1
- package/lib/src/aws-config-mapper.d.ts +1 -0
- package/lib/src/aws-config-mapper.d.ts.map +1 -0
- package/lib/src/aws-config-mapper.js +38 -22
- package/lib/src/aws-config-mapper.js.map +1 -1
- package/lib/src/base-converter.d.ts +2 -1
- package/lib/src/base-converter.d.ts.map +1 -0
- package/lib/src/base-converter.js +51 -33
- package/lib/src/base-converter.js.map +1 -1
- package/lib/src/burpsuite-mapper.d.ts +7 -0
- package/lib/src/burpsuite-mapper.d.ts.map +1 -0
- package/lib/src/burpsuite-mapper.js +115 -88
- package/lib/src/burpsuite-mapper.js.map +1 -1
- package/lib/src/checkov-mapper.d.ts +67 -0
- package/lib/src/checkov-mapper.d.ts.map +1 -0
- package/lib/src/checkov-mapper.js +240 -0
- package/lib/src/checkov-mapper.js.map +1 -0
- package/lib/src/ckl-mapper/checklist-jsonix-converter.d.ts +17 -0
- package/lib/src/ckl-mapper/checklist-jsonix-converter.d.ts.map +1 -0
- package/lib/src/ckl-mapper/checklist-jsonix-converter.js +59 -25
- package/lib/src/ckl-mapper/checklist-jsonix-converter.js.map +1 -1
- package/lib/src/ckl-mapper/checklist-mapper.d.ts +35 -0
- package/lib/src/ckl-mapper/checklist-mapper.d.ts.map +1 -0
- package/lib/src/ckl-mapper/checklist-mapper.js +264 -155
- package/lib/src/ckl-mapper/checklist-mapper.js.map +1 -1
- package/lib/src/ckl-mapper/checklist-metadata-utils.d.ts +1 -0
- package/lib/src/ckl-mapper/checklist-metadata-utils.d.ts.map +1 -0
- package/lib/src/ckl-mapper/checklist-metadata-utils.js +38 -16
- package/lib/src/ckl-mapper/checklist-metadata-utils.js.map +1 -1
- package/lib/src/ckl-mapper/checklistJsonix.d.ts +6 -0
- package/lib/src/ckl-mapper/checklistJsonix.d.ts.map +1 -0
- package/lib/src/ckl-mapper/checklistJsonix.js +8 -8
- package/lib/src/ckl-mapper/checklistJsonix.js.map +1 -1
- package/lib/src/ckl-mapper/jsonixMapping.d.ts +5 -0
- package/lib/src/ckl-mapper/jsonixMapping.d.ts.map +1 -0
- package/lib/src/ckl-mapper/jsonixMapping.js +4 -0
- package/lib/src/ckl-mapper/jsonixMapping.js.map +1 -1
- package/lib/src/converters-from-hdf/asff/asff-types.d.ts +1 -0
- package/lib/src/converters-from-hdf/asff/asff-types.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/asff/asff-types.js +1 -0
- package/lib/src/converters-from-hdf/asff/asff-types.js.map +1 -1
- package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.d.ts +1 -0
- package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.js +110 -84
- package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.js.map +1 -1
- package/lib/src/converters-from-hdf/asff/transformers.d.ts +1 -0
- package/lib/src/converters-from-hdf/asff/transformers.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/asff/transformers.js +82 -55
- package/lib/src/converters-from-hdf/asff/transformers.js.map +1 -1
- package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.d.ts +1 -0
- package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.js +65 -38
- package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.js.map +1 -1
- package/lib/src/converters-from-hdf/html/embedded-assets.d.ts +4 -0
- package/lib/src/converters-from-hdf/html/embedded-assets.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/html/embedded-assets.js +8 -0
- package/lib/src/converters-from-hdf/html/embedded-assets.js.map +1 -0
- package/lib/src/converters-from-hdf/html/html-types.d.ts +1 -0
- package/lib/src/converters-from-hdf/html/html-types.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/html/html-types.js +1 -0
- package/lib/src/converters-from-hdf/html/html-types.js.map +1 -1
- package/lib/src/converters-from-hdf/html/reverse-html-mapper.d.ts +3 -2
- package/lib/src/converters-from-hdf/html/reverse-html-mapper.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/html/reverse-html-mapper.js +151 -107
- package/lib/src/converters-from-hdf/html/reverse-html-mapper.js.map +1 -1
- package/lib/src/converters-from-hdf/reverse-any-base-converter.d.ts +1 -0
- package/lib/src/converters-from-hdf/reverse-any-base-converter.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/reverse-any-base-converter.js +3 -0
- package/lib/src/converters-from-hdf/reverse-any-base-converter.js.map +1 -1
- package/lib/src/converters-from-hdf/reverse-base-converter.d.ts +1 -0
- package/lib/src/converters-from-hdf/reverse-base-converter.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/reverse-base-converter.js +29 -9
- package/lib/src/converters-from-hdf/reverse-base-converter.js.map +1 -1
- package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.d.ts +1 -0
- package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.js +40 -16
- package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.js.map +1 -1
- package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.d.ts +1 -0
- package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.js +33 -12
- package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.js.map +1 -1
- package/lib/src/conveyor-mapper.d.ts +1 -0
- package/lib/src/conveyor-mapper.d.ts.map +1 -0
- package/lib/src/conveyor-mapper.js +85 -40
- package/lib/src/conveyor-mapper.js.map +1 -1
- package/lib/src/cyclonedx-sbom-mapper.d.ts +1 -0
- package/lib/src/cyclonedx-sbom-mapper.d.ts.map +1 -0
- package/lib/src/cyclonedx-sbom-mapper.js +377 -309
- package/lib/src/cyclonedx-sbom-mapper.js.map +1 -1
- package/lib/src/dbprotect-mapper.d.ts +1 -0
- package/lib/src/dbprotect-mapper.d.ts.map +1 -0
- package/lib/src/dbprotect-mapper.js +74 -63
- package/lib/src/dbprotect-mapper.js.map +1 -1
- package/lib/src/dependency-track-mapper.d.ts +1 -0
- package/lib/src/dependency-track-mapper.d.ts.map +1 -0
- package/lib/src/dependency-track-mapper.js +144 -130
- package/lib/src/dependency-track-mapper.js.map +1 -1
- package/lib/src/fortify-mapper.d.ts +7 -0
- package/lib/src/fortify-mapper.d.ts.map +1 -0
- package/lib/src/fortify-mapper.js +118 -92
- package/lib/src/fortify-mapper.js.map +1 -1
- package/lib/src/gosec-mapper.d.ts +1 -0
- package/lib/src/gosec-mapper.d.ts.map +1 -0
- package/lib/src/gosec-mapper.js +90 -72
- package/lib/src/gosec-mapper.js.map +1 -1
- package/lib/src/ionchannel-mapper.d.ts +1 -0
- package/lib/src/ionchannel-mapper.d.ts.map +1 -0
- package/lib/src/ionchannel-mapper.js +130 -110
- package/lib/src/ionchannel-mapper.js.map +1 -1
- package/lib/src/jfrog-xray-mapper.d.ts +1 -0
- package/lib/src/jfrog-xray-mapper.d.ts.map +1 -0
- package/lib/src/jfrog-xray-mapper.js +92 -78
- package/lib/src/jfrog-xray-mapper.js.map +1 -1
- package/lib/src/jsonix-converter.d.ts +1 -0
- package/lib/src/jsonix-converter.d.ts.map +1 -0
- package/lib/src/jsonix-converter.js +1 -0
- package/lib/src/jsonix-converter.js.map +1 -1
- package/lib/src/jsonix-intermediate-converter.d.ts +1 -0
- package/lib/src/jsonix-intermediate-converter.d.ts.map +1 -0
- package/lib/src/jsonix-intermediate-converter.js.map +1 -1
- package/lib/src/mappings/AwsConfigMapping.d.ts +1 -0
- package/lib/src/mappings/AwsConfigMapping.d.ts.map +1 -0
- package/lib/src/mappings/AwsConfigMapping.js +19 -9
- package/lib/src/mappings/AwsConfigMapping.js.map +1 -1
- package/lib/src/mappings/AwsConfigMappingData.d.ts +1 -0
- package/lib/src/mappings/AwsConfigMappingData.d.ts.map +1 -0
- package/lib/src/mappings/AwsConfigMappingData.js.map +1 -1
- package/lib/src/mappings/CciNistMapping.d.ts +1 -0
- package/lib/src/mappings/CciNistMapping.d.ts.map +1 -0
- package/lib/src/mappings/CciNistMapping.js +6 -2
- package/lib/src/mappings/CciNistMapping.js.map +1 -1
- package/lib/src/mappings/CciNistMappingData.d.ts +1 -0
- package/lib/src/mappings/CciNistMappingData.d.ts.map +1 -0
- package/lib/src/mappings/CciNistMappingData.js.map +1 -1
- package/lib/src/mappings/CciNistMappingItem.d.ts +1 -0
- package/lib/src/mappings/CciNistMappingItem.d.ts.map +1 -0
- package/lib/src/mappings/CciNistMappingItem.js +2 -0
- package/lib/src/mappings/CciNistMappingItem.js.map +1 -1
- package/lib/src/mappings/CheckovToCciAndNistMappingData.d.ts +5 -0
- package/lib/src/mappings/CheckovToCciAndNistMappingData.d.ts.map +1 -0
- package/lib/src/mappings/CheckovToCciAndNistMappingData.js +2695 -0
- package/lib/src/mappings/CheckovToCciAndNistMappingData.js.map +1 -0
- package/lib/src/mappings/CweNistMapping.d.ts +1 -0
- package/lib/src/mappings/CweNistMapping.d.ts.map +1 -0
- package/lib/src/mappings/CweNistMapping.js +1 -0
- package/lib/src/mappings/CweNistMapping.js.map +1 -1
- package/lib/src/mappings/CweNistMappingData.d.ts +1 -0
- package/lib/src/mappings/CweNistMappingData.d.ts.map +1 -0
- package/lib/src/mappings/CweNistMappingData.js.map +1 -1
- package/lib/src/mappings/CweNistMappingItem.d.ts +1 -0
- package/lib/src/mappings/CweNistMappingItem.d.ts.map +1 -0
- package/lib/src/mappings/CweNistMappingItem.js +5 -0
- package/lib/src/mappings/CweNistMappingItem.js.map +1 -1
- package/lib/src/mappings/NessusPluginNistMappingData.d.ts +1 -0
- package/lib/src/mappings/NessusPluginNistMappingData.d.ts.map +1 -0
- package/lib/src/mappings/NessusPluginNistMappingData.js.map +1 -1
- package/lib/src/mappings/NessusPluginsNistMapping.d.ts +1 -0
- package/lib/src/mappings/NessusPluginsNistMapping.d.ts.map +1 -0
- package/lib/src/mappings/NessusPluginsNistMapping.js +1 -0
- package/lib/src/mappings/NessusPluginsNistMapping.js.map +1 -1
- package/lib/src/mappings/NessusPluginsNistMappingItem.d.ts +1 -0
- package/lib/src/mappings/NessusPluginsNistMappingItem.d.ts.map +1 -0
- package/lib/src/mappings/NessusPluginsNistMappingItem.js +4 -0
- package/lib/src/mappings/NessusPluginsNistMappingItem.js.map +1 -1
- package/lib/src/mappings/NiktoNistMapping.d.ts +1 -0
- package/lib/src/mappings/NiktoNistMapping.d.ts.map +1 -0
- package/lib/src/mappings/NiktoNistMapping.js.map +1 -1
- package/lib/src/mappings/NiktoNistMappingData.d.ts +1 -0
- package/lib/src/mappings/NiktoNistMappingData.d.ts.map +1 -0
- package/lib/src/mappings/NiktoNistMappingData.js.map +1 -1
- package/lib/src/mappings/NiktoNistMappingItem.d.ts +1 -0
- package/lib/src/mappings/NiktoNistMappingItem.d.ts.map +1 -0
- package/lib/src/mappings/NiktoNistMappingItem.js +4 -0
- package/lib/src/mappings/NiktoNistMappingItem.js.map +1 -1
- package/lib/src/mappings/NistCciMappingData.d.ts +1 -0
- package/lib/src/mappings/NistCciMappingData.d.ts.map +1 -0
- package/lib/src/mappings/NistCciMappingData.js.map +1 -1
- package/lib/src/mappings/OwaspNistMapping.d.ts +1 -0
- package/lib/src/mappings/OwaspNistMapping.d.ts.map +1 -0
- package/lib/src/mappings/OwaspNistMapping.js +19 -8
- package/lib/src/mappings/OwaspNistMapping.js.map +1 -1
- package/lib/src/mappings/OwaspNistMappingData.d.ts +1 -0
- package/lib/src/mappings/OwaspNistMappingData.d.ts.map +1 -0
- package/lib/src/mappings/OwaspNistMappingData.js.map +1 -1
- package/lib/src/mappings/OwaspNistMappingItem.d.ts +1 -0
- package/lib/src/mappings/OwaspNistMappingItem.d.ts.map +1 -0
- package/lib/src/mappings/OwaspNistMappingItem.js +5 -0
- package/lib/src/mappings/OwaspNistMappingItem.js.map +1 -1
- package/lib/src/mappings/ScoutsuiteNistMapping.d.ts +1 -0
- package/lib/src/mappings/ScoutsuiteNistMapping.d.ts.map +1 -0
- package/lib/src/mappings/ScoutsuiteNistMapping.js +1 -0
- package/lib/src/mappings/ScoutsuiteNistMapping.js.map +1 -1
- package/lib/src/mappings/ScoutsuiteNistMappingData.d.ts +1 -0
- package/lib/src/mappings/ScoutsuiteNistMappingData.d.ts.map +1 -0
- package/lib/src/mappings/ScoutsuiteNistMappingData.js.map +1 -1
- package/lib/src/mappings/ScoutsuiteNistMappingItem.d.ts +1 -0
- package/lib/src/mappings/ScoutsuiteNistMappingItem.d.ts.map +1 -0
- package/lib/src/mappings/ScoutsuiteNistMappingItem.js +2 -0
- package/lib/src/mappings/ScoutsuiteNistMappingItem.js.map +1 -1
- package/lib/src/msft-secure-score-mapper.d.ts +1 -0
- package/lib/src/msft-secure-score-mapper.d.ts.map +1 -0
- package/lib/src/msft-secure-score-mapper.js +202 -185
- package/lib/src/msft-secure-score-mapper.js.map +1 -1
- package/lib/src/nessus-mapper.d.ts +2 -1
- package/lib/src/nessus-mapper.d.ts.map +1 -0
- package/lib/src/nessus-mapper.js +122 -105
- package/lib/src/nessus-mapper.js.map +1 -1
- package/lib/src/netsparker-mapper.d.ts +7 -0
- package/lib/src/netsparker-mapper.d.ts.map +1 -0
- package/lib/src/netsparker-mapper.js +34 -9
- package/lib/src/netsparker-mapper.js.map +1 -1
- package/lib/src/neuvector-mapper.d.ts +1 -0
- package/lib/src/neuvector-mapper.d.ts.map +1 -0
- package/lib/src/neuvector-mapper.js +123 -124
- package/lib/src/neuvector-mapper.js.map +1 -1
- package/lib/src/nikto-mapper.d.ts +1 -0
- package/lib/src/nikto-mapper.d.ts.map +1 -0
- package/lib/src/nikto-mapper.js +85 -74
- package/lib/src/nikto-mapper.js.map +1 -1
- package/lib/src/prisma-mapper.d.ts +1 -0
- package/lib/src/prisma-mapper.d.ts.map +1 -0
- package/lib/src/prisma-mapper.js +138 -128
- package/lib/src/prisma-mapper.js.map +1 -1
- package/lib/src/sarif-mapper.d.ts +1 -0
- package/lib/src/sarif-mapper.d.ts.map +1 -0
- package/lib/src/sarif-mapper.js +116 -105
- package/lib/src/sarif-mapper.js.map +1 -1
- package/lib/src/scoutsuite-mapper.d.ts +1 -0
- package/lib/src/scoutsuite-mapper.d.ts.map +1 -0
- package/lib/src/scoutsuite-mapper.js +174 -163
- package/lib/src/scoutsuite-mapper.js.map +1 -1
- package/lib/src/snyk-mapper.d.ts +1 -0
- package/lib/src/snyk-mapper.d.ts.map +1 -0
- package/lib/src/snyk-mapper.js +112 -100
- package/lib/src/snyk-mapper.js.map +1 -1
- package/lib/src/sonarqube-mapper.d.ts +18 -5
- package/lib/src/sonarqube-mapper.d.ts.map +1 -0
- package/lib/src/sonarqube-mapper.js +526 -278
- package/lib/src/sonarqube-mapper.js.map +1 -1
- package/lib/src/splunk-mapper.d.ts +3 -2
- package/lib/src/splunk-mapper.d.ts.map +1 -0
- package/lib/src/splunk-mapper.js +72 -16
- package/lib/src/splunk-mapper.js.map +1 -1
- package/lib/src/trufflehog-mapper.d.ts +1 -0
- package/lib/src/trufflehog-mapper.d.ts.map +1 -0
- package/lib/src/trufflehog-mapper.js +72 -69
- package/lib/src/trufflehog-mapper.js.map +1 -1
- package/lib/src/twistlock-mapper.d.ts +1 -0
- package/lib/src/twistlock-mapper.d.ts.map +1 -0
- package/lib/src/twistlock-mapper.js +140 -126
- package/lib/src/twistlock-mapper.js.map +1 -1
- package/lib/src/utils/CCI_List.d.ts +1 -0
- package/lib/src/utils/CCI_List.d.ts.map +1 -0
- package/lib/src/utils/CCI_List.js.map +1 -1
- package/lib/src/utils/attestations.d.ts +1 -0
- package/lib/src/utils/attestations.d.ts.map +1 -0
- package/lib/src/utils/attestations.js +28 -13
- package/lib/src/utils/attestations.js.map +1 -1
- package/lib/src/utils/compliance.d.ts +1 -0
- package/lib/src/utils/compliance.d.ts.map +1 -0
- package/lib/src/utils/compliance.js +11 -3
- package/lib/src/utils/compliance.js.map +1 -1
- package/lib/src/utils/fingerprinting.d.ts +2 -0
- package/lib/src/utils/fingerprinting.d.ts.map +1 -0
- package/lib/src/utils/fingerprinting.js +28 -11
- package/lib/src/utils/fingerprinting.js.map +1 -1
- package/lib/src/utils/global.d.ts +3 -1
- package/lib/src/utils/global.d.ts.map +1 -0
- package/lib/src/utils/global.js +35 -17
- package/lib/src/utils/global.js.map +1 -1
- package/lib/src/utils/parseJson.d.ts +1 -0
- package/lib/src/utils/parseJson.d.ts.map +1 -0
- package/lib/src/utils/parseJson.js +7 -3
- package/lib/src/utils/parseJson.js.map +1 -1
- package/lib/src/utils/result.d.ts +1 -0
- package/lib/src/utils/result.d.ts.map +1 -0
- package/lib/src/utils/result.js.map +1 -1
- package/lib/src/utils/splunk-tools.d.ts +2 -1
- package/lib/src/utils/splunk-tools.d.ts.map +1 -0
- package/lib/src/utils/splunk-tools.js +52 -32
- package/lib/src/utils/splunk-tools.js.map +1 -1
- package/lib/src/veracode-mapper.d.ts +1 -0
- package/lib/src/veracode-mapper.d.ts.map +1 -0
- package/lib/src/veracode-mapper.js +50 -7
- package/lib/src/veracode-mapper.js.map +1 -1
- package/lib/src/xccdf-results-mapper.d.ts +7 -0
- package/lib/src/xccdf-results-mapper.d.ts.map +1 -0
- package/lib/src/xccdf-results-mapper.js +336 -301
- package/lib/src/xccdf-results-mapper.js.map +1 -1
- package/lib/src/zap-mapper.d.ts +8 -0
- package/lib/src/zap-mapper.d.ts.map +1 -0
- package/lib/src/zap-mapper.js +119 -90
- package/lib/src/zap-mapper.js.map +1 -1
- package/lib/tsconfig.build.tsbuildinfo +1 -0
- package/lib/types/neuvector-types.d.ts +1 -0
- package/lib/types/neuvector-types.d.ts.map +1 -0
- package/lib/types/neuvector-types.js +80 -0
- package/lib/types/neuvector-types.js.map +1 -1
- package/lib/types/splunk-config-types.d.ts +1 -0
- package/lib/types/splunk-config-types.d.ts.map +1 -0
- package/lib/types/splunk-config-types.js.map +1 -1
- package/lib/types/splunk-control-types.d.ts +1 -0
- package/lib/types/splunk-control-types.d.ts.map +1 -0
- package/lib/types/splunk-control-types.js.map +1 -1
- package/lib/types/splunk-profile-types.d.ts +1 -0
- package/lib/types/splunk-profile-types.d.ts.map +1 -0
- package/lib/types/splunk-profile-types.js.map +1 -1
- package/lib/types/splunk-report-types.d.ts +1 -0
- package/lib/types/splunk-report-types.d.ts.map +1 -0
- package/lib/types/splunk-report-types.js.map +1 -1
- package/package.json +29 -46
- package/lib/data/converters/csv2json.ts +0 -36
- package/lib/data/converters/xml2json.ts +0 -57
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.CheckovMapper = void 0;
|
|
37
|
+
const inspecjs_1 = require("inspecjs");
|
|
38
|
+
const _ = __importStar(require("lodash"));
|
|
39
|
+
const package_json_1 = require("../package.json");
|
|
40
|
+
const base_converter_1 = require("./base-converter");
|
|
41
|
+
const CheckovToCciAndNistMappingData_1 = require("./mappings/CheckovToCciAndNistMappingData");
|
|
42
|
+
const global_1 = require("./utils/global");
|
|
43
|
+
// https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/severities.py
|
|
44
|
+
// severity scale (score → HDF impact):
|
|
45
|
+
// CRITICAL: 5 → 1.0
|
|
46
|
+
// HIGH/IMPORTANT: 4 → 0.8
|
|
47
|
+
// MEDIUM/MODERATE: 3 → 0.6
|
|
48
|
+
// LOW: 2 → 0.4
|
|
49
|
+
// INFO: 1 → 0.2
|
|
50
|
+
// NONE: -999 → 0.0
|
|
51
|
+
// OFF: 999 -> MEDIUM
|
|
52
|
+
// null (no API Key) → MEDIUM
|
|
53
|
+
// Severity is only populated when passing in an API key via --bc-api-key, otherwise it is null
|
|
54
|
+
// Default to medium - treat null/unknown risk as moderate until a formal risk assessment is performed.
|
|
55
|
+
const MEDIUM_SEVERITY = 0.6;
|
|
56
|
+
const IMPACT_MAPPING = new Map([
|
|
57
|
+
['critical', 1],
|
|
58
|
+
['high', 0.8],
|
|
59
|
+
['important', 0.8],
|
|
60
|
+
['medium', MEDIUM_SEVERITY],
|
|
61
|
+
['moderate', 0.6],
|
|
62
|
+
['low', 0.4],
|
|
63
|
+
['info', 0.2],
|
|
64
|
+
['none', 0]
|
|
65
|
+
]);
|
|
66
|
+
function impactMapping(severity) {
|
|
67
|
+
if (_.isString(severity)) {
|
|
68
|
+
return IMPACT_MAPPING.get(severity.toLowerCase()) ?? MEDIUM_SEVERITY;
|
|
69
|
+
}
|
|
70
|
+
// Checkov native JSON default severity is null (no API key) → default to medium
|
|
71
|
+
return MEDIUM_SEVERITY;
|
|
72
|
+
}
|
|
73
|
+
function statusMapper(result) {
|
|
74
|
+
if (result === 'PASSED') {
|
|
75
|
+
return inspecjs_1.ExecJSON.ControlResultStatus.Passed;
|
|
76
|
+
}
|
|
77
|
+
else if (result === 'FAILED') {
|
|
78
|
+
return inspecjs_1.ExecJSON.ControlResultStatus.Failed;
|
|
79
|
+
}
|
|
80
|
+
return inspecjs_1.ExecJSON.ControlResultStatus.Skipped;
|
|
81
|
+
}
|
|
82
|
+
function formatCodeDesc(check) {
|
|
83
|
+
const resource = `Resource: ${check.resource}`;
|
|
84
|
+
const fileLocation = `File: ${check.file_path}:${check.file_line_range[0]}-${check.file_line_range[1]}`;
|
|
85
|
+
const codeBlockInner = check.code_block.map(([line, code]) => `${line}: ${code}`).join('').trim();
|
|
86
|
+
const codeBlock = `<pre>${codeBlockInner}</pre>`;
|
|
87
|
+
return `${resource}\n${fileLocation}\n${check.code_block.length === 0 ? '' : codeBlock}`;
|
|
88
|
+
}
|
|
89
|
+
function formatCode(check) {
|
|
90
|
+
const unmapped = _.omit(check, ['check_id', 'check_name', 'check_result', 'file_path', 'file_line_range', 'resource', 'code_block', 'check_class', 'file_abs_path', 'repo_file_path', 'severity', 'guideline', 'description', 'short_description', 'vulnerability_details', 'fixed_definition']);
|
|
91
|
+
return JSON.stringify(unmapped, null, 2);
|
|
92
|
+
}
|
|
93
|
+
class CheckovMapper extends base_converter_1.BaseConverter {
|
|
94
|
+
withRaw;
|
|
95
|
+
mappings = {
|
|
96
|
+
platform: {
|
|
97
|
+
name: 'Heimdall Tools',
|
|
98
|
+
release: package_json_1.version
|
|
99
|
+
},
|
|
100
|
+
version: package_json_1.version,
|
|
101
|
+
statistics: {},
|
|
102
|
+
profiles: [
|
|
103
|
+
{
|
|
104
|
+
name: 'Checkov',
|
|
105
|
+
version: { path: 'summary.checkov_version' },
|
|
106
|
+
title: {
|
|
107
|
+
path: 'check_type',
|
|
108
|
+
transformer: (checkType) => `Bridgecrew (by Prisma Cloud) Checkov ${checkType} Security Scan`
|
|
109
|
+
},
|
|
110
|
+
supports: [],
|
|
111
|
+
attributes: [],
|
|
112
|
+
groups: [],
|
|
113
|
+
status: 'loaded',
|
|
114
|
+
controls: [
|
|
115
|
+
{
|
|
116
|
+
path: 'results.passed_checks',
|
|
117
|
+
...this.controlMapping()
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
path: 'results.failed_checks',
|
|
121
|
+
...this.controlMapping()
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
path: 'results.skipped_checks',
|
|
125
|
+
...this.controlMapping()
|
|
126
|
+
},
|
|
127
|
+
...(this.data.results.parsing_errors.length === 0 ? [] : [{
|
|
128
|
+
id: 'Parsing Errors',
|
|
129
|
+
impact: MEDIUM_SEVERITY,
|
|
130
|
+
refs: [],
|
|
131
|
+
results: [{
|
|
132
|
+
path: 'results.parsing_errors',
|
|
133
|
+
code_desc: { transformer: (parsingError) => parsingError },
|
|
134
|
+
start_time: '',
|
|
135
|
+
status: 'error'
|
|
136
|
+
}],
|
|
137
|
+
source_location: {},
|
|
138
|
+
tags: {}
|
|
139
|
+
}])
|
|
140
|
+
],
|
|
141
|
+
sha256: ''
|
|
142
|
+
}
|
|
143
|
+
],
|
|
144
|
+
passthrough: {
|
|
145
|
+
transformer: (data) => {
|
|
146
|
+
return {
|
|
147
|
+
auxiliary_data: [
|
|
148
|
+
{
|
|
149
|
+
name: 'Checkov',
|
|
150
|
+
data: {
|
|
151
|
+
summary: data.summary,
|
|
152
|
+
url: data.url
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
],
|
|
156
|
+
...(0, global_1.conditionallyProvideAttribute)('raw', data, this.withRaw)
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
controlMapping() {
|
|
162
|
+
return {
|
|
163
|
+
key: 'id',
|
|
164
|
+
tags: {
|
|
165
|
+
cci: {
|
|
166
|
+
path: 'check_id',
|
|
167
|
+
transformer: (checkId) => {
|
|
168
|
+
const mapping = CheckovToCciAndNistMappingData_1.data[checkId];
|
|
169
|
+
return mapping ? mapping.cci : global_1.DEFAULT_STATIC_CODE_ANALYSIS_CCI_TAGS;
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
nist: {
|
|
173
|
+
path: 'check_id',
|
|
174
|
+
transformer: (checkId) => {
|
|
175
|
+
const mapping = CheckovToCciAndNistMappingData_1.data[checkId];
|
|
176
|
+
return mapping ? mapping.nist : global_1.DEFAULT_STATIC_CODE_ANALYSIS_NIST_TAGS;
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
severity: { path: 'severity' },
|
|
180
|
+
checkov_id: { path: 'check_id' },
|
|
181
|
+
check_class: { path: 'check_class' },
|
|
182
|
+
resource: { path: 'resource' },
|
|
183
|
+
},
|
|
184
|
+
refs: [
|
|
185
|
+
{
|
|
186
|
+
path: 'guideline',
|
|
187
|
+
transformer: (guideline) => {
|
|
188
|
+
if (_.isString(guideline) && guideline.length > 0) {
|
|
189
|
+
return { url: guideline };
|
|
190
|
+
}
|
|
191
|
+
return {};
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
],
|
|
195
|
+
title: {
|
|
196
|
+
transformer: (check) => {
|
|
197
|
+
const shortDescription = check.short_description ? `: ${check.short_description}` : '';
|
|
198
|
+
return `${check.check_name}${shortDescription}`;
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
desc: { path: 'description' },
|
|
202
|
+
id: { transformer: (check) => `${check.check_id}\n${check.resource}` },
|
|
203
|
+
impact: { path: 'severity', transformer: impactMapping },
|
|
204
|
+
code: { transformer: formatCode },
|
|
205
|
+
source_location: {},
|
|
206
|
+
results: [
|
|
207
|
+
{
|
|
208
|
+
status: { path: 'check_result.result', transformer: statusMapper },
|
|
209
|
+
code_desc: { transformer: formatCodeDesc },
|
|
210
|
+
message: {
|
|
211
|
+
transformer: (check) => {
|
|
212
|
+
const parts = Object.entries(_.omit(check.check_result, ['result'])).map(([key, value]) => `${_.startCase(key)}: ${(value === null || value === undefined || typeof value !== 'object') ? String(value) : JSON.stringify(value, null, 2)}`);
|
|
213
|
+
parts.push(`Repo File Path: ${check.repo_file_path}`, `File Abs Path: ${check.file_abs_path}`);
|
|
214
|
+
if (check.fixed_definition) {
|
|
215
|
+
const fix = _.isString(check.fixed_definition) ? check.fixed_definition : JSON.stringify(check.fixed_definition, null, 2);
|
|
216
|
+
parts.push(`Fixed Definition: ${fix}`);
|
|
217
|
+
}
|
|
218
|
+
if (check.fixed_definition) {
|
|
219
|
+
const fix = _.isString(check.fixed_definition) ? check.fixed_definition : JSON.stringify(check.fixed_definition, null, 2);
|
|
220
|
+
parts.push(`Fixed Definition: ${fix}`);
|
|
221
|
+
}
|
|
222
|
+
if (check.vulnerability_details) {
|
|
223
|
+
const vulnDetails = JSON.stringify(check.vulnerability_details, null, 2);
|
|
224
|
+
parts.push(`Vulnerability Details: ${vulnDetails}`);
|
|
225
|
+
}
|
|
226
|
+
return parts.join('\n');
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
start_time: ""
|
|
230
|
+
}
|
|
231
|
+
]
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
constructor(checkovJson, withRaw = false) {
|
|
235
|
+
super(JSON.parse(checkovJson));
|
|
236
|
+
this.withRaw = withRaw;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
exports.CheckovMapper = CheckovMapper;
|
|
240
|
+
//# sourceMappingURL=checkov-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkov-mapper.js","sourceRoot":"","sources":["../../src/checkov-mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import {ExecJSON} from 'inspecjs';\nimport * as _ from 'lodash';\nimport {version as HeimdallToolsVersion} from '../package.json';\nimport {BaseConverter, ILookupPath, MappedTransform} from './base-converter';\nimport {data as MappingData} from './mappings/CheckovToCciAndNistMappingData';\nimport {\n conditionallyProvideAttribute,\n DEFAULT_STATIC_CODE_ANALYSIS_CCI_TAGS,\n DEFAULT_STATIC_CODE_ANALYSIS_NIST_TAGS\n} from './utils/global';\n\ntype CheckovCheckResult = {\n result: 'PASSED' | 'FAILED' | 'SKIPPED' | 'UNKNOWN';\n evaluated_keys: string[];\n [property: string]: unknown;\n};\n\ntype CheckovCheck = {\n // Always present, never null\n check_id: string;\n check_name: string;\n check_result: CheckovCheckResult;\n file_path: string;\n file_line_range: number[];\n resource: string;\n code_block: Array<[number, string]>;\n check_class: string;\n file_abs_path: string;\n repo_file_path: string;\n definition_context_file_path: string;\n details: string[];\n // Always present but can be null\n severity: string | null;\n guideline: string | null;\n bc_check_id: string | null;\n resource_address: string | null;\n entity_tags: Record<string, string> | null;\n caller_file_path: string | null;\n caller_file_line_range: number[] | null;\n description: string | null;\n benchmarks: Record<string, unknown> | null;\n bc_category: string | null;\n short_description: string | null;\n vulnerability_details: Record<string, unknown> | null;\n check_len: number | null;\n connected_node: Record<string, unknown> | null;\n evaluations: Record<string, unknown> | null;\n fixed_definition: string | null;\n // Catch-all for remaining optional fields\n [property: string]: unknown;\n};\n\ntype CheckovSummary = {\n passed: number;\n failed: number;\n skipped: number;\n parsing_errors: number;\n resource_count: number;\n checkov_version: string;\n};\n\ntype CheckovReport = {\n check_type: string;\n results: {\n passed_checks: CheckovCheck[];\n failed_checks: CheckovCheck[];\n skipped_checks: CheckovCheck[];\n parsing_errors: string[];\n };\n summary: CheckovSummary;\n url: string;\n};\n\n// https://github.com/bridgecrewio/checkov/blob/main/checkov/common/bridgecrew/severities.py\n// severity scale (score → HDF impact):\n// CRITICAL: 5 → 1.0\n// HIGH/IMPORTANT: 4 → 0.8\n// MEDIUM/MODERATE: 3 → 0.6\n// LOW: 2 → 0.4\n// INFO: 1 → 0.2\n// NONE: -999 → 0.0\n// OFF: 999 -> MEDIUM\n// null (no API Key) → MEDIUM\n// Severity is only populated when passing in an API key via --bc-api-key, otherwise it is null\n// Default to medium - treat null/unknown risk as moderate until a formal risk assessment is performed.\nconst MEDIUM_SEVERITY = 0.6;\nconst IMPACT_MAPPING: Map<string, number> = new Map([\n ['critical', 1],\n ['high', 0.8],\n ['important', 0.8],\n ['medium', MEDIUM_SEVERITY],\n ['moderate', 0.6],\n ['low', 0.4],\n ['info', 0.2],\n ['none', 0]\n]);\n\nfunction impactMapping(severity: CheckovCheck['severity']): number {\n if (_.isString(severity)) {\n return IMPACT_MAPPING.get(severity.toLowerCase()) ?? MEDIUM_SEVERITY;\n }\n // Checkov native JSON default severity is null (no API key) → default to medium\n return MEDIUM_SEVERITY;\n}\n\nfunction statusMapper(result: CheckovCheckResult['result']): ExecJSON.ControlResultStatus {\n if (result === 'PASSED') {\n return ExecJSON.ControlResultStatus.Passed;\n } else if (result === 'FAILED') {\n return ExecJSON.ControlResultStatus.Failed;\n }\n return ExecJSON.ControlResultStatus.Skipped;\n}\n\nfunction formatCodeDesc(check: CheckovCheck): string {\n const resource = `Resource: ${check.resource}`;\n const fileLocation = `File: ${check.file_path}:${check.file_line_range[0]}-${check.file_line_range[1]}`;\n const codeBlockInner = check.code_block.map(([line, code]) => `${line}: ${code}`).join('').trim();\n const codeBlock = `<pre>${codeBlockInner}</pre>`;\n return `${resource}\\n${fileLocation}\\n${check.code_block.length === 0 ? '' : codeBlock}`;\n}\n\nfunction formatCode(check: CheckovCheck): string {\n const unmapped = _.omit(check, ['check_id', 'check_name', 'check_result', 'file_path', 'file_line_range', 'resource', 'code_block', 'check_class', 'file_abs_path', 'repo_file_path', 'severity', 'guideline', 'description', 'short_description', 'vulnerability_details', 'fixed_definition']);\n\n return JSON.stringify(unmapped, null, 2);\n}\n\n\nexport class CheckovMapper extends BaseConverter<CheckovReport> {\n withRaw: boolean;\n\n mappings: MappedTransform<\n ExecJSON.Execution & {passthrough: unknown},\n ILookupPath\n > = {\n platform: {\n name: 'Heimdall Tools',\n release: HeimdallToolsVersion\n },\n version: HeimdallToolsVersion,\n statistics: {},\n profiles: [\n {\n name: 'Checkov',\n version: {path: 'summary.checkov_version'},\n title: {\n path: 'check_type',\n transformer: (checkType): string => `Bridgecrew (by Prisma Cloud) Checkov ${checkType} Security Scan`\n },\n supports: [],\n attributes: [],\n groups: [],\n status: 'loaded',\n controls: [\n {\n path: 'results.passed_checks',\n ...this.controlMapping()\n },\n {\n path: 'results.failed_checks',\n ...this.controlMapping()\n },\n {\n path: 'results.skipped_checks',\n ...this.controlMapping()\n },\n ...(this.data.results.parsing_errors.length === 0 ? [] : [{\n id: 'Parsing Errors',\n impact: MEDIUM_SEVERITY,\n refs: [],\n results: [{\n path: 'results.parsing_errors',\n code_desc: {transformer: (parsingError) => parsingError},\n start_time: '',\n status: 'error'\n }],\n source_location: {},\n tags: {}\n } as MappedTransform<ExecJSON.Control & ILookupPath, ILookupPath>])\n ],\n sha256: ''\n }\n ],\n passthrough: {\n transformer: (\n data: CheckovReport\n ): Record<string, unknown> => {\n return {\n auxiliary_data: [\n {\n name: 'Checkov',\n data: {\n summary: data.summary,\n url: data.url\n }\n }\n ],\n ...conditionallyProvideAttribute('raw', data, this.withRaw)\n };\n }\n }\n };\n\ncontrolMapping(): MappedTransform<\n ExecJSON.Control & ILookupPath,\n ILookupPath\n> {\n return {\n key: 'id',\n tags: {\n cci: {\n path: 'check_id',\n transformer: (checkId: CheckovCheck['check_id']): string[] => {\n const mapping = MappingData[checkId];\n return mapping ? mapping.cci : DEFAULT_STATIC_CODE_ANALYSIS_CCI_TAGS;\n }\n },\n nist: {\n path: 'check_id',\n transformer: (checkId: CheckovCheck['check_id']): string[] => {\n const mapping = MappingData[checkId];\n return mapping ? mapping.nist : DEFAULT_STATIC_CODE_ANALYSIS_NIST_TAGS;\n }\n },\n severity: {path: 'severity'},\n checkov_id: {path: 'check_id'},\n check_class: {path: 'check_class'},\n resource: {path: 'resource'},\n },\n refs: [\n {\n path: 'guideline',\n transformer: (guideline) => {\n if (_.isString(guideline) && guideline.length > 0) {\n return {url: guideline};\n }\n return {};\n }\n }\n ],\n title: {\n transformer: (check: CheckovCheck): string => {\n const shortDescription = check.short_description ? `: ${check.short_description}` : '';\n return `${check.check_name}${shortDescription}`;\n }\n },\n desc: {path: 'description'},\n id: {transformer: (check: CheckovCheck): string => `${check.check_id}\\n${check.resource}`},\n impact: {path: 'severity', transformer: impactMapping},\n code: {transformer: formatCode},\n source_location: {},\n results: [\n {\n status: {path: 'check_result.result', transformer: statusMapper},\n code_desc: {transformer: formatCodeDesc},\n message: {\n transformer: (check: CheckovCheck): string => {\n const parts = Object.entries(_.omit(check.check_result, ['result'])).map(([key, value]) => `${_.startCase(key)}: ${(value === null || value === undefined || typeof value !== 'object') ? String(value) : JSON.stringify(value, null, 2)}`);\n parts.push(\n `Repo File Path: ${check.repo_file_path}`,\n `File Abs Path: ${check.file_abs_path}`\n );\n if (check.fixed_definition) {\n const fix: string = _.isString(check.fixed_definition) ? check.fixed_definition : JSON.stringify(check.fixed_definition, null, 2);\n parts.push(`Fixed Definition: ${fix}`);\n }\n if (check.fixed_definition) {\n const fix: string = _.isString(check.fixed_definition) ? check.fixed_definition : JSON.stringify(check.fixed_definition, null, 2);\n parts.push(`Fixed Definition: ${fix}`);\n }\n if (check.vulnerability_details) {\n const vulnDetails: string = JSON.stringify(check.vulnerability_details, null, 2);\n parts.push(`Vulnerability Details: ${vulnDetails}`);\n }\n return parts.join('\\n');\n }\n },\n start_time: \"\"\n }\n ]\n };\n}\n\n constructor(checkovJson: string, withRaw = false) {\n super(JSON.parse(checkovJson) as CheckovReport);\n this.withRaw = withRaw;\n }\n}\n"]}
|
|
@@ -92,8 +92,16 @@ export type StigMetadata = {
|
|
|
92
92
|
};
|
|
93
93
|
export declare const EmptyChecklistObject: ChecklistObject;
|
|
94
94
|
export declare function updateChecklistWithMetadata(file: ExecJSON.Execution): ChecklistObject;
|
|
95
|
+
/**
|
|
96
|
+
* Checklist jsonix converter
|
|
97
|
+
*/
|
|
95
98
|
export declare class ChecklistJsonixConverter extends JsonixIntermediateConverter<Checklist, ChecklistObject> {
|
|
96
99
|
getValueFromAttributeName<T extends Stigdata | Sidata>(data: T[], tag: string): string;
|
|
100
|
+
/**
|
|
101
|
+
* Creates checklist object for mapping to HDF
|
|
102
|
+
* @param jsonixData - ChecklistJSONIX object
|
|
103
|
+
* @returns - newChecklistObject
|
|
104
|
+
*/
|
|
97
105
|
toIntermediateObject(jsonixData: Checklist): ChecklistObject;
|
|
98
106
|
expandHeader(header: StigHeader): Sidata[];
|
|
99
107
|
expandVulns(checklistVuln: ChecklistVuln): StigdatumElement[];
|
|
@@ -109,6 +117,15 @@ export declare class ChecklistJsonixConverter extends JsonixIntermediateConverte
|
|
|
109
117
|
addHdfProfileSpecificData(profile: ExecJSON.Profile): string;
|
|
110
118
|
controlsToVulns(profile: ExecJSON.Profile, stigRef: string, metadata?: ChecklistMetadata): ChecklistVuln[];
|
|
111
119
|
getReleaseInfo(releasenumber: number | undefined, releasedate: string | undefined): string | undefined;
|
|
120
|
+
/**
|
|
121
|
+
* Converts an HDF (Heimdall Data Format) execution object to a ChecklistObject.
|
|
122
|
+
* This function assumes the HDF does not have a 'passthrough.checklist' object,
|
|
123
|
+
* and therefore would also not have checklist-specific control.tags
|
|
124
|
+
*
|
|
125
|
+
* @param hdf - The HDF execution object to convert.
|
|
126
|
+
* @returns {ChecklistObject} The converted ChecklistObject.
|
|
127
|
+
*/
|
|
112
128
|
hdfToIntermediateObject(hdf: ExecJSON.Execution): ChecklistObject;
|
|
113
129
|
}
|
|
114
130
|
export {};
|
|
131
|
+
//# sourceMappingURL=checklist-jsonix-converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checklist-jsonix-converter.d.ts","sourceRoot":"","sources":["../../../src/ckl-mapper/checklist-jsonix-converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ChecklistJsonixConverter = exports.
|
|
6
|
+
exports.ChecklistJsonixConverter = exports.EmptyChecklistObject = exports.Severity = void 0;
|
|
7
|
+
exports.updateChecklistWithMetadata = updateChecklistWithMetadata;
|
|
7
8
|
const inspecjs_1 = require("inspecjs");
|
|
8
9
|
const lodash_1 = __importDefault(require("lodash"));
|
|
9
10
|
const jsonix_intermediate_converter_1 = require("../jsonix-intermediate-converter");
|
|
@@ -12,6 +13,7 @@ const global_1 = require("../utils/global");
|
|
|
12
13
|
const checklistJsonix_1 = require("./checklistJsonix");
|
|
13
14
|
const semver_1 = require("semver");
|
|
14
15
|
const checklist_metadata_utils_1 = require("./checklist-metadata-utils");
|
|
16
|
+
// Status mapping for going to and from checklist
|
|
15
17
|
var StatusMapping;
|
|
16
18
|
(function (StatusMapping) {
|
|
17
19
|
StatusMapping["NotAFinding"] = "Passed";
|
|
@@ -32,7 +34,7 @@ var Severity;
|
|
|
32
34
|
Severity["High"] = "high";
|
|
33
35
|
Severity["Low"] = "low";
|
|
34
36
|
Severity["Medium"] = "medium";
|
|
35
|
-
})(Severity
|
|
37
|
+
})(Severity || (exports.Severity = Severity = {}));
|
|
36
38
|
exports.EmptyChecklistObject = {
|
|
37
39
|
asset: {
|
|
38
40
|
assettype: checklistJsonix_1.Assettype.Computing,
|
|
@@ -128,7 +130,9 @@ function updateChecklistWithMetadata(file) {
|
|
|
128
130
|
}
|
|
129
131
|
return checklist;
|
|
130
132
|
}
|
|
131
|
-
|
|
133
|
+
/**
|
|
134
|
+
* Checklist jsonix converter
|
|
135
|
+
*/
|
|
132
136
|
class ChecklistJsonixConverter extends jsonix_intermediate_converter_1.JsonixIntermediateConverter {
|
|
133
137
|
getValueFromAttributeName(data, tag) {
|
|
134
138
|
let keyName = 'vulnattribute';
|
|
@@ -142,6 +146,11 @@ class ChecklistJsonixConverter extends jsonix_intermediate_converter_1.JsonixInt
|
|
|
142
146
|
});
|
|
143
147
|
return results.map((result) => lodash_1.default.get(result, dataName)).join('; ');
|
|
144
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Creates checklist object for mapping to HDF
|
|
151
|
+
* @param jsonixData - ChecklistJSONIX object
|
|
152
|
+
* @returns - newChecklistObject
|
|
153
|
+
*/
|
|
145
154
|
toIntermediateObject(jsonixData) {
|
|
146
155
|
const asset = {
|
|
147
156
|
role: lodash_1.default.get(jsonixData, 'value.asset.role'),
|
|
@@ -243,14 +252,13 @@ class ChecklistJsonixConverter extends jsonix_intermediate_converter_1.JsonixInt
|
|
|
243
252
|
return sidata;
|
|
244
253
|
}
|
|
245
254
|
expandVulns(checklistVuln) {
|
|
246
|
-
var _a;
|
|
247
255
|
const separateElementNames = ['CciRef', 'IAControls', 'LegacyID'];
|
|
248
256
|
const stigdata = [];
|
|
249
257
|
for (const [attributeName, data] of Object.entries(checklistVuln)) {
|
|
250
258
|
const keyFoundInVulnattribute = Object.keys(checklistJsonix_1.Vulnattribute).find((key) => key.toLowerCase() === attributeName.toLowerCase());
|
|
251
259
|
if (keyFoundInVulnattribute) {
|
|
252
260
|
if (separateElementNames.includes(keyFoundInVulnattribute)) {
|
|
253
|
-
const dataStrings =
|
|
261
|
+
const dataStrings = data?.toString().split(/[,|;]/) ?? [];
|
|
254
262
|
for (const dataString of dataStrings) {
|
|
255
263
|
stigdata.push({
|
|
256
264
|
vulnattribute: checklistJsonix_1.Vulnattribute[keyFoundInVulnattribute],
|
|
@@ -329,16 +337,22 @@ class ChecklistJsonixConverter extends jsonix_intermediate_converter_1.JsonixInt
|
|
|
329
337
|
}
|
|
330
338
|
}
|
|
331
339
|
severityMap(impact, severityTag) {
|
|
332
|
-
|
|
340
|
+
// test if this control has a valid severity tag
|
|
341
|
+
// and map it to a checklist severity level
|
|
342
|
+
// note: some mappers can produce non-lowercase severity tags
|
|
343
|
+
switch (severityTag?.toLowerCase()) {
|
|
333
344
|
case 'none':
|
|
345
|
+
// if none, it will be added to Checklist's thirdPartyTools section
|
|
334
346
|
case 'low':
|
|
335
347
|
return Severity.Low;
|
|
336
348
|
case 'medium':
|
|
337
349
|
return Severity.Medium;
|
|
338
350
|
case 'high':
|
|
339
351
|
case 'critical':
|
|
352
|
+
// if critical, it will be added to Checklist's thirdPartyTools section
|
|
340
353
|
return Severity.High;
|
|
341
354
|
}
|
|
355
|
+
// if no valid severity tag, compute severity based on impact
|
|
342
356
|
if (impact < 0.4) {
|
|
343
357
|
return Severity.Low;
|
|
344
358
|
}
|
|
@@ -397,15 +411,20 @@ class ChecklistJsonixConverter extends jsonix_intermediate_converter_1.JsonixInt
|
|
|
397
411
|
return results;
|
|
398
412
|
}
|
|
399
413
|
addHdfControlSpecificData(control) {
|
|
400
|
-
var _a;
|
|
401
414
|
const hdfSpecificData = {};
|
|
402
415
|
const impact = control.impact;
|
|
403
416
|
const severityTag = lodash_1.default.get(control.tags, 'severity', null);
|
|
404
417
|
const severityOverrideTag = lodash_1.default.get(control.tags, 'severityoverride', null);
|
|
418
|
+
// if severity or severity override don't fit into low, medium, high
|
|
419
|
+
// denote them in the control specific data
|
|
405
420
|
if (severityTag === 'none' || severityTag === 'critical')
|
|
406
421
|
hdfSpecificData['severity'] = severityTag;
|
|
407
422
|
if (severityOverrideTag === 'none' || severityOverrideTag === 'critical')
|
|
408
423
|
hdfSpecificData['severityoverride'] = severityOverrideTag;
|
|
424
|
+
// if impact does not align with what would be computed from the checklist
|
|
425
|
+
// store it in the hdfSpecificData
|
|
426
|
+
// also, if it needs to be represented with none or critical, it has
|
|
427
|
+
// to be stored in the hdfSpecificData
|
|
409
428
|
const computedImpact = this.computeImpact(severityTag, severityOverrideTag);
|
|
410
429
|
if (((computedImpact !== undefined && computedImpact !== impact) ||
|
|
411
430
|
impact < 0.1 ||
|
|
@@ -413,13 +432,16 @@ class ChecklistJsonixConverter extends jsonix_intermediate_converter_1.JsonixInt
|
|
|
413
432
|
impact !== 0.0) {
|
|
414
433
|
hdfSpecificData['impact'] = control.impact;
|
|
415
434
|
}
|
|
435
|
+
// if there is no severity tag, severity is aligned to impact
|
|
436
|
+
// this must be represented in hdfSpecificData when impact needs to
|
|
437
|
+
// map to severity none or critical
|
|
416
438
|
if (severityTag === null) {
|
|
417
439
|
if (impact < 0.1)
|
|
418
440
|
hdfSpecificData['severity'] = 'none';
|
|
419
441
|
else if (impact >= 0.9)
|
|
420
442
|
hdfSpecificData['severity'] = 'critical';
|
|
421
443
|
}
|
|
422
|
-
if (
|
|
444
|
+
if (control.code?.startsWith('control')) {
|
|
423
445
|
hdfSpecificData['code'] = control.code;
|
|
424
446
|
}
|
|
425
447
|
const hdfDataExist = Object.keys(hdfSpecificData).length !== 0;
|
|
@@ -427,12 +449,12 @@ class ChecklistJsonixConverter extends jsonix_intermediate_converter_1.JsonixInt
|
|
|
427
449
|
? JSON.stringify({ hdfSpecificData: hdfSpecificData }, null, 2)
|
|
428
450
|
: '';
|
|
429
451
|
}
|
|
452
|
+
// computes what the impact would be based on the given tags
|
|
430
453
|
computeImpact(severityTag, severityOverrideTag) {
|
|
431
|
-
var _a;
|
|
432
454
|
let computedSeverity = severityTag;
|
|
433
455
|
if (severityOverrideTag)
|
|
434
456
|
computedSeverity = severityOverrideTag;
|
|
435
|
-
computedSeverity =
|
|
457
|
+
computedSeverity = computedSeverity?.toLowerCase() ?? null;
|
|
436
458
|
if (computedSeverity)
|
|
437
459
|
return IMPACT_MAPPING.get(computedSeverity);
|
|
438
460
|
}
|
|
@@ -457,24 +479,27 @@ class ChecklistJsonixConverter extends jsonix_intermediate_converter_1.JsonixInt
|
|
|
457
479
|
return hdfDataExist ? JSON.stringify({ hdfSpecificData }) : '';
|
|
458
480
|
}
|
|
459
481
|
controlsToVulns(profile, stigRef, metadata) {
|
|
460
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
461
482
|
const vulns = [];
|
|
462
483
|
for (const control of profile.controls) {
|
|
463
484
|
const defaultId = lodash_1.default.get(control, 'id', '');
|
|
464
485
|
const vuln = {
|
|
465
486
|
status: this.getStatus(control.results, control.impact),
|
|
466
|
-
vulnNum:
|
|
487
|
+
vulnNum: metadata?.vulidmapping === 'gid'
|
|
467
488
|
? lodash_1.default.get(control.tags, 'gid', defaultId)
|
|
468
489
|
: defaultId,
|
|
469
490
|
severity: this.severityMap(control.impact, lodash_1.default.get(control.tags, 'severity', Severity.Empty)),
|
|
470
491
|
groupTitle: lodash_1.default.get(control.tags, 'gtitle', defaultId),
|
|
471
492
|
ruleId: lodash_1.default.get(control.tags, 'rid', defaultId),
|
|
472
493
|
ruleVer: lodash_1.default.get(control.tags, 'stig_id', defaultId),
|
|
473
|
-
ruleTitle:
|
|
474
|
-
vulnDiscuss:
|
|
494
|
+
ruleTitle: control.title ?? '',
|
|
495
|
+
vulnDiscuss: control.desc ?? '',
|
|
475
496
|
iaControls: lodash_1.default.get(control.tags, 'IA_Controls', ''),
|
|
476
|
-
checkContent:
|
|
477
|
-
|
|
497
|
+
checkContent: lodash_1.default.get(control.tags, 'check') ??
|
|
498
|
+
(0, global_1.getDescription)(control.descriptions, 'check') ??
|
|
499
|
+
'',
|
|
500
|
+
fixText: lodash_1.default.get(control.tags, 'fix') ??
|
|
501
|
+
(0, global_1.getDescription)(control.descriptions, 'fix') ??
|
|
502
|
+
'',
|
|
478
503
|
falsePositives: lodash_1.default.get(control.tags, 'False_Positives', ''),
|
|
479
504
|
falseNegatives: lodash_1.default.get(control.tags, 'False_Negatives', ''),
|
|
480
505
|
documentable: 'false',
|
|
@@ -485,15 +510,16 @@ class ChecklistJsonixConverter extends jsonix_intermediate_converter_1.JsonixInt
|
|
|
485
510
|
responsibility: lodash_1.default.get(control.tags, 'Responsibility', ''),
|
|
486
511
|
securityOverrideGuidance: lodash_1.default.get(control.tags, 'Security_Override_Guidance', ''),
|
|
487
512
|
checkContentRef: 'M',
|
|
488
|
-
weight: lodash_1.default.get(control.tags, 'weight', '10.0'),
|
|
513
|
+
weight: lodash_1.default.get(control.tags, 'weight', '10.0'), // default found on checklists saved from stigviewer has always been 10.0
|
|
489
514
|
class: 'Unclass',
|
|
490
515
|
stigRef,
|
|
491
516
|
targetKey: '',
|
|
492
517
|
stigUuid: '',
|
|
493
518
|
legacyId: lodash_1.default.get(control.tags, 'Legacy_ID'),
|
|
494
|
-
cciRef:
|
|
519
|
+
cciRef: lodash_1.default.get(control.tags, 'cci') ??
|
|
520
|
+
this.matchNistToCcis(lodash_1.default.get(control.tags, 'nist')),
|
|
495
521
|
comments: this.getComments(control.descriptions),
|
|
496
|
-
findingdetails:
|
|
522
|
+
findingdetails: this.getFindingDetails(control.results) ?? '',
|
|
497
523
|
severityjustification: lodash_1.default.get(control.tags, 'severityjustification', checklistJsonix_1.Severityoverride.Empty),
|
|
498
524
|
severityoverride: lodash_1.default.get(control.tags, 'severityoverride', checklistJsonix_1.Severityoverride.Empty)
|
|
499
525
|
};
|
|
@@ -515,19 +541,27 @@ class ChecklistJsonixConverter extends jsonix_intermediate_converter_1.JsonixInt
|
|
|
515
541
|
return undefined;
|
|
516
542
|
}
|
|
517
543
|
}
|
|
544
|
+
/**
|
|
545
|
+
* Converts an HDF (Heimdall Data Format) execution object to a ChecklistObject.
|
|
546
|
+
* This function assumes the HDF does not have a 'passthrough.checklist' object,
|
|
547
|
+
* and therefore would also not have checklist-specific control.tags
|
|
548
|
+
*
|
|
549
|
+
* @param hdf - The HDF execution object to convert.
|
|
550
|
+
* @returns {ChecklistObject} The converted ChecklistObject.
|
|
551
|
+
*/
|
|
518
552
|
hdfToIntermediateObject(hdf) {
|
|
519
|
-
var _a, _b;
|
|
520
553
|
const stigs = [];
|
|
521
554
|
const metadata = lodash_1.default.get(hdf, 'passthrough.metadata');
|
|
522
555
|
for (const profile of hdf.profiles) {
|
|
523
|
-
if
|
|
556
|
+
// if profile is overlay or parent profile, skip
|
|
557
|
+
if (profile.depends?.length) {
|
|
524
558
|
continue;
|
|
525
559
|
}
|
|
526
|
-
const profileMetadata = metadata
|
|
560
|
+
const profileMetadata = metadata?.profiles.find((p) => p.name === profile.name);
|
|
527
561
|
(0, checklist_metadata_utils_1.throwIfInvalidProfileMetadata)(profileMetadata);
|
|
528
562
|
const version = (0, semver_1.coerce)(profile.version);
|
|
529
563
|
const header = {
|
|
530
|
-
version: lodash_1.default.get(profileMetadata, 'version',
|
|
564
|
+
version: lodash_1.default.get(profileMetadata, 'version', version?.major ?? 0).toString(),
|
|
531
565
|
classification: 'UNCLASSIFIED',
|
|
532
566
|
customname: this.addHdfProfileSpecificData(profile),
|
|
533
567
|
stigid: profile.name,
|
|
@@ -535,8 +569,8 @@ class ChecklistJsonixConverter extends jsonix_intermediate_converter_1.JsonixInt
|
|
|
535
569
|
(profile.summary && profile.description ? '\n' : '') +
|
|
536
570
|
(profile.description || ''),
|
|
537
571
|
filename: '',
|
|
538
|
-
releaseinfo: this.getReleaseInfo(
|
|
539
|
-
title:
|
|
572
|
+
releaseinfo: this.getReleaseInfo(profileMetadata?.releasenumber || version?.minor || 0, profileMetadata?.releasedate),
|
|
573
|
+
title: profileMetadata?.title || profile.title || profile.name,
|
|
540
574
|
uuid: '',
|
|
541
575
|
notice: profile.license || '',
|
|
542
576
|
source: 'STIG.DOD.MIL'
|