@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.
Files changed (370) hide show
  1. package/README.md +25 -24
  2. package/lib/data/converters/csv2json.d.ts +1 -0
  3. package/lib/data/converters/csv2json.d.ts.map +1 -0
  4. package/lib/data/converters/csv2json.js +1 -1
  5. package/lib/data/converters/csv2json.js.map +1 -1
  6. package/lib/data/converters/xml2json.d.ts +1 -0
  7. package/lib/data/converters/xml2json.d.ts.map +1 -0
  8. package/lib/data/converters/xml2json.js +6 -25
  9. package/lib/data/converters/xml2json.js.map +1 -1
  10. package/lib/data/reverse-html-mapper/convert-to-embedded-strings.d.ts +2 -0
  11. package/lib/data/reverse-html-mapper/convert-to-embedded-strings.d.ts.map +1 -0
  12. package/lib/data/reverse-html-mapper/convert-to-embedded-strings.js +13 -0
  13. package/lib/data/reverse-html-mapper/convert-to-embedded-strings.js.map +1 -0
  14. package/lib/index.d.ts +6 -0
  15. package/lib/index.d.ts.map +1 -0
  16. package/lib/index.js +23 -8
  17. package/lib/index.js.map +1 -1
  18. package/lib/package.json +28 -45
  19. package/lib/src/anchore-grype-mapper.d.ts +1 -0
  20. package/lib/src/anchore-grype-mapper.d.ts.map +1 -0
  21. package/lib/src/anchore-grype-mapper.js +7 -1
  22. package/lib/src/anchore-grype-mapper.js.map +1 -1
  23. package/lib/src/asff-mapper/asff-mapper.d.ts +1 -0
  24. package/lib/src/asff-mapper/asff-mapper.d.ts.map +1 -0
  25. package/lib/src/asff-mapper/asff-mapper.js +276 -242
  26. package/lib/src/asff-mapper/asff-mapper.js.map +1 -1
  27. package/lib/src/asff-mapper/case-cms-inspec.d.ts +1 -0
  28. package/lib/src/asff-mapper/case-cms-inspec.d.ts.map +1 -0
  29. package/lib/src/asff-mapper/case-cms-inspec.js +18 -9
  30. package/lib/src/asff-mapper/case-cms-inspec.js.map +1 -1
  31. package/lib/src/asff-mapper/case-firewall-manager.d.ts +1 -0
  32. package/lib/src/asff-mapper/case-firewall-manager.d.ts.map +1 -0
  33. package/lib/src/asff-mapper/case-firewall-manager.js +18 -9
  34. package/lib/src/asff-mapper/case-firewall-manager.js.map +1 -1
  35. package/lib/src/asff-mapper/case-guardduty.d.ts +1 -0
  36. package/lib/src/asff-mapper/case-guardduty.d.ts.map +1 -0
  37. package/lib/src/asff-mapper/case-guardduty.js +18 -9
  38. package/lib/src/asff-mapper/case-guardduty.js.map +1 -1
  39. package/lib/src/asff-mapper/case-inspector.d.ts +1 -0
  40. package/lib/src/asff-mapper/case-inspector.d.ts.map +1 -0
  41. package/lib/src/asff-mapper/case-inspector.js +18 -9
  42. package/lib/src/asff-mapper/case-inspector.js.map +1 -1
  43. package/lib/src/asff-mapper/case-previously-hdf.d.ts +1 -0
  44. package/lib/src/asff-mapper/case-previously-hdf.d.ts.map +1 -0
  45. package/lib/src/asff-mapper/case-previously-hdf.js +28 -15
  46. package/lib/src/asff-mapper/case-previously-hdf.js.map +1 -1
  47. package/lib/src/asff-mapper/case-prowler.d.ts +1 -0
  48. package/lib/src/asff-mapper/case-prowler.d.ts.map +1 -0
  49. package/lib/src/asff-mapper/case-prowler.js +19 -9
  50. package/lib/src/asff-mapper/case-prowler.js.map +1 -1
  51. package/lib/src/asff-mapper/case-security-hub.d.ts +1 -0
  52. package/lib/src/asff-mapper/case-security-hub.d.ts.map +1 -0
  53. package/lib/src/asff-mapper/case-security-hub.js +24 -9
  54. package/lib/src/asff-mapper/case-security-hub.js.map +1 -1
  55. package/lib/src/asff-mapper/case-trivy.d.ts +1 -0
  56. package/lib/src/asff-mapper/case-trivy.d.ts.map +1 -0
  57. package/lib/src/asff-mapper/case-trivy.js +18 -9
  58. package/lib/src/asff-mapper/case-trivy.js.map +1 -1
  59. package/lib/src/aws-config-mapper.d.ts +1 -0
  60. package/lib/src/aws-config-mapper.d.ts.map +1 -0
  61. package/lib/src/aws-config-mapper.js +38 -22
  62. package/lib/src/aws-config-mapper.js.map +1 -1
  63. package/lib/src/base-converter.d.ts +2 -1
  64. package/lib/src/base-converter.d.ts.map +1 -0
  65. package/lib/src/base-converter.js +51 -33
  66. package/lib/src/base-converter.js.map +1 -1
  67. package/lib/src/burpsuite-mapper.d.ts +7 -0
  68. package/lib/src/burpsuite-mapper.d.ts.map +1 -0
  69. package/lib/src/burpsuite-mapper.js +115 -88
  70. package/lib/src/burpsuite-mapper.js.map +1 -1
  71. package/lib/src/checkov-mapper.d.ts +67 -0
  72. package/lib/src/checkov-mapper.d.ts.map +1 -0
  73. package/lib/src/checkov-mapper.js +240 -0
  74. package/lib/src/checkov-mapper.js.map +1 -0
  75. package/lib/src/ckl-mapper/checklist-jsonix-converter.d.ts +17 -0
  76. package/lib/src/ckl-mapper/checklist-jsonix-converter.d.ts.map +1 -0
  77. package/lib/src/ckl-mapper/checklist-jsonix-converter.js +59 -25
  78. package/lib/src/ckl-mapper/checklist-jsonix-converter.js.map +1 -1
  79. package/lib/src/ckl-mapper/checklist-mapper.d.ts +35 -0
  80. package/lib/src/ckl-mapper/checklist-mapper.d.ts.map +1 -0
  81. package/lib/src/ckl-mapper/checklist-mapper.js +264 -155
  82. package/lib/src/ckl-mapper/checklist-mapper.js.map +1 -1
  83. package/lib/src/ckl-mapper/checklist-metadata-utils.d.ts +1 -0
  84. package/lib/src/ckl-mapper/checklist-metadata-utils.d.ts.map +1 -0
  85. package/lib/src/ckl-mapper/checklist-metadata-utils.js +38 -16
  86. package/lib/src/ckl-mapper/checklist-metadata-utils.js.map +1 -1
  87. package/lib/src/ckl-mapper/checklistJsonix.d.ts +6 -0
  88. package/lib/src/ckl-mapper/checklistJsonix.d.ts.map +1 -0
  89. package/lib/src/ckl-mapper/checklistJsonix.js +8 -8
  90. package/lib/src/ckl-mapper/checklistJsonix.js.map +1 -1
  91. package/lib/src/ckl-mapper/jsonixMapping.d.ts +5 -0
  92. package/lib/src/ckl-mapper/jsonixMapping.d.ts.map +1 -0
  93. package/lib/src/ckl-mapper/jsonixMapping.js +4 -0
  94. package/lib/src/ckl-mapper/jsonixMapping.js.map +1 -1
  95. package/lib/src/converters-from-hdf/asff/asff-types.d.ts +1 -0
  96. package/lib/src/converters-from-hdf/asff/asff-types.d.ts.map +1 -0
  97. package/lib/src/converters-from-hdf/asff/asff-types.js +1 -0
  98. package/lib/src/converters-from-hdf/asff/asff-types.js.map +1 -1
  99. package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.d.ts +1 -0
  100. package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.d.ts.map +1 -0
  101. package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.js +110 -84
  102. package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.js.map +1 -1
  103. package/lib/src/converters-from-hdf/asff/transformers.d.ts +1 -0
  104. package/lib/src/converters-from-hdf/asff/transformers.d.ts.map +1 -0
  105. package/lib/src/converters-from-hdf/asff/transformers.js +82 -55
  106. package/lib/src/converters-from-hdf/asff/transformers.js.map +1 -1
  107. package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.d.ts +1 -0
  108. package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.d.ts.map +1 -0
  109. package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.js +65 -38
  110. package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.js.map +1 -1
  111. package/lib/src/converters-from-hdf/html/embedded-assets.d.ts +4 -0
  112. package/lib/src/converters-from-hdf/html/embedded-assets.d.ts.map +1 -0
  113. package/lib/src/converters-from-hdf/html/embedded-assets.js +8 -0
  114. package/lib/src/converters-from-hdf/html/embedded-assets.js.map +1 -0
  115. package/lib/src/converters-from-hdf/html/html-types.d.ts +1 -0
  116. package/lib/src/converters-from-hdf/html/html-types.d.ts.map +1 -0
  117. package/lib/src/converters-from-hdf/html/html-types.js +1 -0
  118. package/lib/src/converters-from-hdf/html/html-types.js.map +1 -1
  119. package/lib/src/converters-from-hdf/html/reverse-html-mapper.d.ts +3 -2
  120. package/lib/src/converters-from-hdf/html/reverse-html-mapper.d.ts.map +1 -0
  121. package/lib/src/converters-from-hdf/html/reverse-html-mapper.js +151 -107
  122. package/lib/src/converters-from-hdf/html/reverse-html-mapper.js.map +1 -1
  123. package/lib/src/converters-from-hdf/reverse-any-base-converter.d.ts +1 -0
  124. package/lib/src/converters-from-hdf/reverse-any-base-converter.d.ts.map +1 -0
  125. package/lib/src/converters-from-hdf/reverse-any-base-converter.js +3 -0
  126. package/lib/src/converters-from-hdf/reverse-any-base-converter.js.map +1 -1
  127. package/lib/src/converters-from-hdf/reverse-base-converter.d.ts +1 -0
  128. package/lib/src/converters-from-hdf/reverse-base-converter.d.ts.map +1 -0
  129. package/lib/src/converters-from-hdf/reverse-base-converter.js +29 -9
  130. package/lib/src/converters-from-hdf/reverse-base-converter.js.map +1 -1
  131. package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.d.ts +1 -0
  132. package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.d.ts.map +1 -0
  133. package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.js +40 -16
  134. package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.js.map +1 -1
  135. package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.d.ts +1 -0
  136. package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.d.ts.map +1 -0
  137. package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.js +33 -12
  138. package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.js.map +1 -1
  139. package/lib/src/conveyor-mapper.d.ts +1 -0
  140. package/lib/src/conveyor-mapper.d.ts.map +1 -0
  141. package/lib/src/conveyor-mapper.js +85 -40
  142. package/lib/src/conveyor-mapper.js.map +1 -1
  143. package/lib/src/cyclonedx-sbom-mapper.d.ts +1 -0
  144. package/lib/src/cyclonedx-sbom-mapper.d.ts.map +1 -0
  145. package/lib/src/cyclonedx-sbom-mapper.js +377 -309
  146. package/lib/src/cyclonedx-sbom-mapper.js.map +1 -1
  147. package/lib/src/dbprotect-mapper.d.ts +1 -0
  148. package/lib/src/dbprotect-mapper.d.ts.map +1 -0
  149. package/lib/src/dbprotect-mapper.js +74 -63
  150. package/lib/src/dbprotect-mapper.js.map +1 -1
  151. package/lib/src/dependency-track-mapper.d.ts +1 -0
  152. package/lib/src/dependency-track-mapper.d.ts.map +1 -0
  153. package/lib/src/dependency-track-mapper.js +144 -130
  154. package/lib/src/dependency-track-mapper.js.map +1 -1
  155. package/lib/src/fortify-mapper.d.ts +7 -0
  156. package/lib/src/fortify-mapper.d.ts.map +1 -0
  157. package/lib/src/fortify-mapper.js +118 -92
  158. package/lib/src/fortify-mapper.js.map +1 -1
  159. package/lib/src/gosec-mapper.d.ts +1 -0
  160. package/lib/src/gosec-mapper.d.ts.map +1 -0
  161. package/lib/src/gosec-mapper.js +90 -72
  162. package/lib/src/gosec-mapper.js.map +1 -1
  163. package/lib/src/ionchannel-mapper.d.ts +1 -0
  164. package/lib/src/ionchannel-mapper.d.ts.map +1 -0
  165. package/lib/src/ionchannel-mapper.js +130 -110
  166. package/lib/src/ionchannel-mapper.js.map +1 -1
  167. package/lib/src/jfrog-xray-mapper.d.ts +1 -0
  168. package/lib/src/jfrog-xray-mapper.d.ts.map +1 -0
  169. package/lib/src/jfrog-xray-mapper.js +92 -78
  170. package/lib/src/jfrog-xray-mapper.js.map +1 -1
  171. package/lib/src/jsonix-converter.d.ts +1 -0
  172. package/lib/src/jsonix-converter.d.ts.map +1 -0
  173. package/lib/src/jsonix-converter.js +1 -0
  174. package/lib/src/jsonix-converter.js.map +1 -1
  175. package/lib/src/jsonix-intermediate-converter.d.ts +1 -0
  176. package/lib/src/jsonix-intermediate-converter.d.ts.map +1 -0
  177. package/lib/src/jsonix-intermediate-converter.js.map +1 -1
  178. package/lib/src/mappings/AwsConfigMapping.d.ts +1 -0
  179. package/lib/src/mappings/AwsConfigMapping.d.ts.map +1 -0
  180. package/lib/src/mappings/AwsConfigMapping.js +19 -9
  181. package/lib/src/mappings/AwsConfigMapping.js.map +1 -1
  182. package/lib/src/mappings/AwsConfigMappingData.d.ts +1 -0
  183. package/lib/src/mappings/AwsConfigMappingData.d.ts.map +1 -0
  184. package/lib/src/mappings/AwsConfigMappingData.js.map +1 -1
  185. package/lib/src/mappings/CciNistMapping.d.ts +1 -0
  186. package/lib/src/mappings/CciNistMapping.d.ts.map +1 -0
  187. package/lib/src/mappings/CciNistMapping.js +6 -2
  188. package/lib/src/mappings/CciNistMapping.js.map +1 -1
  189. package/lib/src/mappings/CciNistMappingData.d.ts +1 -0
  190. package/lib/src/mappings/CciNistMappingData.d.ts.map +1 -0
  191. package/lib/src/mappings/CciNistMappingData.js.map +1 -1
  192. package/lib/src/mappings/CciNistMappingItem.d.ts +1 -0
  193. package/lib/src/mappings/CciNistMappingItem.d.ts.map +1 -0
  194. package/lib/src/mappings/CciNistMappingItem.js +2 -0
  195. package/lib/src/mappings/CciNistMappingItem.js.map +1 -1
  196. package/lib/src/mappings/CheckovToCciAndNistMappingData.d.ts +5 -0
  197. package/lib/src/mappings/CheckovToCciAndNistMappingData.d.ts.map +1 -0
  198. package/lib/src/mappings/CheckovToCciAndNistMappingData.js +2695 -0
  199. package/lib/src/mappings/CheckovToCciAndNistMappingData.js.map +1 -0
  200. package/lib/src/mappings/CweNistMapping.d.ts +1 -0
  201. package/lib/src/mappings/CweNistMapping.d.ts.map +1 -0
  202. package/lib/src/mappings/CweNistMapping.js +1 -0
  203. package/lib/src/mappings/CweNistMapping.js.map +1 -1
  204. package/lib/src/mappings/CweNistMappingData.d.ts +1 -0
  205. package/lib/src/mappings/CweNistMappingData.d.ts.map +1 -0
  206. package/lib/src/mappings/CweNistMappingData.js.map +1 -1
  207. package/lib/src/mappings/CweNistMappingItem.d.ts +1 -0
  208. package/lib/src/mappings/CweNistMappingItem.d.ts.map +1 -0
  209. package/lib/src/mappings/CweNistMappingItem.js +5 -0
  210. package/lib/src/mappings/CweNistMappingItem.js.map +1 -1
  211. package/lib/src/mappings/NessusPluginNistMappingData.d.ts +1 -0
  212. package/lib/src/mappings/NessusPluginNistMappingData.d.ts.map +1 -0
  213. package/lib/src/mappings/NessusPluginNistMappingData.js.map +1 -1
  214. package/lib/src/mappings/NessusPluginsNistMapping.d.ts +1 -0
  215. package/lib/src/mappings/NessusPluginsNistMapping.d.ts.map +1 -0
  216. package/lib/src/mappings/NessusPluginsNistMapping.js +1 -0
  217. package/lib/src/mappings/NessusPluginsNistMapping.js.map +1 -1
  218. package/lib/src/mappings/NessusPluginsNistMappingItem.d.ts +1 -0
  219. package/lib/src/mappings/NessusPluginsNistMappingItem.d.ts.map +1 -0
  220. package/lib/src/mappings/NessusPluginsNistMappingItem.js +4 -0
  221. package/lib/src/mappings/NessusPluginsNistMappingItem.js.map +1 -1
  222. package/lib/src/mappings/NiktoNistMapping.d.ts +1 -0
  223. package/lib/src/mappings/NiktoNistMapping.d.ts.map +1 -0
  224. package/lib/src/mappings/NiktoNistMapping.js.map +1 -1
  225. package/lib/src/mappings/NiktoNistMappingData.d.ts +1 -0
  226. package/lib/src/mappings/NiktoNistMappingData.d.ts.map +1 -0
  227. package/lib/src/mappings/NiktoNistMappingData.js.map +1 -1
  228. package/lib/src/mappings/NiktoNistMappingItem.d.ts +1 -0
  229. package/lib/src/mappings/NiktoNistMappingItem.d.ts.map +1 -0
  230. package/lib/src/mappings/NiktoNistMappingItem.js +4 -0
  231. package/lib/src/mappings/NiktoNistMappingItem.js.map +1 -1
  232. package/lib/src/mappings/NistCciMappingData.d.ts +1 -0
  233. package/lib/src/mappings/NistCciMappingData.d.ts.map +1 -0
  234. package/lib/src/mappings/NistCciMappingData.js.map +1 -1
  235. package/lib/src/mappings/OwaspNistMapping.d.ts +1 -0
  236. package/lib/src/mappings/OwaspNistMapping.d.ts.map +1 -0
  237. package/lib/src/mappings/OwaspNistMapping.js +19 -8
  238. package/lib/src/mappings/OwaspNistMapping.js.map +1 -1
  239. package/lib/src/mappings/OwaspNistMappingData.d.ts +1 -0
  240. package/lib/src/mappings/OwaspNistMappingData.d.ts.map +1 -0
  241. package/lib/src/mappings/OwaspNistMappingData.js.map +1 -1
  242. package/lib/src/mappings/OwaspNistMappingItem.d.ts +1 -0
  243. package/lib/src/mappings/OwaspNistMappingItem.d.ts.map +1 -0
  244. package/lib/src/mappings/OwaspNistMappingItem.js +5 -0
  245. package/lib/src/mappings/OwaspNistMappingItem.js.map +1 -1
  246. package/lib/src/mappings/ScoutsuiteNistMapping.d.ts +1 -0
  247. package/lib/src/mappings/ScoutsuiteNistMapping.d.ts.map +1 -0
  248. package/lib/src/mappings/ScoutsuiteNistMapping.js +1 -0
  249. package/lib/src/mappings/ScoutsuiteNistMapping.js.map +1 -1
  250. package/lib/src/mappings/ScoutsuiteNistMappingData.d.ts +1 -0
  251. package/lib/src/mappings/ScoutsuiteNistMappingData.d.ts.map +1 -0
  252. package/lib/src/mappings/ScoutsuiteNistMappingData.js.map +1 -1
  253. package/lib/src/mappings/ScoutsuiteNistMappingItem.d.ts +1 -0
  254. package/lib/src/mappings/ScoutsuiteNistMappingItem.d.ts.map +1 -0
  255. package/lib/src/mappings/ScoutsuiteNistMappingItem.js +2 -0
  256. package/lib/src/mappings/ScoutsuiteNistMappingItem.js.map +1 -1
  257. package/lib/src/msft-secure-score-mapper.d.ts +1 -0
  258. package/lib/src/msft-secure-score-mapper.d.ts.map +1 -0
  259. package/lib/src/msft-secure-score-mapper.js +202 -185
  260. package/lib/src/msft-secure-score-mapper.js.map +1 -1
  261. package/lib/src/nessus-mapper.d.ts +2 -1
  262. package/lib/src/nessus-mapper.d.ts.map +1 -0
  263. package/lib/src/nessus-mapper.js +122 -105
  264. package/lib/src/nessus-mapper.js.map +1 -1
  265. package/lib/src/netsparker-mapper.d.ts +7 -0
  266. package/lib/src/netsparker-mapper.d.ts.map +1 -0
  267. package/lib/src/netsparker-mapper.js +34 -9
  268. package/lib/src/netsparker-mapper.js.map +1 -1
  269. package/lib/src/neuvector-mapper.d.ts +1 -0
  270. package/lib/src/neuvector-mapper.d.ts.map +1 -0
  271. package/lib/src/neuvector-mapper.js +123 -124
  272. package/lib/src/neuvector-mapper.js.map +1 -1
  273. package/lib/src/nikto-mapper.d.ts +1 -0
  274. package/lib/src/nikto-mapper.d.ts.map +1 -0
  275. package/lib/src/nikto-mapper.js +85 -74
  276. package/lib/src/nikto-mapper.js.map +1 -1
  277. package/lib/src/prisma-mapper.d.ts +1 -0
  278. package/lib/src/prisma-mapper.d.ts.map +1 -0
  279. package/lib/src/prisma-mapper.js +138 -128
  280. package/lib/src/prisma-mapper.js.map +1 -1
  281. package/lib/src/sarif-mapper.d.ts +1 -0
  282. package/lib/src/sarif-mapper.d.ts.map +1 -0
  283. package/lib/src/sarif-mapper.js +116 -105
  284. package/lib/src/sarif-mapper.js.map +1 -1
  285. package/lib/src/scoutsuite-mapper.d.ts +1 -0
  286. package/lib/src/scoutsuite-mapper.d.ts.map +1 -0
  287. package/lib/src/scoutsuite-mapper.js +174 -163
  288. package/lib/src/scoutsuite-mapper.js.map +1 -1
  289. package/lib/src/snyk-mapper.d.ts +1 -0
  290. package/lib/src/snyk-mapper.d.ts.map +1 -0
  291. package/lib/src/snyk-mapper.js +112 -100
  292. package/lib/src/snyk-mapper.js.map +1 -1
  293. package/lib/src/sonarqube-mapper.d.ts +18 -5
  294. package/lib/src/sonarqube-mapper.d.ts.map +1 -0
  295. package/lib/src/sonarqube-mapper.js +526 -278
  296. package/lib/src/sonarqube-mapper.js.map +1 -1
  297. package/lib/src/splunk-mapper.d.ts +3 -2
  298. package/lib/src/splunk-mapper.d.ts.map +1 -0
  299. package/lib/src/splunk-mapper.js +72 -16
  300. package/lib/src/splunk-mapper.js.map +1 -1
  301. package/lib/src/trufflehog-mapper.d.ts +1 -0
  302. package/lib/src/trufflehog-mapper.d.ts.map +1 -0
  303. package/lib/src/trufflehog-mapper.js +72 -69
  304. package/lib/src/trufflehog-mapper.js.map +1 -1
  305. package/lib/src/twistlock-mapper.d.ts +1 -0
  306. package/lib/src/twistlock-mapper.d.ts.map +1 -0
  307. package/lib/src/twistlock-mapper.js +140 -126
  308. package/lib/src/twistlock-mapper.js.map +1 -1
  309. package/lib/src/utils/CCI_List.d.ts +1 -0
  310. package/lib/src/utils/CCI_List.d.ts.map +1 -0
  311. package/lib/src/utils/CCI_List.js.map +1 -1
  312. package/lib/src/utils/attestations.d.ts +1 -0
  313. package/lib/src/utils/attestations.d.ts.map +1 -0
  314. package/lib/src/utils/attestations.js +28 -13
  315. package/lib/src/utils/attestations.js.map +1 -1
  316. package/lib/src/utils/compliance.d.ts +1 -0
  317. package/lib/src/utils/compliance.d.ts.map +1 -0
  318. package/lib/src/utils/compliance.js +11 -3
  319. package/lib/src/utils/compliance.js.map +1 -1
  320. package/lib/src/utils/fingerprinting.d.ts +2 -0
  321. package/lib/src/utils/fingerprinting.d.ts.map +1 -0
  322. package/lib/src/utils/fingerprinting.js +28 -11
  323. package/lib/src/utils/fingerprinting.js.map +1 -1
  324. package/lib/src/utils/global.d.ts +3 -1
  325. package/lib/src/utils/global.d.ts.map +1 -0
  326. package/lib/src/utils/global.js +35 -17
  327. package/lib/src/utils/global.js.map +1 -1
  328. package/lib/src/utils/parseJson.d.ts +1 -0
  329. package/lib/src/utils/parseJson.d.ts.map +1 -0
  330. package/lib/src/utils/parseJson.js +7 -3
  331. package/lib/src/utils/parseJson.js.map +1 -1
  332. package/lib/src/utils/result.d.ts +1 -0
  333. package/lib/src/utils/result.d.ts.map +1 -0
  334. package/lib/src/utils/result.js.map +1 -1
  335. package/lib/src/utils/splunk-tools.d.ts +2 -1
  336. package/lib/src/utils/splunk-tools.d.ts.map +1 -0
  337. package/lib/src/utils/splunk-tools.js +52 -32
  338. package/lib/src/utils/splunk-tools.js.map +1 -1
  339. package/lib/src/veracode-mapper.d.ts +1 -0
  340. package/lib/src/veracode-mapper.d.ts.map +1 -0
  341. package/lib/src/veracode-mapper.js +50 -7
  342. package/lib/src/veracode-mapper.js.map +1 -1
  343. package/lib/src/xccdf-results-mapper.d.ts +7 -0
  344. package/lib/src/xccdf-results-mapper.d.ts.map +1 -0
  345. package/lib/src/xccdf-results-mapper.js +336 -301
  346. package/lib/src/xccdf-results-mapper.js.map +1 -1
  347. package/lib/src/zap-mapper.d.ts +8 -0
  348. package/lib/src/zap-mapper.d.ts.map +1 -0
  349. package/lib/src/zap-mapper.js +119 -90
  350. package/lib/src/zap-mapper.js.map +1 -1
  351. package/lib/tsconfig.build.tsbuildinfo +1 -0
  352. package/lib/types/neuvector-types.d.ts +1 -0
  353. package/lib/types/neuvector-types.d.ts.map +1 -0
  354. package/lib/types/neuvector-types.js +80 -0
  355. package/lib/types/neuvector-types.js.map +1 -1
  356. package/lib/types/splunk-config-types.d.ts +1 -0
  357. package/lib/types/splunk-config-types.d.ts.map +1 -0
  358. package/lib/types/splunk-config-types.js.map +1 -1
  359. package/lib/types/splunk-control-types.d.ts +1 -0
  360. package/lib/types/splunk-control-types.d.ts.map +1 -0
  361. package/lib/types/splunk-control-types.js.map +1 -1
  362. package/lib/types/splunk-profile-types.d.ts +1 -0
  363. package/lib/types/splunk-profile-types.d.ts.map +1 -0
  364. package/lib/types/splunk-profile-types.js.map +1 -1
  365. package/lib/types/splunk-report-types.d.ts +1 -0
  366. package/lib/types/splunk-report-types.d.ts.map +1 -0
  367. package/lib/types/splunk-report-types.js.map +1 -1
  368. package/package.json +29 -46
  369. package/lib/data/converters/csv2json.ts +0 -36
  370. 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.updateChecklistWithMetadata = exports.EmptyChecklistObject = exports.Severity = void 0;
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 = exports.Severity || (exports.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
- exports.updateChecklistWithMetadata = updateChecklistWithMetadata;
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 = (_a = data === null || data === void 0 ? void 0 : data.toString().split(/[,|;]/)) !== null && _a !== void 0 ? _a : [];
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
- switch (severityTag === null || severityTag === void 0 ? void 0 : severityTag.toLowerCase()) {
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 ((_a = control.code) === null || _a === void 0 ? void 0 : _a.startsWith('control')) {
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 = (_a = computedSeverity === null || computedSeverity === void 0 ? void 0 : computedSeverity.toLowerCase()) !== null && _a !== void 0 ? _a : null;
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: (metadata === null || metadata === void 0 ? void 0 : metadata.vulidmapping) === 'gid'
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: (_a = control.title) !== null && _a !== void 0 ? _a : '',
474
- vulnDiscuss: (_b = control.desc) !== null && _b !== void 0 ? _b : '',
494
+ ruleTitle: control.title ?? '',
495
+ vulnDiscuss: control.desc ?? '',
475
496
  iaControls: lodash_1.default.get(control.tags, 'IA_Controls', ''),
476
- checkContent: (_d = (_c = lodash_1.default.get(control.tags, 'check')) !== null && _c !== void 0 ? _c : (0, global_1.getDescription)(control.descriptions, 'check')) !== null && _d !== void 0 ? _d : '',
477
- fixText: (_f = (_e = lodash_1.default.get(control.tags, 'fix')) !== null && _e !== void 0 ? _e : (0, global_1.getDescription)(control.descriptions, 'fix')) !== null && _f !== void 0 ? _f : '',
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: (_g = lodash_1.default.get(control.tags, 'cci')) !== null && _g !== void 0 ? _g : this.matchNistToCcis(lodash_1.default.get(control.tags, 'nist')),
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: (_h = this.getFindingDetails(control.results)) !== null && _h !== void 0 ? _h : '',
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 ((_a = profile.depends) === null || _a === void 0 ? void 0 : _a.length) {
556
+ // if profile is overlay or parent profile, skip
557
+ if (profile.depends?.length) {
524
558
  continue;
525
559
  }
526
- const profileMetadata = metadata === null || metadata === void 0 ? void 0 : metadata.profiles.find((p) => p.name === profile.name);
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', (_b = version === null || version === void 0 ? void 0 : version.major) !== null && _b !== void 0 ? _b : 0).toString(),
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((profileMetadata === null || profileMetadata === void 0 ? void 0 : profileMetadata.releasenumber) || (version === null || version === void 0 ? void 0 : version.minor) || 0, profileMetadata === null || profileMetadata === void 0 ? void 0 : profileMetadata.releasedate),
539
- title: (profileMetadata === null || profileMetadata === void 0 ? void 0 : profileMetadata.title) || profile.title || profile.name,
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'