@mitre/hdf-converters 2.12.6 → 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 +19 -40
- 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 +274 -237
- 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 +21 -10
- 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 +29 -7
- 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 +46 -26
- 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 +38 -4
- 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 +262 -151
- 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 +32 -15
- 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 +68 -38
- 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 +54 -28
- 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 +39 -14
- 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 +32 -10
- 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 +368 -294
- 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 +4 -0
- 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 +18 -7
- 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 +120 -117
- 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 +525 -271
- 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 +69 -12
- 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 +34 -15
- 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 -31
- 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 +19 -40
- package/lib/data/converters/csv2json.ts +0 -36
- package/lib/data/converters/xml2json.ts +0 -57
|
@@ -15,18 +15,55 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
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
|
+
})();
|
|
25
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
37
|
};
|
|
28
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.
|
|
39
|
+
exports.getRunTime = getRunTime;
|
|
40
|
+
exports.createProfileInfoFinding = createProfileInfoFinding;
|
|
41
|
+
exports.statusCount = statusCount;
|
|
42
|
+
exports.createDescription = createDescription;
|
|
43
|
+
exports.createAssumeRolePolicyDocument = createAssumeRolePolicyDocument;
|
|
44
|
+
exports.cleanText = cleanText;
|
|
45
|
+
exports.getAllLayers = getAllLayers;
|
|
46
|
+
exports.createNote = createNote;
|
|
47
|
+
exports.createCode = createCode;
|
|
48
|
+
exports.setupId = setupId;
|
|
49
|
+
exports.setupProductARN = setupProductARN;
|
|
50
|
+
exports.setupAwsAcct = setupAwsAcct;
|
|
51
|
+
exports.setupCreated = setupCreated;
|
|
52
|
+
exports.setupRegion = setupRegion;
|
|
53
|
+
exports.setupUpdated = setupUpdated;
|
|
54
|
+
exports.setupGeneratorId = setupGeneratorId;
|
|
55
|
+
exports.setupTitle = setupTitle;
|
|
56
|
+
exports.setupDescr = setupDescr;
|
|
57
|
+
exports.setupSevLabel = setupSevLabel;
|
|
58
|
+
exports.setupSevOriginal = setupSevOriginal;
|
|
59
|
+
exports.setupFindingType = setupFindingType;
|
|
60
|
+
exports.getFixForControl = getFixForControl;
|
|
61
|
+
exports.setupRemRec = setupRemRec;
|
|
62
|
+
exports.setupProdFieldCheck = setupProdFieldCheck;
|
|
63
|
+
exports.setupResourcesID = setupResourcesID;
|
|
64
|
+
exports.setupResourcesID2 = setupResourcesID2;
|
|
65
|
+
exports.setupDetailsAssume = setupDetailsAssume;
|
|
66
|
+
exports.setupControlStatus = setupControlStatus;
|
|
30
67
|
const crypto_1 = require("crypto");
|
|
31
68
|
const inspecjs_1 = require("inspecjs");
|
|
32
69
|
const _ = __importStar(require("lodash"));
|
|
@@ -50,22 +87,26 @@ function getRunTime(hdf) {
|
|
|
50
87
|
});
|
|
51
88
|
return time;
|
|
52
89
|
}
|
|
53
|
-
|
|
90
|
+
/** Trivial overlay filter that just takes the version of the control that has results from amongst all identical ids */
|
|
54
91
|
function filter_overlays(controls) {
|
|
55
92
|
const idHash = {};
|
|
56
93
|
controls.forEach((c) => {
|
|
57
94
|
const id = c.hdf.wraps.id;
|
|
58
95
|
const old = idHash[id];
|
|
96
|
+
// If old, gotta check if our new status list is "better than" old
|
|
59
97
|
if (old) {
|
|
60
98
|
const newSignificant = c.hdf.status_list && c.hdf.status_list.length > 0;
|
|
61
99
|
if (newSignificant) {
|
|
100
|
+
// Overwrite
|
|
62
101
|
idHash[id] = c;
|
|
63
102
|
}
|
|
64
103
|
}
|
|
65
104
|
else {
|
|
105
|
+
// First time seeing this id
|
|
66
106
|
idHash[id] = c;
|
|
67
107
|
}
|
|
68
108
|
});
|
|
109
|
+
// Return the set of keys
|
|
69
110
|
return Array.from(Object.values(idHash));
|
|
70
111
|
}
|
|
71
112
|
function createProfileInfoFinding(hdf, options) {
|
|
@@ -104,11 +145,12 @@ function createProfileInfoFinding(hdf, options) {
|
|
|
104
145
|
}
|
|
105
146
|
]
|
|
106
147
|
};
|
|
148
|
+
// need the intermediate caste to tell typescript that this cast is intentional
|
|
107
149
|
return profileInfo;
|
|
108
150
|
}
|
|
109
|
-
exports.createProfileInfoFinding = createProfileInfoFinding;
|
|
110
151
|
function statusCount(evaluation) {
|
|
111
152
|
let controls = [];
|
|
153
|
+
// Get all controls
|
|
112
154
|
evaluation.contains.forEach((p) => controls.push(...p.contains));
|
|
113
155
|
controls = filter_overlays(controls);
|
|
114
156
|
const statusCounts = {
|
|
@@ -139,17 +181,15 @@ function statusCount(evaluation) {
|
|
|
139
181
|
});
|
|
140
182
|
return statusCounts;
|
|
141
183
|
}
|
|
142
|
-
exports.statusCount = statusCount;
|
|
143
184
|
function createDescription(counts) {
|
|
144
185
|
return `Result Set Status Summary -- Passed: ${counts.Passed} (${counts.PassedTests} individual checks passed) --- Failed: ${counts.Failed} (${counts.PassingTestsFailedControl} individual checks failed out of ${counts.PassingTestsFailedControl + counts.FailedTests} total checks) --- Not Applicable: ${counts.NotApplicable} (System exception or absent component) --- Not Reviewed: ${counts.NotReviewed} (Can only be tested manually at this time)`;
|
|
145
186
|
}
|
|
146
|
-
exports.createDescription = createDescription;
|
|
147
187
|
function createAssumeRolePolicyDocument(layersOfControl, segment) {
|
|
148
188
|
const segmentOverview = createNote(segment);
|
|
149
189
|
const code = layersOfControl.map((layer) => createCode(layer)).join('\n\n');
|
|
150
190
|
return `${code}\n\n${segmentOverview}`;
|
|
151
191
|
}
|
|
152
|
-
|
|
192
|
+
// Gets rid of extra spacing + newlines as these aren't shown in Security Hub
|
|
153
193
|
function cleanText(text) {
|
|
154
194
|
if (text) {
|
|
155
195
|
return text.replace(/ +/g, ' ');
|
|
@@ -158,7 +198,7 @@ function cleanText(text) {
|
|
|
158
198
|
return undefined;
|
|
159
199
|
}
|
|
160
200
|
}
|
|
161
|
-
|
|
201
|
+
// Gets all layers of a control across overlaid profiles given the ID
|
|
162
202
|
function getAllLayers(hdf, knownControl) {
|
|
163
203
|
if (hdf.profiles.length === 1) {
|
|
164
204
|
return [
|
|
@@ -172,6 +212,7 @@ function getAllLayers(hdf, knownControl) {
|
|
|
172
212
|
}
|
|
173
213
|
else {
|
|
174
214
|
const foundControls = [];
|
|
215
|
+
// For each control in each profile
|
|
175
216
|
hdf.profiles.forEach((profile) => {
|
|
176
217
|
profile.controls.forEach((control) => {
|
|
177
218
|
if (control.id === knownControl.id) {
|
|
@@ -185,7 +226,7 @@ function getAllLayers(hdf, knownControl) {
|
|
|
185
226
|
return foundControls;
|
|
186
227
|
}
|
|
187
228
|
}
|
|
188
|
-
|
|
229
|
+
// Creates Note field containing control status
|
|
189
230
|
function createNote(segment) {
|
|
190
231
|
if (segment.message) {
|
|
191
232
|
return `Test Description: ${segment.code_desc} --- Test Result: ${segment.message}`;
|
|
@@ -197,7 +238,6 @@ function createNote(segment) {
|
|
|
197
238
|
return `Test Description: ${segment.code_desc}`;
|
|
198
239
|
}
|
|
199
240
|
}
|
|
200
|
-
exports.createNote = createNote;
|
|
201
241
|
function cleanObjectValues(value) {
|
|
202
242
|
if (Array.isArray(value)) {
|
|
203
243
|
return value.length < 0;
|
|
@@ -214,7 +254,6 @@ function createCode(control) {
|
|
|
214
254
|
}
|
|
215
255
|
return `=========================================================\n# Profile name: ${control.profileInfo?.name}\n=========================================================\n\n${control.code ? control.code?.replace(/\\\"/g, '"') : noCodeValue}`;
|
|
216
256
|
}
|
|
217
|
-
exports.createCode = createCode;
|
|
218
257
|
function setupId(control, context) {
|
|
219
258
|
const target = context?.ioptions.target;
|
|
220
259
|
const name = context?.data.profiles[0].name;
|
|
@@ -222,15 +261,12 @@ function setupId(control, context) {
|
|
|
222
261
|
.update(control.id + control.result.code_desc)
|
|
223
262
|
.digest('hex')}`;
|
|
224
263
|
}
|
|
225
|
-
exports.setupId = setupId;
|
|
226
264
|
function setupProductARN(_val, context) {
|
|
227
265
|
return `arn:aws:securityhub:${context?.ioptions.region}:${context?.ioptions.awsAccountId}:product/${context?.ioptions.awsAccountId}/default`;
|
|
228
266
|
}
|
|
229
|
-
exports.setupProductARN = setupProductARN;
|
|
230
267
|
function setupAwsAcct(_val, context) {
|
|
231
268
|
return context?.ioptions.awsAccountId;
|
|
232
269
|
}
|
|
233
|
-
exports.setupAwsAcct = setupAwsAcct;
|
|
234
270
|
function setupCreated(control) {
|
|
235
271
|
try {
|
|
236
272
|
return (new Date(control.result.start_time).toISOString() ||
|
|
@@ -240,27 +276,24 @@ function setupCreated(control) {
|
|
|
240
276
|
return new Date().toISOString();
|
|
241
277
|
}
|
|
242
278
|
}
|
|
243
|
-
exports.setupCreated = setupCreated;
|
|
244
279
|
function setupRegion(_val, context) {
|
|
245
280
|
return context?.ioptions.region;
|
|
246
281
|
}
|
|
247
|
-
exports.setupRegion = setupRegion;
|
|
248
282
|
function setupUpdated(_control, context) {
|
|
283
|
+
// Add one millisecond to the time by control index so the order is correct in security hub
|
|
249
284
|
const time = new Date();
|
|
250
285
|
time.setMilliseconds(time.getMilliseconds() + (context?.index || 0));
|
|
251
286
|
return time.toISOString();
|
|
252
287
|
}
|
|
253
|
-
exports.setupUpdated = setupUpdated;
|
|
254
288
|
function setupGeneratorId(control, context) {
|
|
255
289
|
return `arn:aws:securityhub:${context?.ioptions.region}:${context?.ioptions.awsAccountId}:ruleset/set/${context?.data.profiles[0].name}/rule/${control.id}`;
|
|
256
290
|
}
|
|
257
|
-
exports.setupGeneratorId = setupGeneratorId;
|
|
258
291
|
function setupTitle(control) {
|
|
259
292
|
const nistTags = control.tags.nist ? `[${control.tags.nist.join(', ')}]` : '';
|
|
260
293
|
return _.truncate(`${control.id} | ${nistTags} | ${cleanText(control.title)}`, { length: 256 });
|
|
261
294
|
}
|
|
262
|
-
exports.setupTitle = setupTitle;
|
|
263
295
|
function setupDescr(control) {
|
|
296
|
+
// Check text can either be a description or a tag
|
|
264
297
|
const checkText = (0, global_1.getDescription)(control.descriptions || [], 'check') ||
|
|
265
298
|
control.tags.check ||
|
|
266
299
|
'Check not available';
|
|
@@ -271,15 +304,12 @@ function setupDescr(control) {
|
|
|
271
304
|
}
|
|
272
305
|
return currentVal;
|
|
273
306
|
}
|
|
274
|
-
exports.setupDescr = setupDescr;
|
|
275
307
|
function setupSevLabel(control, context) {
|
|
276
308
|
return context?.impactMapping.get(control.impact) || 'INFORMATIONAL';
|
|
277
309
|
}
|
|
278
|
-
exports.setupSevLabel = setupSevLabel;
|
|
279
310
|
function setupSevOriginal(control) {
|
|
280
311
|
return `${control.impact}`;
|
|
281
312
|
}
|
|
282
|
-
exports.setupSevOriginal = setupSevOriginal;
|
|
283
313
|
function createControlMetadata(control) {
|
|
284
314
|
const types = [
|
|
285
315
|
`Control/ID/${(0, reverse_asff_mapper_1.escapeForwardSlashes)(control.id)}`,
|
|
@@ -416,57 +446,58 @@ function createDescriptionInfo(control) {
|
|
|
416
446
|
return typesArr;
|
|
417
447
|
}
|
|
418
448
|
function setupFindingType(control, context) {
|
|
449
|
+
// typesArr needs to be ordered so that attributes that are likely to be bloated and/or contain less necessary information end up at the bottom so that they don't expand and push more attributes outside of the list which is capped at 50 items
|
|
419
450
|
const typesArr = [
|
|
420
451
|
`MITRE/SAF/${package_json_1.version}-hdf2asff`,
|
|
421
452
|
`File/Input/${getFilename(context?.ioptions)}`
|
|
422
453
|
];
|
|
454
|
+
// Add control metadata to the Finding Provider Fields
|
|
423
455
|
typesArr.push(...createControlMetadata(control));
|
|
456
|
+
// Add segment/result information to Finding Provider Fields
|
|
424
457
|
typesArr.push(...createSegmentInfo(control.result));
|
|
458
|
+
// Add Tags to Finding Provider Fields
|
|
425
459
|
typesArr.push(...createTagInfo(control));
|
|
460
|
+
// nist tag, then subdescriptions, then remaining tags
|
|
426
461
|
const nistTagIndex = typesArr.findIndex((typeString) => typeString.startsWith('Tags/nist/'));
|
|
427
462
|
const tagsIndex = typesArr.findIndex((typeString) => typeString.startsWith('Tags/'));
|
|
428
463
|
if (nistTagIndex !== -1) {
|
|
429
464
|
typesArr.splice(tagsIndex, 0, typesArr.splice(nistTagIndex, 1)[0]);
|
|
430
465
|
}
|
|
431
|
-
typesArr.splice(tagsIndex === -1 ? typesArr.length : tagsIndex + 1, 0,
|
|
466
|
+
typesArr.splice(tagsIndex === -1 ? typesArr.length : tagsIndex + 1, 0,
|
|
467
|
+
// Add Descriptions to FindingProviderFields
|
|
468
|
+
...createDescriptionInfo(control));
|
|
469
|
+
// description, then code, then code_desc
|
|
432
470
|
const desc = typesArr.splice(typesArr.findIndex((typeString) => typeString.startsWith('Control/Desc/')), 1)[0];
|
|
433
471
|
const code = `Control/Code/${(0, reverse_asff_mapper_1.escapeForwardSlashes)(control.layersOfControl
|
|
434
472
|
.map((layer) => createCode(layer))
|
|
435
473
|
.join('\n\n'))}`;
|
|
436
474
|
const codeDesc = typesArr.splice(typesArr.findIndex((typeString) => typeString.startsWith('Segment/code_desc/')), 1)[0];
|
|
437
|
-
typesArr.push(..._.compact([desc, code, codeDesc]));
|
|
475
|
+
typesArr.push(..._.compact([desc, code, codeDesc])); // [][0] can return undefined so use compact to deal with them
|
|
438
476
|
return typesArr;
|
|
439
477
|
}
|
|
440
|
-
exports.setupFindingType = setupFindingType;
|
|
441
478
|
function getFixForControl(control) {
|
|
442
479
|
return ((0, global_1.getDescription)(control.descriptions || [], 'fix') ||
|
|
443
480
|
control.tags.fix ||
|
|
444
481
|
'Fix not available');
|
|
445
482
|
}
|
|
446
|
-
exports.getFixForControl = getFixForControl;
|
|
447
483
|
function setupRemRec(control) {
|
|
448
484
|
return _.truncate(cleanText(`${createNote(control.result)} --- Fix: ${getFixForControl(control)}`), { length: 512, omission: '... [SEE FULL TEXT IN AssumeRolePolicyDocument]' });
|
|
449
485
|
}
|
|
450
|
-
exports.setupRemRec = setupRemRec;
|
|
451
486
|
function setupProdFieldCheck(control) {
|
|
452
487
|
const checkText = (0, global_1.getDescription)(control.descriptions || [], 'check') ||
|
|
453
488
|
control.tags.check ||
|
|
454
489
|
'Check not available';
|
|
455
490
|
return _.truncate(checkText, { length: 2048, omission: '' });
|
|
456
491
|
}
|
|
457
|
-
exports.setupProdFieldCheck = setupProdFieldCheck;
|
|
458
492
|
function setupResourcesID(_val, context) {
|
|
459
493
|
return `AWS::::Account:${context?.ioptions.awsAccountId}`;
|
|
460
494
|
}
|
|
461
|
-
exports.setupResourcesID = setupResourcesID;
|
|
462
495
|
function setupResourcesID2(control) {
|
|
463
496
|
return `${control.id} Validation Code`;
|
|
464
497
|
}
|
|
465
|
-
exports.setupResourcesID2 = setupResourcesID2;
|
|
466
498
|
function setupDetailsAssume(control) {
|
|
467
499
|
return createAssumeRolePolicyDocument(control.layersOfControl, control.result);
|
|
468
500
|
}
|
|
469
|
-
exports.setupDetailsAssume = setupDetailsAssume;
|
|
470
501
|
function setupControlStatus(control) {
|
|
471
502
|
if (control.results.some((result) => 'backtrace' in result)) {
|
|
472
503
|
return 'NOT_AVAILABLE';
|
|
@@ -479,5 +510,4 @@ function setupControlStatus(control) {
|
|
|
479
510
|
}
|
|
480
511
|
return status;
|
|
481
512
|
}
|
|
482
|
-
exports.setupControlStatus = setupControlStatus;
|
|
483
513
|
//# sourceMappingURL=transformers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformers.js","sourceRoot":"","sources":["../../../../src/converters-from-hdf/asff/transformers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transformers.js","sourceRoot":"","sources":["../../../../src/converters-from-hdf/asff/transformers.ts"],"names":[],"mappings":"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","sourcesContent":["import {createHash} from 'crypto';\nimport {\n ContextualizedControl,\n ContextualizedEvaluation,\n contextualizeEvaluation,\n convertFile,\n ExecJSON\n} from 'inspecjs';\nimport * as _ from 'lodash';\nimport moment from 'moment';\nimport {version as HeimdallToolsVersion} from '../../../package.json';\nimport {getDescription} from '../../utils/global';\nimport {IFindingASFF, IOptions} from './asff-types';\nimport {\n escapeForwardSlashes,\n FromHdfToAsffMapper,\n SegmentedControl\n} from './reverse-asff-mapper';\n\n//FromHdfToAsff mapper transformers\ntype Counts = {\n Passed: number;\n PassedTests: number;\n Failed: number;\n FailedTests: number;\n PassingTestsFailedControl: number;\n NotApplicable: number;\n NotReviewed: number;\n};\n\nexport function getRunTime(hdf: ExecJSON.Execution): string {\n let time = new Date().toISOString();\n hdf.profiles.forEach((profile) => {\n if (\n profile.controls[0] &&\n profile.controls[0].results.length &&\n profile.controls[0].results[0].start_time\n ) {\n try {\n time = new Date(\n profile.controls[0].results[0].start_time\n ).toISOString();\n } catch {\n time = new Date().toISOString();\n }\n }\n });\n return time;\n}\n\n/** Trivial overlay filter that just takes the version of the control that has results from amongst all identical ids */\nfunction filter_overlays(\n controls: ContextualizedControl[]\n): ContextualizedControl[] {\n const idHash: {[key: string]: ContextualizedControl} = {};\n controls.forEach((c) => {\n const id = c.hdf.wraps.id;\n const old: ContextualizedControl | undefined = idHash[id];\n // If old, gotta check if our new status list is \"better than\" old\n if (old) {\n const newSignificant = c.hdf.status_list && c.hdf.status_list.length > 0;\n if (newSignificant) {\n // Overwrite\n idHash[id] = c;\n }\n } else {\n // First time seeing this id\n idHash[id] = c;\n }\n });\n\n // Return the set of keys\n return Array.from(Object.values(idHash));\n}\n\nexport function createProfileInfoFinding(\n hdf: ExecJSON.Execution,\n options: IOptions\n): IFindingASFF {\n const runTime = getRunTime(hdf);\n const inspecJSJson = convertFile(JSON.stringify(hdf));\n const contextualizedEvaluation = contextualizeEvaluation(\n inspecJSJson['1_0_ExecJson'] as any\n );\n const counts = statusCount(contextualizedEvaluation);\n const updatedAt = new Date();\n updatedAt.setMilliseconds(\n updatedAt.getMilliseconds() +\n (contextualizedEvaluation.contains[0].contains.length || 0)\n );\n const profileInfo: Record<string, unknown> = {\n SchemaVersion: '2018-10-08',\n Id: `${options.target}/${hdf.profiles[0].name}`,\n ProductArn: `arn:aws:securityhub:${options.region}:${options.awsAccountId}:product/${options.awsAccountId}/default`,\n GeneratorId: `arn:aws:securityhub:us-east-2:${options.awsAccountId}:ruleset/set/${hdf.profiles[0].name}`,\n AwsAccountId: options.awsAccountId,\n CreatedAt: runTime,\n UpdatedAt: updatedAt,\n Title: `${options.target} | ${hdf.profiles[0].name} | ${moment().format(\n 'YYYY-MM-DD hh:mm:ss [GMT]ZZ'\n )}`,\n Description: createDescription(counts),\n Severity: {\n Label: 'INFORMATIONAL'\n },\n FindingProviderFields: {\n Severity: {\n Label: 'INFORMATIONAL'\n },\n Types: createProfileInfoFindingFields(hdf, options)\n },\n Resources: [\n {\n Type: 'AwsAccount',\n Id: `AWS::::Account:${options.awsAccountId}`,\n Partition: 'aws',\n Region: options.region\n }\n ]\n };\n\n // need the intermediate caste to tell typescript that this cast is intentional\n return profileInfo as unknown as IFindingASFF;\n}\n\nexport function statusCount(evaluation: ContextualizedEvaluation): Counts {\n let controls: ContextualizedControl[] = [];\n // Get all controls\n evaluation.contains.forEach((p) => controls.push(...p.contains));\n controls = filter_overlays(controls);\n const statusCounts: Counts = {\n Passed: 0,\n PassedTests: 0,\n PassingTestsFailedControl: 0,\n Failed: 0,\n FailedTests: 0,\n NotApplicable: 0,\n NotReviewed: 0\n };\n controls.forEach((control) => {\n if (control.hdf.status === 'Passed') {\n statusCounts.Passed += 1;\n statusCounts.PassedTests += (control.hdf.segments || []).length;\n } else if (control.hdf.status === 'Failed') {\n statusCounts.PassingTestsFailedControl += (\n control.hdf.segments || []\n ).filter((s) => s.status === 'passed').length;\n statusCounts.FailedTests += (control.hdf.segments || []).filter(\n (s) => s.status === 'failed'\n ).length;\n statusCounts.Failed += 1;\n } else if (control.hdf.status === 'Not Applicable') {\n statusCounts.NotApplicable += 1;\n } else if (control.hdf.status === 'Not Reviewed') {\n statusCounts.NotReviewed += 1;\n }\n });\n return statusCounts;\n}\n\nexport function createDescription(counts: Counts): string {\n return `Result Set Status Summary -- Passed: ${counts.Passed} (${\n counts.PassedTests\n } individual checks passed) --- Failed: ${counts.Failed} (${\n counts.PassingTestsFailedControl\n } individual checks failed out of ${\n counts.PassingTestsFailedControl + counts.FailedTests\n } total checks) --- Not Applicable: ${\n counts.NotApplicable\n } (System exception or absent component) --- Not Reviewed: ${\n counts.NotReviewed\n } (Can only be tested manually at this time)`;\n}\n\nexport function createAssumeRolePolicyDocument(\n layersOfControl: ExecJSON.Control[],\n segment: ExecJSON.ControlResult\n): string {\n const segmentOverview = createNote(segment);\n const code = layersOfControl.map((layer) => createCode(layer)).join('\\n\\n');\n return `${code}\\n\\n${segmentOverview}`;\n}\n\n// Gets rid of extra spacing + newlines as these aren't shown in Security Hub\nexport function cleanText(text?: string | null): string | undefined {\n if (text) {\n return text.replace(/ +/g, ' ');\n } else {\n return undefined;\n }\n}\n\n// Gets all layers of a control across overlaid profiles given the ID\nexport function getAllLayers(\n hdf: ExecJSON.Execution,\n knownControl: ExecJSON.Control\n): (ExecJSON.Control & Record<string, unknown>)[] {\n if (hdf.profiles.length === 1) {\n return [\n {\n ...knownControl,\n profileInfo: {\n ..._.omit(hdf.profiles[0], 'controls')\n }\n }\n ];\n } else {\n const foundControls: (ExecJSON.Control & Record<string, unknown>)[] = [];\n // For each control in each profile\n hdf.profiles.forEach((profile) => {\n profile.controls.forEach((control) => {\n if (control.id === knownControl.id) {\n foundControls.push({\n ...control,\n profileInfo: {..._.omit(profile, 'controls')}\n });\n }\n });\n });\n return foundControls;\n }\n}\n\n// Creates Note field containing control status\nexport function createNote(segment: ExecJSON.ControlResult) {\n if (segment.message) {\n return `Test Description: ${segment.code_desc} --- Test Result: ${segment.message}`;\n } else if (segment.skip_message) {\n return `Test Description: ${segment.code_desc} --- Skip Message: ${segment.skip_message}`;\n } else {\n return `Test Description: ${segment.code_desc}`;\n }\n}\n\nfunction cleanObjectValues<T>(value: T): boolean {\n if (Array.isArray(value)) {\n return value.length < 0;\n }\n return !Boolean(value);\n}\n\nexport function createCode(\n control: ExecJSON.Control & {profileInfo?: Record<string, unknown>}\n) {\n const noCodeValue =\n ((_.get(control, 'profileInfo.depends') || []) as Record<string, unknown>[])\n .length > 0\n ? ''\n : JSON.stringify(\n _.omitBy(\n _.omit(control, ['results', 'profileInfo']),\n cleanObjectValues\n )\n );\n if (!control.code && noCodeValue === '') {\n return '';\n }\n return `=========================================================\\n# Profile name: ${\n control.profileInfo?.name\n }\\n=========================================================\\n\\n${\n control.code ? control.code?.replace(/\\\\\\\"/g, '\"') : noCodeValue\n }`;\n}\n\nexport function setupId(\n control: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n const target = context?.ioptions.target;\n const name = context?.data.profiles[0].name;\n\n return `${target}/${name}/${control.id}/finding/${createHash('sha256')\n .update(control.id + control.result.code_desc)\n .digest('hex')}`;\n}\n\nexport function setupProductARN(\n _val: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n return `arn:aws:securityhub:${context?.ioptions.region}:${context?.ioptions.awsAccountId}:product/${context?.ioptions.awsAccountId}/default`;\n}\n\nexport function setupAwsAcct(\n _val: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n return context?.ioptions.awsAccountId;\n}\n\nexport function setupCreated(control: SegmentedControl) {\n try {\n return (\n new Date(control.result.start_time).toISOString() ||\n new Date().toISOString()\n );\n } catch {\n return new Date().toISOString();\n }\n}\n\nexport function setupRegion(\n _val: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n return context?.ioptions.region;\n}\nexport function setupUpdated(\n _control: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n // Add one millisecond to the time by control index so the order is correct in security hub\n const time = new Date();\n time.setMilliseconds(time.getMilliseconds() + (context?.index || 0));\n return time.toISOString();\n}\n\nexport function setupGeneratorId(\n control: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n return `arn:aws:securityhub:${context?.ioptions.region}:${context?.ioptions.awsAccountId}:ruleset/set/${context?.data.profiles[0].name}/rule/${control.id}`;\n}\n\nexport function setupTitle(control: SegmentedControl) {\n const nistTags = control.tags.nist ? `[${control.tags.nist.join(', ')}]` : '';\n return _.truncate(\n `${control.id} | ${nistTags} | ${cleanText(control.title)}`,\n {length: 256}\n );\n}\n\nexport function setupDescr(control: SegmentedControl) {\n // Check text can either be a description or a tag\n const checkText: string =\n getDescription(control.descriptions || [], 'check') ||\n (control.tags.check as string) ||\n 'Check not available';\n\n const currentVal = _.truncate(\n cleanText(`${control.desc} -- Check Text: ${checkText}`),\n {length: 1024, omission: '[SEE FULL TEXT IN AssumeRolePolicyDocument]'}\n );\n\n const caveat = getDescription(control.descriptions || [], 'caveat');\n\n if (caveat) {\n return _.truncate(\n `Caveat: ${cleanText(caveat)} --- Description: ${currentVal}`,\n {length: 1024, omission: ''}\n );\n }\n return currentVal;\n}\n\nexport function setupSevLabel(\n control: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n return context?.impactMapping.get(control.impact) || 'INFORMATIONAL';\n}\n\nexport function setupSevOriginal(control: SegmentedControl) {\n return `${control.impact}`;\n}\n\nfunction createControlMetadata(control: SegmentedControl) {\n const types = [\n `Control/ID/${escapeForwardSlashes(control.id)}`,\n `Control/Impact/${control.impact}`\n ];\n if (control.title) {\n types.push(`Control/Title/${escapeForwardSlashes(control.title)}`);\n }\n if (control.desc) {\n types.push(`Control/Desc/${escapeForwardSlashes(control.desc)}`);\n }\n if (control.waiver_data && Object.keys(control.waiver_data).length > 0) {\n types.push(\n `Control/Waiver_Data/${escapeForwardSlashes(\n JSON.stringify(control.waiver_data)\n )}`\n );\n }\n if (control.attestation_data) {\n types.push(\n `Control/Attestation_Data/${escapeForwardSlashes(\n JSON.stringify(control.attestation_data)\n )}`\n );\n }\n if (control.refs && control.refs.length > 0) {\n types.push(\n `Control/Refs/${escapeForwardSlashes(JSON.stringify(control.refs))}`\n );\n }\n if (\n control.source_location &&\n Object.keys(control.source_location).length > 0\n ) {\n types.push(\n `Control/Source_Location/${escapeForwardSlashes(\n JSON.stringify(control.source_location)\n )}`\n );\n }\n return types;\n}\n\nfunction getFilename(options?: IOptions): string {\n const slashSplit =\n options?.input.split('\\\\')[options?.input.split('\\\\').length - 1];\n return slashSplit?.split('/')[slashSplit.split('/').length - 1] ?? '';\n}\n\nfunction createProfileInfoFindingFields(\n hdf: ExecJSON.Execution,\n options: IOptions\n): string[] {\n const typesArr = [\n `MITRE/SAF/${HeimdallToolsVersion}-hdf2asff`,\n `File/Input/${getFilename(options)}`\n ];\n const executionTargets = ['platform', 'statistics', 'version'];\n executionTargets.forEach((target) => {\n const value = _.get(hdf, target);\n if (_.isString(value) && value.trim()) {\n typesArr.push(\n `Execution/${escapeForwardSlashes(target)}/${escapeForwardSlashes(\n value\n )}`\n );\n } else {\n typesArr.push(\n `Execution/${escapeForwardSlashes(target)}/${escapeForwardSlashes(\n JSON.stringify(value)\n )}`\n );\n }\n });\n hdf.profiles.forEach((profile) => {\n const targets = [\n 'version',\n 'sha256',\n 'maintainer',\n 'summary',\n 'license',\n 'copyright',\n 'copyright_email',\n 'name',\n 'title',\n 'depends',\n 'supports',\n 'attributes',\n 'description',\n 'inspec_version',\n 'parent_profile',\n 'skip_message',\n 'status',\n 'status_message'\n ];\n targets.forEach((target) => {\n const value = _.get(profile, target);\n if (typeof value === 'string' && value) {\n typesArr.push(\n `${escapeForwardSlashes(profile.name)}/${escapeForwardSlashes(\n target\n )}/${escapeForwardSlashes(value)}`\n );\n } else if (typeof value === 'object') {\n typesArr.push(\n `${escapeForwardSlashes(profile.name)}/${escapeForwardSlashes(\n target\n )}/${escapeForwardSlashes(JSON.stringify(value))}`\n );\n }\n });\n });\n const passthrough = _.get(hdf, 'passthrough');\n if (_.isString(passthrough) && (passthrough as string).trim()) {\n typesArr.push(`Execution/passthrough/${escapeForwardSlashes(passthrough)}`);\n } else if (passthrough !== undefined) {\n typesArr.push(\n `Execution/passthrough/${escapeForwardSlashes(\n JSON.stringify(passthrough)\n )}`\n );\n }\n return typesArr;\n}\n\nfunction createSegmentInfo(segment: ExecJSON.ControlResult): string[] {\n const typesArr: string[] = [];\n const targets = [\n 'backtrace',\n 'exception',\n 'code_desc',\n 'message',\n 'resource',\n 'run_time',\n 'start_time',\n 'skip_message',\n 'status'\n ];\n targets.forEach((target) => {\n if (_.has(segment, target) && _.get(segment, target) !== undefined) {\n if (_.get(segment, target) === '') {\n typesArr.push(`Segment/${escapeForwardSlashes(target)}/''`);\n } else {\n typesArr.push(\n `Segment/${escapeForwardSlashes(target)}/${escapeForwardSlashes(\n _.get(segment, target)\n )}`\n );\n }\n }\n });\n return typesArr;\n}\n\nfunction createTagInfo(control: {tags: Record<string, unknown>}): string[] {\n const typesArr: string[] = [];\n for (const tag in control.tags) {\n typesArr.push(\n `Tags/${escapeForwardSlashes(tag)}/${escapeForwardSlashes(\n JSON.stringify(control.tags[tag])\n )}`\n );\n }\n return typesArr;\n}\n\nfunction createDescriptionInfo(control: ExecJSON.Control): string[] {\n const typesArr: string[] = [];\n if (Array.isArray(control.descriptions)) {\n control.descriptions?.forEach((description) => {\n if (description.data && cleanText(description.data)) {\n typesArr.push(\n `Descriptions/${escapeForwardSlashes(\n description.label\n )}/${escapeForwardSlashes(cleanText(description.data))}`\n );\n }\n });\n } else {\n Object.entries(control.descriptions || {}).forEach(([key, value]) => {\n if (value && cleanText(value as string)) {\n typesArr.push(\n `Descriptions/${escapeForwardSlashes(key)}/${escapeForwardSlashes(\n cleanText(value as string)\n )}`\n );\n }\n });\n }\n\n return typesArr;\n}\n\nexport function setupFindingType(\n control: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n // typesArr needs to be ordered so that attributes that are likely to be bloated and/or contain less necessary information end up at the bottom so that they don't expand and push more attributes outside of the list which is capped at 50 items\n const typesArr = [\n `MITRE/SAF/${HeimdallToolsVersion}-hdf2asff`,\n `File/Input/${getFilename(context?.ioptions)}`\n ];\n\n // Add control metadata to the Finding Provider Fields\n typesArr.push(...createControlMetadata(control));\n // Add segment/result information to Finding Provider Fields\n typesArr.push(...createSegmentInfo(control.result));\n // Add Tags to Finding Provider Fields\n typesArr.push(...createTagInfo(control));\n\n // nist tag, then subdescriptions, then remaining tags\n const nistTagIndex = typesArr.findIndex((typeString) =>\n typeString.startsWith('Tags/nist/')\n );\n const tagsIndex = typesArr.findIndex((typeString) =>\n typeString.startsWith('Tags/')\n );\n if (nistTagIndex !== -1) {\n typesArr.splice(tagsIndex, 0, typesArr.splice(nistTagIndex, 1)[0]);\n }\n typesArr.splice(\n tagsIndex === -1 ? typesArr.length : tagsIndex + 1,\n 0,\n // Add Descriptions to FindingProviderFields\n ...createDescriptionInfo(control)\n );\n\n // description, then code, then code_desc\n const desc = typesArr.splice(\n typesArr.findIndex((typeString) => typeString.startsWith('Control/Desc/')),\n 1\n )[0];\n const code = `Control/Code/${escapeForwardSlashes(\n control.layersOfControl\n .map(\n (layer: ExecJSON.Control & {profileInfo?: Record<string, unknown>}) =>\n createCode(layer)\n )\n .join('\\n\\n')\n )}`;\n const codeDesc = typesArr.splice(\n typesArr.findIndex((typeString) =>\n typeString.startsWith('Segment/code_desc/')\n ),\n 1\n )[0];\n typesArr.push(..._.compact([desc, code, codeDesc])); // [][0] can return undefined so use compact to deal with them\n\n return typesArr;\n}\n\nexport function getFixForControl(control: SegmentedControl) {\n return (\n getDescription(control.descriptions || [], 'fix') ||\n control.tags.fix ||\n 'Fix not available'\n );\n}\n\nexport function setupRemRec(control: SegmentedControl) {\n return _.truncate(\n cleanText(\n `${createNote(control.result)} --- Fix: ${getFixForControl(control)}`\n ),\n {length: 512, omission: '... [SEE FULL TEXT IN AssumeRolePolicyDocument]'}\n );\n}\n\nexport function setupProdFieldCheck(control: SegmentedControl) {\n const checkText: string =\n getDescription(control.descriptions || [], 'check') ||\n (control.tags.check as string) ||\n 'Check not available';\n\n return _.truncate(checkText, {length: 2048, omission: ''});\n}\n\nexport function setupResourcesID(\n _val: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n return `AWS::::Account:${context?.ioptions.awsAccountId}`;\n}\n\nexport function setupResourcesID2(control: SegmentedControl) {\n return `${control.id} Validation Code`;\n}\n\nexport function setupDetailsAssume(control: SegmentedControl) {\n return createAssumeRolePolicyDocument(\n control.layersOfControl,\n control.result\n );\n}\n\nexport function setupControlStatus(control: SegmentedControl) {\n if (control.results.some((result) => 'backtrace' in result)) {\n return 'NOT_AVAILABLE';\n }\n const status: string | boolean =\n control.result.status === 'skipped'\n ? 'WARNING'\n : control.result.status === 'passed';\n if (typeof status === 'boolean') {\n return status ? 'PASSED' : 'FAILED';\n }\n return status;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reverse-caat-mapper.d.ts","sourceRoot":"","sources":["../../../../src/converters-from-hdf/caat/reverse-caat-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EAExB,QAAQ,EACR,UAAU,EAEX,MAAM,UAAU,CAAC;AAIlB,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,SAAS,GAAG,wBAAwB,CAAC;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,qBAAqB,EAAE,CAAC;CACpC,CAAC;AAEF,KAAK,IAAI,GAAG,SAAS,GAAG;IAAC,IAAI,EAAE,wBAAwB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,CAAC;AAE3E,eAAO,MAAM,WAAW,ibAqBd,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,OAAO,CAC3B,MAAM,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CACzD,CAAC;AAEF,qBAAa,mBAAmB;IAC9B,MAAM,CAAC,QAAQ,CAAC,WAAW,SAAS;IACpC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,MAAM;IAExC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,kBAAkB,CAKxD;IAEF,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAK3C;IAEF,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAE/C;IAEF,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAWxD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IAMvC,IAAI,EAAE,IAAI,EAAE,CAAC;gBAGD,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE;IA6BzC,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAOlC,wBAAwB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAiBjD,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAItC,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAQlC,MAAM,CAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE;IAkDnE,MAAM,CACJ,cAAc,UAAQ,EACtB,OAAO,GAAE,IAAI,CAAC,cAAmD;CAkEpE"}
|
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
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
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
36
|
exports.FromHDFToCAATMapper = exports.CAATHeaders = void 0;
|
|
27
37
|
const XLSX = __importStar(require("@e965/xlsx"));
|
|
@@ -51,6 +61,23 @@ exports.CAATHeaders = [
|
|
|
51
61
|
'Impact'
|
|
52
62
|
];
|
|
53
63
|
class FromHDFToCAATMapper {
|
|
64
|
+
static MaxCellSize = 32000;
|
|
65
|
+
static MaxSheetNameLength = 31;
|
|
66
|
+
static NistCanonizationConfig = {
|
|
67
|
+
max_specifiers: 3,
|
|
68
|
+
pad_zeros: true,
|
|
69
|
+
allow_letters: false,
|
|
70
|
+
add_spaces: false
|
|
71
|
+
};
|
|
72
|
+
static FileSettings = {
|
|
73
|
+
Title: 'Compliance Assessment/Audit Tracking (CAAT) Spreadsheet',
|
|
74
|
+
Subject: 'Assessment Data',
|
|
75
|
+
Author: 'MITRE SAF',
|
|
76
|
+
CreatedDate: new Date()
|
|
77
|
+
};
|
|
78
|
+
static SheetOptions = {
|
|
79
|
+
header: exports.CAATHeaders.slice() // CAATHeaders is immutable but the type expects a mutable string
|
|
80
|
+
};
|
|
54
81
|
static formatDate(date, delimiter) {
|
|
55
82
|
return [
|
|
56
83
|
Intl.DateTimeFormat('en-US', { month: '2-digit' }),
|
|
@@ -60,11 +87,14 @@ class FromHDFToCAATMapper {
|
|
|
60
87
|
.map((formatter) => formatter.format(date))
|
|
61
88
|
.join(delimiter);
|
|
62
89
|
}
|
|
90
|
+
// ensure we're using Windows style newlines and fit within the maximum length
|
|
63
91
|
static fix(str) {
|
|
64
92
|
return (str ?? '')
|
|
65
93
|
.replace(/(\r\n|\n|\r)/gmu, '\r\n')
|
|
66
94
|
.slice(0, FromHDFToCAATMapper.MaxCellSize);
|
|
67
95
|
}
|
|
96
|
+
data;
|
|
97
|
+
// ensure input is turned into an array of contextualized evaluations with some additional metadata
|
|
68
98
|
constructor(data) {
|
|
69
99
|
if (!Array.isArray(data)) {
|
|
70
100
|
data = [data];
|
|
@@ -81,9 +111,9 @@ class FromHDFToCAATMapper {
|
|
|
81
111
|
contextualizedEvaluation = (0, global_1.ensureContextualizedEvaluation)(contextualizedEvaluation);
|
|
82
112
|
return {
|
|
83
113
|
data: contextualizedEvaluation,
|
|
84
|
-
filename: datum.filename ??
|
|
85
|
-
contextualizedEvaluation.data.profiles.at(0)?.name ??
|
|
86
|
-
'ExecJSON',
|
|
114
|
+
filename: datum.filename ?? // if provided a filename use it
|
|
115
|
+
contextualizedEvaluation.data.profiles.at(0)?.name ?? // otherwise use the name of the first profile which is typically the only profile or the wrapper or overlay profile if there are multiple
|
|
116
|
+
'ExecJSON', // otherwise set the default
|
|
87
117
|
controls: datum.controls
|
|
88
118
|
};
|
|
89
119
|
});
|
|
@@ -119,7 +149,9 @@ class FromHDFToCAATMapper {
|
|
|
119
149
|
const allRows = _.compact(hdf
|
|
120
150
|
.canonized_nist(FromHDFToCAATMapper.NistCanonizationConfig)
|
|
121
151
|
.map((formattedNistTag) => {
|
|
152
|
+
// I have not found a sample that triggers this case because the canonized_nist function seems to only return a nist tag
|
|
122
153
|
if (!formattedNistTag) {
|
|
154
|
+
// early exiting forces us to use the compact function to get rid of empty values in the array
|
|
123
155
|
return;
|
|
124
156
|
}
|
|
125
157
|
const row = {};
|
|
@@ -143,27 +175,37 @@ class FromHDFToCAATMapper {
|
|
|
143
175
|
}));
|
|
144
176
|
return allRows;
|
|
145
177
|
}
|
|
178
|
+
// returnWorkBook: true -> raw workbook class
|
|
179
|
+
// returnWorkBook: false | undefined -> binary string by default otherwise whatever is specified in the options parameter
|
|
146
180
|
toCAAT(returnWorkBook = false, options = { bookType: 'xlsx', type: 'binary' }) {
|
|
181
|
+
// Sheet names must be unique across the workbook
|
|
147
182
|
const takenSheetNames = [];
|
|
183
|
+
// Define our workbook
|
|
148
184
|
const workBook = XLSX.utils.book_new();
|
|
185
|
+
// For each contextualized evaluation
|
|
149
186
|
for (const d of this.data) {
|
|
187
|
+
// Ensure sheet name uniqueness
|
|
150
188
|
let renameCount = 2;
|
|
151
189
|
const fullName = `${d.filename ?? d.data.data.profiles.at(0)?.name ?? 'ExecJSON'}`;
|
|
152
190
|
let sheetName = fullName.substring(0, FromHDFToCAATMapper.MaxSheetNameLength);
|
|
153
191
|
while (takenSheetNames.includes(sheetName)) {
|
|
154
192
|
sheetName =
|
|
155
193
|
fullName.substring(0, FromHDFToCAATMapper.MaxSheetNameLength - 5) +
|
|
156
|
-
` (${renameCount})`;
|
|
194
|
+
` (${renameCount})`; // space for up to a 2 digit number; there's no check to stop it going past other than the workbook failing to be created, but that should be fine since the likelihood of someone having that many dupes is very slim
|
|
157
195
|
renameCount++;
|
|
158
196
|
}
|
|
159
197
|
takenSheetNames.push(sheetName);
|
|
198
|
+
// Create a new Sheet
|
|
160
199
|
workBook.SheetNames.push(sheetName);
|
|
161
200
|
workBook.Props = FromHDFToCAATMapper.FileSettings;
|
|
201
|
+
// Get the controls for the current evaluation
|
|
162
202
|
const processedControls = new Set();
|
|
163
203
|
const rows = [];
|
|
204
|
+
// Convert them into rows
|
|
164
205
|
for (const control of d.controls ??
|
|
165
206
|
d.data.contains.flatMap((profile) => profile.contains)) {
|
|
166
207
|
const root = control.root;
|
|
208
|
+
// Overlay profiles will usually share controls
|
|
167
209
|
if (processedControls.has(root.hdf.wraps.id)) {
|
|
168
210
|
continue;
|
|
169
211
|
}
|
|
@@ -171,6 +213,7 @@ class FromHDFToCAATMapper {
|
|
|
171
213
|
rows.push(...this.getRow(root, d.filename));
|
|
172
214
|
}
|
|
173
215
|
rows.sort((x, y) => x['Finding Title']?.localeCompare(y['Finding Title'] ?? '') ?? 1);
|
|
216
|
+
// Add rows to sheet
|
|
174
217
|
const workSheet = XLSX.utils.json_to_sheet(rows, FromHDFToCAATMapper.SheetOptions);
|
|
175
218
|
workBook.Sheets[sheetName] = workSheet;
|
|
176
219
|
}
|
|
@@ -181,21 +224,4 @@ class FromHDFToCAATMapper {
|
|
|
181
224
|
}
|
|
182
225
|
}
|
|
183
226
|
exports.FromHDFToCAATMapper = FromHDFToCAATMapper;
|
|
184
|
-
FromHDFToCAATMapper.MaxCellSize = 32000;
|
|
185
|
-
FromHDFToCAATMapper.MaxSheetNameLength = 31;
|
|
186
|
-
FromHDFToCAATMapper.NistCanonizationConfig = {
|
|
187
|
-
max_specifiers: 3,
|
|
188
|
-
pad_zeros: true,
|
|
189
|
-
allow_letters: false,
|
|
190
|
-
add_spaces: false
|
|
191
|
-
};
|
|
192
|
-
FromHDFToCAATMapper.FileSettings = {
|
|
193
|
-
Title: 'Compliance Assessment/Audit Tracking (CAAT) Spreadsheet',
|
|
194
|
-
Subject: 'Assessment Data',
|
|
195
|
-
Author: 'MITRE SAF',
|
|
196
|
-
CreatedDate: new Date()
|
|
197
|
-
};
|
|
198
|
-
FromHDFToCAATMapper.SheetOptions = {
|
|
199
|
-
header: exports.CAATHeaders.slice()
|
|
200
|
-
};
|
|
201
227
|
//# sourceMappingURL=reverse-caat-mapper.js.map
|