secure-scan 1.2.2

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 (569) hide show
  1. package/README.md +564 -0
  2. package/dist/ai/aiAnalyzer.d.ts +99 -0
  3. package/dist/ai/aiAnalyzer.d.ts.map +1 -0
  4. package/dist/ai/aiAnalyzer.js +669 -0
  5. package/dist/ai/aiAnalyzer.js.map +1 -0
  6. package/dist/ai/index.d.ts +5 -0
  7. package/dist/ai/index.d.ts.map +1 -0
  8. package/dist/ai/index.js +21 -0
  9. package/dist/ai/index.js.map +1 -0
  10. package/dist/analyzers/base/baseAnalyzer.d.ts +44 -0
  11. package/dist/analyzers/base/baseAnalyzer.d.ts.map +1 -0
  12. package/dist/analyzers/base/baseAnalyzer.js +53 -0
  13. package/dist/analyzers/base/baseAnalyzer.js.map +1 -0
  14. package/dist/analyzers/base/index.d.ts +5 -0
  15. package/dist/analyzers/base/index.d.ts.map +1 -0
  16. package/dist/analyzers/base/index.js +21 -0
  17. package/dist/analyzers/base/index.js.map +1 -0
  18. package/dist/analyzers/c-cpp/cppAnalyzer.d.ts +60 -0
  19. package/dist/analyzers/c-cpp/cppAnalyzer.d.ts.map +1 -0
  20. package/dist/analyzers/c-cpp/cppAnalyzer.js +218 -0
  21. package/dist/analyzers/c-cpp/cppAnalyzer.js.map +1 -0
  22. package/dist/analyzers/c-cpp/index.d.ts +5 -0
  23. package/dist/analyzers/c-cpp/index.d.ts.map +1 -0
  24. package/dist/analyzers/c-cpp/index.js +21 -0
  25. package/dist/analyzers/c-cpp/index.js.map +1 -0
  26. package/dist/analyzers/core/engine/index.d.ts +5 -0
  27. package/dist/analyzers/core/engine/index.d.ts.map +1 -0
  28. package/dist/analyzers/core/engine/index.js +21 -0
  29. package/dist/analyzers/core/engine/index.js.map +1 -0
  30. package/dist/analyzers/core/engine/ruleEngine.d.ts +46 -0
  31. package/dist/analyzers/core/engine/ruleEngine.d.ts.map +1 -0
  32. package/dist/analyzers/core/engine/ruleEngine.js +173 -0
  33. package/dist/analyzers/core/engine/ruleEngine.js.map +1 -0
  34. package/dist/analyzers/core/index.d.ts +8 -0
  35. package/dist/analyzers/core/index.d.ts.map +1 -0
  36. package/dist/analyzers/core/index.js +24 -0
  37. package/dist/analyzers/core/index.js.map +1 -0
  38. package/dist/analyzers/core/scanner/fileScanner.d.ts +31 -0
  39. package/dist/analyzers/core/scanner/fileScanner.d.ts.map +1 -0
  40. package/dist/analyzers/core/scanner/fileScanner.js +199 -0
  41. package/dist/analyzers/core/scanner/fileScanner.js.map +1 -0
  42. package/dist/analyzers/core/scanner/index.d.ts +5 -0
  43. package/dist/analyzers/core/scanner/index.d.ts.map +1 -0
  44. package/dist/analyzers/core/scanner/index.js +21 -0
  45. package/dist/analyzers/core/scanner/index.js.map +1 -0
  46. package/dist/analyzers/core/scoring/index.d.ts +5 -0
  47. package/dist/analyzers/core/scoring/index.d.ts.map +1 -0
  48. package/dist/analyzers/core/scoring/index.js +21 -0
  49. package/dist/analyzers/core/scoring/index.js.map +1 -0
  50. package/dist/analyzers/core/scoring/riskScoring.d.ts +49 -0
  51. package/dist/analyzers/core/scoring/riskScoring.d.ts.map +1 -0
  52. package/dist/analyzers/core/scoring/riskScoring.js +180 -0
  53. package/dist/analyzers/core/scoring/riskScoring.js.map +1 -0
  54. package/dist/analyzers/core/securityScanner.d.ts +47 -0
  55. package/dist/analyzers/core/securityScanner.d.ts.map +1 -0
  56. package/dist/analyzers/core/securityScanner.js +298 -0
  57. package/dist/analyzers/core/securityScanner.js.map +1 -0
  58. package/dist/analyzers/csharp/csharpAnalyzer.d.ts +64 -0
  59. package/dist/analyzers/csharp/csharpAnalyzer.d.ts.map +1 -0
  60. package/dist/analyzers/csharp/csharpAnalyzer.js +232 -0
  61. package/dist/analyzers/csharp/csharpAnalyzer.js.map +1 -0
  62. package/dist/analyzers/csharp/index.d.ts +5 -0
  63. package/dist/analyzers/csharp/index.d.ts.map +1 -0
  64. package/dist/analyzers/csharp/index.js +21 -0
  65. package/dist/analyzers/csharp/index.js.map +1 -0
  66. package/dist/analyzers/iac/iacAnalyzer.d.ts +36 -0
  67. package/dist/analyzers/iac/iacAnalyzer.d.ts.map +1 -0
  68. package/dist/analyzers/iac/iacAnalyzer.js +182 -0
  69. package/dist/analyzers/iac/iacAnalyzer.js.map +1 -0
  70. package/dist/analyzers/iac/index.d.ts +5 -0
  71. package/dist/analyzers/iac/index.d.ts.map +1 -0
  72. package/dist/analyzers/iac/index.js +21 -0
  73. package/dist/analyzers/iac/index.js.map +1 -0
  74. package/dist/analyzers/index.d.ts +30 -0
  75. package/dist/analyzers/index.d.ts.map +1 -0
  76. package/dist/analyzers/index.js +80 -0
  77. package/dist/analyzers/index.js.map +1 -0
  78. package/dist/analyzers/java/index.d.ts +5 -0
  79. package/dist/analyzers/java/index.d.ts.map +1 -0
  80. package/dist/analyzers/java/index.js +21 -0
  81. package/dist/analyzers/java/index.js.map +1 -0
  82. package/dist/analyzers/java/javaAnalyzer.d.ts +64 -0
  83. package/dist/analyzers/java/javaAnalyzer.d.ts.map +1 -0
  84. package/dist/analyzers/java/javaAnalyzer.js +224 -0
  85. package/dist/analyzers/java/javaAnalyzer.js.map +1 -0
  86. package/dist/analyzers/javascript/astUtils.d.ts +170 -0
  87. package/dist/analyzers/javascript/astUtils.d.ts.map +1 -0
  88. package/dist/analyzers/javascript/astUtils.js +700 -0
  89. package/dist/analyzers/javascript/astUtils.js.map +1 -0
  90. package/dist/analyzers/javascript/index.d.ts +18 -0
  91. package/dist/analyzers/javascript/index.d.ts.map +1 -0
  92. package/dist/analyzers/javascript/index.js +50 -0
  93. package/dist/analyzers/javascript/index.js.map +1 -0
  94. package/dist/analyzers/javascript/javascriptAnalyzer.d.ts +111 -0
  95. package/dist/analyzers/javascript/javascriptAnalyzer.d.ts.map +1 -0
  96. package/dist/analyzers/javascript/javascriptAnalyzer.js +860 -0
  97. package/dist/analyzers/javascript/javascriptAnalyzer.js.map +1 -0
  98. package/dist/analyzers/javascript/malwareDetector.d.ts +102 -0
  99. package/dist/analyzers/javascript/malwareDetector.d.ts.map +1 -0
  100. package/dist/analyzers/javascript/malwareDetector.js +616 -0
  101. package/dist/analyzers/javascript/malwareDetector.js.map +1 -0
  102. package/dist/analyzers/javascript/packageJsonAnalyzer.d.ts +87 -0
  103. package/dist/analyzers/javascript/packageJsonAnalyzer.d.ts.map +1 -0
  104. package/dist/analyzers/javascript/packageJsonAnalyzer.js +553 -0
  105. package/dist/analyzers/javascript/packageJsonAnalyzer.js.map +1 -0
  106. package/dist/analyzers/javascript/taintAnalyzer.d.ts +120 -0
  107. package/dist/analyzers/javascript/taintAnalyzer.d.ts.map +1 -0
  108. package/dist/analyzers/javascript/taintAnalyzer.js +526 -0
  109. package/dist/analyzers/javascript/taintAnalyzer.js.map +1 -0
  110. package/dist/analyzers/php/index.d.ts +5 -0
  111. package/dist/analyzers/php/index.d.ts.map +1 -0
  112. package/dist/analyzers/php/index.js +21 -0
  113. package/dist/analyzers/php/index.js.map +1 -0
  114. package/dist/analyzers/php/phpAnalyzer.d.ts +56 -0
  115. package/dist/analyzers/php/phpAnalyzer.d.ts.map +1 -0
  116. package/dist/analyzers/php/phpAnalyzer.js +202 -0
  117. package/dist/analyzers/php/phpAnalyzer.js.map +1 -0
  118. package/dist/analyzers/python/index.d.ts +5 -0
  119. package/dist/analyzers/python/index.d.ts.map +1 -0
  120. package/dist/analyzers/python/index.js +21 -0
  121. package/dist/analyzers/python/index.js.map +1 -0
  122. package/dist/analyzers/python/pythonAnalyzer.d.ts +64 -0
  123. package/dist/analyzers/python/pythonAnalyzer.d.ts.map +1 -0
  124. package/dist/analyzers/python/pythonAnalyzer.js +226 -0
  125. package/dist/analyzers/python/pythonAnalyzer.js.map +1 -0
  126. package/dist/cli/index.d.ts +7 -0
  127. package/dist/cli/index.d.ts.map +1 -0
  128. package/dist/cli/index.js +281 -0
  129. package/dist/cli/index.js.map +1 -0
  130. package/dist/core/engine/index.d.ts +5 -0
  131. package/dist/core/engine/index.d.ts.map +1 -0
  132. package/dist/core/engine/index.js +21 -0
  133. package/dist/core/engine/index.js.map +1 -0
  134. package/dist/core/engine/ruleEngine.d.ts +46 -0
  135. package/dist/core/engine/ruleEngine.d.ts.map +1 -0
  136. package/dist/core/engine/ruleEngine.js +173 -0
  137. package/dist/core/engine/ruleEngine.js.map +1 -0
  138. package/dist/core/index.d.ts +8 -0
  139. package/dist/core/index.d.ts.map +1 -0
  140. package/dist/core/index.js +24 -0
  141. package/dist/core/index.js.map +1 -0
  142. package/dist/core/scanner/fileScanner.d.ts +31 -0
  143. package/dist/core/scanner/fileScanner.d.ts.map +1 -0
  144. package/dist/core/scanner/fileScanner.js +199 -0
  145. package/dist/core/scanner/fileScanner.js.map +1 -0
  146. package/dist/core/scanner/index.d.ts +5 -0
  147. package/dist/core/scanner/index.d.ts.map +1 -0
  148. package/dist/core/scanner/index.js +21 -0
  149. package/dist/core/scanner/index.js.map +1 -0
  150. package/dist/core/scoring/index.d.ts +5 -0
  151. package/dist/core/scoring/index.d.ts.map +1 -0
  152. package/dist/core/scoring/index.js +21 -0
  153. package/dist/core/scoring/index.js.map +1 -0
  154. package/dist/core/scoring/riskScoring.d.ts +49 -0
  155. package/dist/core/scoring/riskScoring.d.ts.map +1 -0
  156. package/dist/core/scoring/riskScoring.js +180 -0
  157. package/dist/core/scoring/riskScoring.js.map +1 -0
  158. package/dist/core/securityScanner.d.ts +47 -0
  159. package/dist/core/securityScanner.d.ts.map +1 -0
  160. package/dist/core/securityScanner.js +298 -0
  161. package/dist/core/securityScanner.js.map +1 -0
  162. package/dist/dependencies/aiDependencyAnalyzer.d.ts +96 -0
  163. package/dist/dependencies/aiDependencyAnalyzer.d.ts.map +1 -0
  164. package/dist/dependencies/aiDependencyAnalyzer.js +435 -0
  165. package/dist/dependencies/aiDependencyAnalyzer.js.map +1 -0
  166. package/dist/dependencies/database/cveDatabase.d.ts +32 -0
  167. package/dist/dependencies/database/cveDatabase.d.ts.map +1 -0
  168. package/dist/dependencies/database/cveDatabase.js +393 -0
  169. package/dist/dependencies/database/cveDatabase.js.map +1 -0
  170. package/dist/dependencies/database/index.d.ts +6 -0
  171. package/dist/dependencies/database/index.d.ts.map +1 -0
  172. package/dist/dependencies/database/index.js +22 -0
  173. package/dist/dependencies/database/index.js.map +1 -0
  174. package/dist/dependencies/database/maliciousPackages.d.ts +43 -0
  175. package/dist/dependencies/database/maliciousPackages.d.ts.map +1 -0
  176. package/dist/dependencies/database/maliciousPackages.js +279 -0
  177. package/dist/dependencies/database/maliciousPackages.js.map +1 -0
  178. package/dist/dependencies/dependencyAnalyzer.d.ts +74 -0
  179. package/dist/dependencies/dependencyAnalyzer.d.ts.map +1 -0
  180. package/dist/dependencies/dependencyAnalyzer.js +349 -0
  181. package/dist/dependencies/dependencyAnalyzer.js.map +1 -0
  182. package/dist/dependencies/detectors/index.d.ts +7 -0
  183. package/dist/dependencies/detectors/index.d.ts.map +1 -0
  184. package/dist/dependencies/detectors/index.js +28 -0
  185. package/dist/dependencies/detectors/index.js.map +1 -0
  186. package/dist/dependencies/detectors/securityStandards.d.ts +15 -0
  187. package/dist/dependencies/detectors/securityStandards.d.ts.map +1 -0
  188. package/dist/dependencies/detectors/securityStandards.js +178 -0
  189. package/dist/dependencies/detectors/securityStandards.js.map +1 -0
  190. package/dist/dependencies/detectors/vulnerabilityDetector.d.ts +53 -0
  191. package/dist/dependencies/detectors/vulnerabilityDetector.d.ts.map +1 -0
  192. package/dist/dependencies/detectors/vulnerabilityDetector.js +289 -0
  193. package/dist/dependencies/detectors/vulnerabilityDetector.js.map +1 -0
  194. package/dist/dependencies/index.d.ts +14 -0
  195. package/dist/dependencies/index.d.ts.map +1 -0
  196. package/dist/dependencies/index.js +43 -0
  197. package/dist/dependencies/index.js.map +1 -0
  198. package/dist/dependencies/installed/index.d.ts +8 -0
  199. package/dist/dependencies/installed/index.d.ts.map +1 -0
  200. package/dist/dependencies/installed/index.js +24 -0
  201. package/dist/dependencies/installed/index.js.map +1 -0
  202. package/dist/dependencies/installed/installedScanner.d.ts +91 -0
  203. package/dist/dependencies/installed/installedScanner.d.ts.map +1 -0
  204. package/dist/dependencies/installed/installedScanner.js +766 -0
  205. package/dist/dependencies/installed/installedScanner.js.map +1 -0
  206. package/dist/dependencies/installed/malwarePatterns.d.ts +32 -0
  207. package/dist/dependencies/installed/malwarePatterns.d.ts.map +1 -0
  208. package/dist/dependencies/installed/malwarePatterns.js +480 -0
  209. package/dist/dependencies/installed/malwarePatterns.js.map +1 -0
  210. package/dist/dependencies/installed/types.d.ts +274 -0
  211. package/dist/dependencies/installed/types.d.ts.map +1 -0
  212. package/dist/dependencies/installed/types.js +7 -0
  213. package/dist/dependencies/installed/types.js.map +1 -0
  214. package/dist/dependencies/parsers/base/baseParser.d.ts +44 -0
  215. package/dist/dependencies/parsers/base/baseParser.d.ts.map +1 -0
  216. package/dist/dependencies/parsers/base/baseParser.js +80 -0
  217. package/dist/dependencies/parsers/base/baseParser.js.map +1 -0
  218. package/dist/dependencies/parsers/base/index.d.ts +6 -0
  219. package/dist/dependencies/parsers/base/index.d.ts.map +1 -0
  220. package/dist/dependencies/parsers/base/index.js +27 -0
  221. package/dist/dependencies/parsers/base/index.js.map +1 -0
  222. package/dist/dependencies/parsers/cpp/cppParser.d.ts +36 -0
  223. package/dist/dependencies/parsers/cpp/cppParser.d.ts.map +1 -0
  224. package/dist/dependencies/parsers/cpp/cppParser.js +196 -0
  225. package/dist/dependencies/parsers/cpp/cppParser.js.map +1 -0
  226. package/dist/dependencies/parsers/cpp/index.d.ts +6 -0
  227. package/dist/dependencies/parsers/cpp/index.d.ts.map +1 -0
  228. package/dist/dependencies/parsers/cpp/index.js +27 -0
  229. package/dist/dependencies/parsers/cpp/index.js.map +1 -0
  230. package/dist/dependencies/parsers/csharp/csharpParser.d.ts +32 -0
  231. package/dist/dependencies/parsers/csharp/csharpParser.d.ts.map +1 -0
  232. package/dist/dependencies/parsers/csharp/csharpParser.js +125 -0
  233. package/dist/dependencies/parsers/csharp/csharpParser.js.map +1 -0
  234. package/dist/dependencies/parsers/csharp/index.d.ts +6 -0
  235. package/dist/dependencies/parsers/csharp/index.d.ts.map +1 -0
  236. package/dist/dependencies/parsers/csharp/index.js +27 -0
  237. package/dist/dependencies/parsers/csharp/index.js.map +1 -0
  238. package/dist/dependencies/parsers/index.d.ts +24 -0
  239. package/dist/dependencies/parsers/index.d.ts.map +1 -0
  240. package/dist/dependencies/parsers/index.js +69 -0
  241. package/dist/dependencies/parsers/index.js.map +1 -0
  242. package/dist/dependencies/parsers/java/index.d.ts +6 -0
  243. package/dist/dependencies/parsers/java/index.d.ts.map +1 -0
  244. package/dist/dependencies/parsers/java/index.js +27 -0
  245. package/dist/dependencies/parsers/java/index.js.map +1 -0
  246. package/dist/dependencies/parsers/java/javaParser.d.ts +32 -0
  247. package/dist/dependencies/parsers/java/javaParser.d.ts.map +1 -0
  248. package/dist/dependencies/parsers/java/javaParser.js +168 -0
  249. package/dist/dependencies/parsers/java/javaParser.js.map +1 -0
  250. package/dist/dependencies/parsers/javascript/index.d.ts +6 -0
  251. package/dist/dependencies/parsers/javascript/index.d.ts.map +1 -0
  252. package/dist/dependencies/parsers/javascript/index.js +27 -0
  253. package/dist/dependencies/parsers/javascript/index.js.map +1 -0
  254. package/dist/dependencies/parsers/javascript/javascriptParser.d.ts +55 -0
  255. package/dist/dependencies/parsers/javascript/javascriptParser.d.ts.map +1 -0
  256. package/dist/dependencies/parsers/javascript/javascriptParser.js +266 -0
  257. package/dist/dependencies/parsers/javascript/javascriptParser.js.map +1 -0
  258. package/dist/dependencies/parsers/php/index.d.ts +6 -0
  259. package/dist/dependencies/parsers/php/index.d.ts.map +1 -0
  260. package/dist/dependencies/parsers/php/index.js +27 -0
  261. package/dist/dependencies/parsers/php/index.js.map +1 -0
  262. package/dist/dependencies/parsers/php/phpParser.d.ts +35 -0
  263. package/dist/dependencies/parsers/php/phpParser.d.ts.map +1 -0
  264. package/dist/dependencies/parsers/php/phpParser.js +162 -0
  265. package/dist/dependencies/parsers/php/phpParser.js.map +1 -0
  266. package/dist/dependencies/parsers/python/index.d.ts +6 -0
  267. package/dist/dependencies/parsers/python/index.d.ts.map +1 -0
  268. package/dist/dependencies/parsers/python/index.js +27 -0
  269. package/dist/dependencies/parsers/python/index.js.map +1 -0
  270. package/dist/dependencies/parsers/python/pythonParser.d.ts +60 -0
  271. package/dist/dependencies/parsers/python/pythonParser.d.ts.map +1 -0
  272. package/dist/dependencies/parsers/python/pythonParser.js +336 -0
  273. package/dist/dependencies/parsers/python/pythonParser.js.map +1 -0
  274. package/dist/dependencies/types.d.ts +280 -0
  275. package/dist/dependencies/types.d.ts.map +1 -0
  276. package/dist/dependencies/types.js +59 -0
  277. package/dist/dependencies/types.js.map +1 -0
  278. package/dist/i18n/index.d.ts +2 -0
  279. package/dist/i18n/index.d.ts.map +1 -0
  280. package/dist/i18n/index.js +18 -0
  281. package/dist/i18n/index.js.map +1 -0
  282. package/dist/i18n/translations.d.ts +55 -0
  283. package/dist/i18n/translations.d.ts.map +1 -0
  284. package/dist/i18n/translations.js +119 -0
  285. package/dist/i18n/translations.js.map +1 -0
  286. package/dist/index.d.ts +14 -0
  287. package/dist/index.d.ts.map +1 -0
  288. package/dist/index.js +36 -0
  289. package/dist/index.js.map +1 -0
  290. package/dist/reports/dependencyReportGenerator.d.ts +20 -0
  291. package/dist/reports/dependencyReportGenerator.d.ts.map +1 -0
  292. package/dist/reports/dependencyReportGenerator.js +690 -0
  293. package/dist/reports/dependencyReportGenerator.js.map +1 -0
  294. package/dist/reports/htmlReportGenerator.d.ts +43 -0
  295. package/dist/reports/htmlReportGenerator.d.ts.map +1 -0
  296. package/dist/reports/htmlReportGenerator.js +793 -0
  297. package/dist/reports/htmlReportGenerator.js.map +1 -0
  298. package/dist/reports/index.d.ts +7 -0
  299. package/dist/reports/index.d.ts.map +1 -0
  300. package/dist/reports/index.js +23 -0
  301. package/dist/reports/index.js.map +1 -0
  302. package/dist/reports/installedDepsReportGenerator.d.ts +14 -0
  303. package/dist/reports/installedDepsReportGenerator.d.ts.map +1 -0
  304. package/dist/reports/installedDepsReportGenerator.js +872 -0
  305. package/dist/reports/installedDepsReportGenerator.js.map +1 -0
  306. package/dist/rules/index.d.ts +31 -0
  307. package/dist/rules/index.d.ts.map +1 -0
  308. package/dist/rules/index.js +95 -0
  309. package/dist/rules/index.js.map +1 -0
  310. package/dist/rules/malware/categories/backdoors.d.ts +12 -0
  311. package/dist/rules/malware/categories/backdoors.d.ts.map +1 -0
  312. package/dist/rules/malware/categories/backdoors.js +163 -0
  313. package/dist/rules/malware/categories/backdoors.js.map +1 -0
  314. package/dist/rules/malware/categories/cryptominers.d.ts +13 -0
  315. package/dist/rules/malware/categories/cryptominers.d.ts.map +1 -0
  316. package/dist/rules/malware/categories/cryptominers.js +415 -0
  317. package/dist/rules/malware/categories/cryptominers.js.map +1 -0
  318. package/dist/rules/malware/categories/exfiltration.d.ts +20 -0
  319. package/dist/rules/malware/categories/exfiltration.d.ts.map +1 -0
  320. package/dist/rules/malware/categories/exfiltration.js +658 -0
  321. package/dist/rules/malware/categories/exfiltration.js.map +1 -0
  322. package/dist/rules/malware/categories/keyloggers.d.ts +19 -0
  323. package/dist/rules/malware/categories/keyloggers.d.ts.map +1 -0
  324. package/dist/rules/malware/categories/keyloggers.js +763 -0
  325. package/dist/rules/malware/categories/keyloggers.js.map +1 -0
  326. package/dist/rules/malware/categories/loaders.d.ts +20 -0
  327. package/dist/rules/malware/categories/loaders.d.ts.map +1 -0
  328. package/dist/rules/malware/categories/loaders.js +702 -0
  329. package/dist/rules/malware/categories/loaders.js.map +1 -0
  330. package/dist/rules/malware/categories/network.d.ts +19 -0
  331. package/dist/rules/malware/categories/network.d.ts.map +1 -0
  332. package/dist/rules/malware/categories/network.js +622 -0
  333. package/dist/rules/malware/categories/network.js.map +1 -0
  334. package/dist/rules/malware/categories/obfuscation.d.ts +22 -0
  335. package/dist/rules/malware/categories/obfuscation.d.ts.map +1 -0
  336. package/dist/rules/malware/categories/obfuscation.js +766 -0
  337. package/dist/rules/malware/categories/obfuscation.js.map +1 -0
  338. package/dist/rules/malware/constants/index.d.ts +281 -0
  339. package/dist/rules/malware/constants/index.d.ts.map +1 -0
  340. package/dist/rules/malware/constants/index.js +327 -0
  341. package/dist/rules/malware/constants/index.js.map +1 -0
  342. package/dist/rules/malware/engine/index.d.ts +178 -0
  343. package/dist/rules/malware/engine/index.d.ts.map +1 -0
  344. package/dist/rules/malware/engine/index.js +552 -0
  345. package/dist/rules/malware/engine/index.js.map +1 -0
  346. package/dist/rules/malware/index.d.ts +205 -0
  347. package/dist/rules/malware/index.d.ts.map +1 -0
  348. package/dist/rules/malware/index.js +837 -0
  349. package/dist/rules/malware/index.js.map +1 -0
  350. package/dist/rules/malware/scoring/index.d.ts +84 -0
  351. package/dist/rules/malware/scoring/index.d.ts.map +1 -0
  352. package/dist/rules/malware/scoring/index.js +441 -0
  353. package/dist/rules/malware/scoring/index.js.map +1 -0
  354. package/dist/rules/malware/types/index.d.ts +616 -0
  355. package/dist/rules/malware/types/index.d.ts.map +1 -0
  356. package/dist/rules/malware/types/index.js +155 -0
  357. package/dist/rules/malware/types/index.js.map +1 -0
  358. package/dist/rules/malware/utils/index.d.ts +117 -0
  359. package/dist/rules/malware/utils/index.d.ts.map +1 -0
  360. package/dist/rules/malware/utils/index.js +514 -0
  361. package/dist/rules/malware/utils/index.js.map +1 -0
  362. package/dist/rules/standards.d.ts +26 -0
  363. package/dist/rules/standards.d.ts.map +1 -0
  364. package/dist/rules/standards.js +352 -0
  365. package/dist/rules/standards.js.map +1 -0
  366. package/dist/rules/vulnerabilities/constants/index.d.ts +835 -0
  367. package/dist/rules/vulnerabilities/constants/index.d.ts.map +1 -0
  368. package/dist/rules/vulnerabilities/constants/index.js +544 -0
  369. package/dist/rules/vulnerabilities/constants/index.js.map +1 -0
  370. package/dist/rules/vulnerabilities/engine/index.d.ts +145 -0
  371. package/dist/rules/vulnerabilities/engine/index.d.ts.map +1 -0
  372. package/dist/rules/vulnerabilities/engine/index.js +581 -0
  373. package/dist/rules/vulnerabilities/engine/index.js.map +1 -0
  374. package/dist/rules/vulnerabilities/index.d.ts +148 -0
  375. package/dist/rules/vulnerabilities/index.d.ts.map +1 -0
  376. package/dist/rules/vulnerabilities/index.js +252 -0
  377. package/dist/rules/vulnerabilities/index.js.map +1 -0
  378. package/dist/rules/vulnerabilities/rules/authentication.d.ts +8 -0
  379. package/dist/rules/vulnerabilities/rules/authentication.d.ts.map +1 -0
  380. package/dist/rules/vulnerabilities/rules/authentication.js +419 -0
  381. package/dist/rules/vulnerabilities/rules/authentication.js.map +1 -0
  382. package/dist/rules/vulnerabilities/rules/commandInjection.d.ts +8 -0
  383. package/dist/rules/vulnerabilities/rules/commandInjection.d.ts.map +1 -0
  384. package/dist/rules/vulnerabilities/rules/commandInjection.js +300 -0
  385. package/dist/rules/vulnerabilities/rules/commandInjection.js.map +1 -0
  386. package/dist/rules/vulnerabilities/rules/csrf.d.ts +8 -0
  387. package/dist/rules/vulnerabilities/rules/csrf.d.ts.map +1 -0
  388. package/dist/rules/vulnerabilities/rules/csrf.js +261 -0
  389. package/dist/rules/vulnerabilities/rules/csrf.js.map +1 -0
  390. package/dist/rules/vulnerabilities/rules/deserialization.d.ts +8 -0
  391. package/dist/rules/vulnerabilities/rules/deserialization.d.ts.map +1 -0
  392. package/dist/rules/vulnerabilities/rules/deserialization.js +336 -0
  393. package/dist/rules/vulnerabilities/rules/deserialization.js.map +1 -0
  394. package/dist/rules/vulnerabilities/rules/fileUpload.d.ts +8 -0
  395. package/dist/rules/vulnerabilities/rules/fileUpload.d.ts.map +1 -0
  396. package/dist/rules/vulnerabilities/rules/fileUpload.js +325 -0
  397. package/dist/rules/vulnerabilities/rules/fileUpload.js.map +1 -0
  398. package/dist/rules/vulnerabilities/rules/hardcodedSecrets.d.ts +8 -0
  399. package/dist/rules/vulnerabilities/rules/hardcodedSecrets.d.ts.map +1 -0
  400. package/dist/rules/vulnerabilities/rules/hardcodedSecrets.js +446 -0
  401. package/dist/rules/vulnerabilities/rules/hardcodedSecrets.js.map +1 -0
  402. package/dist/rules/vulnerabilities/rules/index.d.ts +17 -0
  403. package/dist/rules/vulnerabilities/rules/index.d.ts.map +1 -0
  404. package/dist/rules/vulnerabilities/rules/index.js +47 -0
  405. package/dist/rules/vulnerabilities/rules/index.js.map +1 -0
  406. package/dist/rules/vulnerabilities/rules/pathTraversal.d.ts +8 -0
  407. package/dist/rules/vulnerabilities/rules/pathTraversal.d.ts.map +1 -0
  408. package/dist/rules/vulnerabilities/rules/pathTraversal.js +351 -0
  409. package/dist/rules/vulnerabilities/rules/pathTraversal.js.map +1 -0
  410. package/dist/rules/vulnerabilities/rules/prototypePollution.d.ts +8 -0
  411. package/dist/rules/vulnerabilities/rules/prototypePollution.d.ts.map +1 -0
  412. package/dist/rules/vulnerabilities/rules/prototypePollution.js +272 -0
  413. package/dist/rules/vulnerabilities/rules/prototypePollution.js.map +1 -0
  414. package/dist/rules/vulnerabilities/rules/securityMisconfiguration.d.ts +8 -0
  415. package/dist/rules/vulnerabilities/rules/securityMisconfiguration.d.ts.map +1 -0
  416. package/dist/rules/vulnerabilities/rules/securityMisconfiguration.js +438 -0
  417. package/dist/rules/vulnerabilities/rules/securityMisconfiguration.js.map +1 -0
  418. package/dist/rules/vulnerabilities/rules/sqlInjection.d.ts +12 -0
  419. package/dist/rules/vulnerabilities/rules/sqlInjection.d.ts.map +1 -0
  420. package/dist/rules/vulnerabilities/rules/sqlInjection.js +636 -0
  421. package/dist/rules/vulnerabilities/rules/sqlInjection.js.map +1 -0
  422. package/dist/rules/vulnerabilities/rules/ssrf.d.ts +8 -0
  423. package/dist/rules/vulnerabilities/rules/ssrf.d.ts.map +1 -0
  424. package/dist/rules/vulnerabilities/rules/ssrf.js +401 -0
  425. package/dist/rules/vulnerabilities/rules/ssrf.js.map +1 -0
  426. package/dist/rules/vulnerabilities/rules/xss.d.ts +11 -0
  427. package/dist/rules/vulnerabilities/rules/xss.d.ts.map +1 -0
  428. package/dist/rules/vulnerabilities/rules/xss.js +724 -0
  429. package/dist/rules/vulnerabilities/rules/xss.js.map +1 -0
  430. package/dist/rules/vulnerabilities/scoring/index.d.ts +80 -0
  431. package/dist/rules/vulnerabilities/scoring/index.d.ts.map +1 -0
  432. package/dist/rules/vulnerabilities/scoring/index.js +414 -0
  433. package/dist/rules/vulnerabilities/scoring/index.js.map +1 -0
  434. package/dist/rules/vulnerabilities/types/index.d.ts +830 -0
  435. package/dist/rules/vulnerabilities/types/index.d.ts.map +1 -0
  436. package/dist/rules/vulnerabilities/types/index.js +164 -0
  437. package/dist/rules/vulnerabilities/types/index.js.map +1 -0
  438. package/dist/rules/vulnerabilities/utils/index.d.ts +206 -0
  439. package/dist/rules/vulnerabilities/utils/index.d.ts.map +1 -0
  440. package/dist/rules/vulnerabilities/utils/index.js +615 -0
  441. package/dist/rules/vulnerabilities/utils/index.js.map +1 -0
  442. package/dist/types/index.d.ts +359 -0
  443. package/dist/types/index.d.ts.map +1 -0
  444. package/dist/types/index.js +61 -0
  445. package/dist/types/index.js.map +1 -0
  446. package/dist/utils/index.d.ts +82 -0
  447. package/dist/utils/index.d.ts.map +1 -0
  448. package/dist/utils/index.js +326 -0
  449. package/dist/utils/index.js.map +1 -0
  450. package/dist/utils/logger.d.ts +40 -0
  451. package/dist/utils/logger.d.ts.map +1 -0
  452. package/dist/utils/logger.js +139 -0
  453. package/dist/utils/logger.js.map +1 -0
  454. package/docs/ARCHITECTURE.md +320 -0
  455. package/docs/V1.2.1-IA_Performances.md +116 -0
  456. package/docs/images/WIN_Defender.png +0 -0
  457. package/package.json +68 -0
  458. package/secure-scan.config.json +134 -0
  459. package/secure-scan.sln +29 -0
  460. package/src/ai/aiAnalyzer.ts +714 -0
  461. package/src/ai/index.ts +5 -0
  462. package/src/analyzers/base/baseAnalyzer.ts +66 -0
  463. package/src/analyzers/base/index.ts +5 -0
  464. package/src/analyzers/c-cpp/cppAnalyzer.ts +308 -0
  465. package/src/analyzers/c-cpp/index.ts +5 -0
  466. package/src/analyzers/core/engine/index.ts +5 -0
  467. package/src/analyzers/core/engine/ruleEngine.ts +221 -0
  468. package/src/analyzers/core/index.ts +8 -0
  469. package/src/analyzers/core/scanner/fileScanner.ts +204 -0
  470. package/src/analyzers/core/scanner/index.ts +5 -0
  471. package/src/analyzers/core/scoring/index.ts +5 -0
  472. package/src/analyzers/core/scoring/riskScoring.ts +198 -0
  473. package/src/analyzers/core/securityScanner.ts +321 -0
  474. package/src/analyzers/csharp/csharpAnalyzer.ts +328 -0
  475. package/src/analyzers/csharp/index.ts +5 -0
  476. package/src/analyzers/iac/iacAnalyzer.ts +318 -0
  477. package/src/analyzers/iac/index.ts +5 -0
  478. package/src/analyzers/index.ts +67 -0
  479. package/src/analyzers/java/index.ts +5 -0
  480. package/src/analyzers/java/javaAnalyzer.ts +320 -0
  481. package/src/analyzers/javascript/PROMPT_JS_ANALYZER.md +267 -0
  482. package/src/analyzers/javascript/astUtils.ts +789 -0
  483. package/src/analyzers/javascript/index.ts +50 -0
  484. package/src/analyzers/javascript/javascriptAnalyzer.ts +984 -0
  485. package/src/analyzers/javascript/malwareDetector.ts +697 -0
  486. package/src/analyzers/javascript/packageJsonAnalyzer.ts +626 -0
  487. package/src/analyzers/javascript/taintAnalyzer.ts +630 -0
  488. package/src/analyzers/php/index.ts +5 -0
  489. package/src/analyzers/php/phpAnalyzer.ts +280 -0
  490. package/src/analyzers/python/index.ts +5 -0
  491. package/src/analyzers/python/pythonAnalyzer.ts +319 -0
  492. package/src/cli/index.ts +276 -0
  493. package/src/dependencies/aiDependencyAnalyzer.ts +496 -0
  494. package/src/dependencies/database/cveDatabase.ts +426 -0
  495. package/src/dependencies/database/index.ts +6 -0
  496. package/src/dependencies/database/maliciousPackages.ts +286 -0
  497. package/src/dependencies/dependencyAnalyzer.ts +394 -0
  498. package/src/dependencies/detectors/index.ts +7 -0
  499. package/src/dependencies/detectors/securityStandards.ts +200 -0
  500. package/src/dependencies/detectors/vulnerabilityDetector.ts +343 -0
  501. package/src/dependencies/index.ts +27 -0
  502. package/src/dependencies/installed/index.ts +8 -0
  503. package/src/dependencies/installed/installedScanner.ts +821 -0
  504. package/src/dependencies/installed/malwarePatterns.ts +492 -0
  505. package/src/dependencies/installed/types.ts +287 -0
  506. package/src/dependencies/parsers/base/baseParser.ts +108 -0
  507. package/src/dependencies/parsers/base/index.ts +6 -0
  508. package/src/dependencies/parsers/cpp/cppParser.ts +245 -0
  509. package/src/dependencies/parsers/cpp/index.ts +6 -0
  510. package/src/dependencies/parsers/csharp/csharpParser.ts +151 -0
  511. package/src/dependencies/parsers/csharp/index.ts +6 -0
  512. package/src/dependencies/parsers/index.ts +56 -0
  513. package/src/dependencies/parsers/java/index.ts +6 -0
  514. package/src/dependencies/parsers/java/javaParser.ts +203 -0
  515. package/src/dependencies/parsers/javascript/index.ts +6 -0
  516. package/src/dependencies/parsers/javascript/javascriptParser.ts +362 -0
  517. package/src/dependencies/parsers/php/index.ts +6 -0
  518. package/src/dependencies/parsers/php/phpParser.ts +208 -0
  519. package/src/dependencies/parsers/python/index.ts +6 -0
  520. package/src/dependencies/parsers/python/pythonParser.ts +437 -0
  521. package/src/dependencies/types.ts +330 -0
  522. package/src/i18n/index.ts +1 -0
  523. package/src/i18n/translations.ts +194 -0
  524. package/src/index.ts +16 -0
  525. package/src/reports/dependencyReportGenerator.ts +717 -0
  526. package/src/reports/htmlReportGenerator.ts +781 -0
  527. package/src/reports/index.ts +7 -0
  528. package/src/reports/installedDepsReportGenerator.ts +899 -0
  529. package/src/rules/index.ts +58 -0
  530. package/src/rules/malware/INFO.md +287 -0
  531. package/src/rules/malware/categories/backdoors.ts +174 -0
  532. package/src/rules/malware/categories/cryptominers.ts +434 -0
  533. package/src/rules/malware/categories/exfiltration.ts +677 -0
  534. package/src/rules/malware/categories/keyloggers.ts +780 -0
  535. package/src/rules/malware/categories/loaders.ts +721 -0
  536. package/src/rules/malware/categories/network.ts +639 -0
  537. package/src/rules/malware/categories/obfuscation.ts +788 -0
  538. package/src/rules/malware/constants/index.ts +358 -0
  539. package/src/rules/malware/engine/index.ts +758 -0
  540. package/src/rules/malware/index.ts +928 -0
  541. package/src/rules/malware/scoring/index.ts +549 -0
  542. package/src/rules/malware/types/index.ts +752 -0
  543. package/src/rules/malware/utils/index.ts +643 -0
  544. package/src/rules/standards.ts +372 -0
  545. package/src/rules/vulnerabilities/PROMPT_VULNERABILITIES.md +226 -0
  546. package/src/rules/vulnerabilities/constants/index.ts +625 -0
  547. package/src/rules/vulnerabilities/engine/index.ts +831 -0
  548. package/src/rules/vulnerabilities/index.ts +312 -0
  549. package/src/rules/vulnerabilities/rules/authentication.ts +426 -0
  550. package/src/rules/vulnerabilities/rules/commandInjection.ts +307 -0
  551. package/src/rules/vulnerabilities/rules/csrf.ts +268 -0
  552. package/src/rules/vulnerabilities/rules/deserialization.ts +343 -0
  553. package/src/rules/vulnerabilities/rules/fileUpload.ts +332 -0
  554. package/src/rules/vulnerabilities/rules/hardcodedSecrets.ts +453 -0
  555. package/src/rules/vulnerabilities/rules/index.ts +17 -0
  556. package/src/rules/vulnerabilities/rules/pathTraversal.ts +358 -0
  557. package/src/rules/vulnerabilities/rules/prototypePollution.ts +279 -0
  558. package/src/rules/vulnerabilities/rules/securityMisconfiguration.ts +445 -0
  559. package/src/rules/vulnerabilities/rules/sqlInjection.ts +669 -0
  560. package/src/rules/vulnerabilities/rules/ssrf.ts +408 -0
  561. package/src/rules/vulnerabilities/rules/xss.ts +753 -0
  562. package/src/rules/vulnerabilities/scoring/index.ts +543 -0
  563. package/src/rules/vulnerabilities/types/index.ts +1004 -0
  564. package/src/rules/vulnerabilities/utils/index.ts +709 -0
  565. package/src/types/index.ts +391 -0
  566. package/src/utils/index.ts +306 -0
  567. package/src/utils/logger.ts +150 -0
  568. package/test-installed-scanner.ts +136 -0
  569. package/tsconfig.json +30 -0
@@ -0,0 +1,697 @@
1
+ /**
2
+ * Malware Detection Module for JavaScript/TypeScript
3
+ * Detects various types of malicious code patterns
4
+ *
5
+ * Inspired by YARA rules and malware analysis techniques
6
+ */
7
+
8
+ import { Severity, ThreatType, FindingCategory, SecurityStandard } from '../../types';
9
+ import { getStandardsForThreat } from '../../rules/standards';
10
+ import { calculateEntropy, isBase64Like, isHexEncoded } from '../../utils';
11
+
12
+ /**
13
+ * Malware detection result
14
+ */
15
+ export interface MalwareMatch {
16
+ /** Type of malware detected */
17
+ type: MalwareType;
18
+ /** Name of the detection */
19
+ name: string;
20
+ /** Description of the threat */
21
+ description: string;
22
+ /** Severity level */
23
+ severity: Severity;
24
+ /** Line number */
25
+ line: number;
26
+ /** Matched code snippet */
27
+ code: string;
28
+ /** Detection confidence 0-100 */
29
+ confidence: number;
30
+ /** Indicators of compromise */
31
+ indicators: string[];
32
+ /** MITRE ATT&CK references */
33
+ mitreAttack?: string[];
34
+ /** Remediation advice */
35
+ remediation: string;
36
+ }
37
+
38
+ /**
39
+ * Types of malware
40
+ */
41
+ export enum MalwareType {
42
+ // Data Theft
43
+ STEALER = 'stealer',
44
+ KEYLOGGER = 'keylogger',
45
+ CREDENTIAL_HARVESTER = 'credential_harvester',
46
+ // Cryptocurrency
47
+ CRYPTOMINER = 'cryptominer',
48
+ CRYPTO_WALLET_STEALER = 'crypto_wallet_stealer',
49
+ // Remote Access
50
+ BACKDOOR = 'backdoor',
51
+ REVERSE_SHELL = 'reverse_shell',
52
+ C2_COMMUNICATION = 'c2_communication',
53
+ // Loaders
54
+ DROPPER = 'dropper',
55
+ LOADER = 'loader',
56
+ // Obfuscation
57
+ OBFUSCATED_PAYLOAD = 'obfuscated_payload',
58
+ ENCODED_PAYLOAD = 'encoded_payload',
59
+ // Supply Chain
60
+ TYPOSQUAT = 'typosquat',
61
+ DEPENDENCY_CONFUSION = 'dependency_confusion',
62
+ POSTINSTALL_MALWARE = 'postinstall_malware',
63
+ // Evasion
64
+ ANTI_DEBUGGING = 'anti_debugging',
65
+ VM_DETECTION = 'vm_detection',
66
+ SANDBOX_EVASION = 'sandbox_evasion',
67
+ // Persistence
68
+ PERSISTENCE = 'persistence',
69
+ // Generic
70
+ SUSPICIOUS_BEHAVIOR = 'suspicious_behavior'
71
+ }
72
+
73
+ /**
74
+ * Malware detection pattern
75
+ */
76
+ interface MalwarePattern {
77
+ /** Pattern name */
78
+ name: string;
79
+ /** Pattern type */
80
+ type: MalwareType;
81
+ /** Regex pattern */
82
+ pattern: RegExp;
83
+ /** Description */
84
+ description: string;
85
+ /** Severity */
86
+ severity: Severity;
87
+ /** Confidence base */
88
+ confidence: number;
89
+ /** Indicators to extract */
90
+ indicators?: (match: RegExpMatchArray) => string[];
91
+ /** MITRE ATT&CK references */
92
+ mitre?: string[];
93
+ /** Remediation */
94
+ remediation: string;
95
+ }
96
+
97
+ /**
98
+ * Malware detection patterns organized by category
99
+ */
100
+ const MALWARE_PATTERNS: MalwarePattern[] = [
101
+ // ============ DATA STEALERS ============
102
+ {
103
+ name: 'Cookie Stealer',
104
+ type: MalwareType.STEALER,
105
+ pattern: /document\.cookie[\s\S]{0,100}(?:fetch|XMLHttpRequest|sendBeacon|axios|http)/gi,
106
+ description: 'Code that reads cookies and sends them to a remote server',
107
+ severity: Severity.CRITICAL,
108
+ confidence: 85,
109
+ mitre: ['T1539', 'T1041'],
110
+ remediation: 'Remove the malicious code. Investigate how it was introduced.'
111
+ },
112
+ {
113
+ name: 'LocalStorage Exfiltration',
114
+ type: MalwareType.STEALER,
115
+ pattern: /localStorage(?:\.getItem|\[)[\s\S]{0,200}(?:fetch|XMLHttpRequest|sendBeacon|axios)/gi,
116
+ description: 'Reads localStorage data and sends it externally',
117
+ severity: Severity.HIGH,
118
+ confidence: 80,
119
+ mitre: ['T1005', 'T1041'],
120
+ remediation: 'Remove the exfiltration code and audit stored data.'
121
+ },
122
+ {
123
+ name: 'Credentials Harvester',
124
+ type: MalwareType.CREDENTIAL_HARVESTER,
125
+ pattern: /(?:password|passwd|pwd|credentials?|auth|token|secret|api[_-]?key)[\s\S]{0,50}(?:\.value|\.val\(\)|\.text)[\s\S]{0,100}(?:fetch|XMLHttp|send|post)/gi,
126
+ description: 'Harvests credential input fields and sends them',
127
+ severity: Severity.CRITICAL,
128
+ confidence: 75,
129
+ mitre: ['T1056', 'T1041'],
130
+ remediation: 'Remove harvesting code and rotate all affected credentials.'
131
+ },
132
+ {
133
+ name: 'Environment Variable Stealer',
134
+ type: MalwareType.STEALER,
135
+ pattern: /process\.env[\s\S]{0,200}(?:fetch|http\.request|axios|child_process)/gi,
136
+ description: 'Reads environment variables and exfiltrates them',
137
+ severity: Severity.CRITICAL,
138
+ confidence: 80,
139
+ mitre: ['T1552.001', 'T1041'],
140
+ remediation: 'Remove the code and rotate all environment secrets.'
141
+ },
142
+ {
143
+ name: 'SSH Key Stealer',
144
+ type: MalwareType.STEALER,
145
+ pattern: /(?:\.ssh|id_rsa|id_ed25519|known_hosts|authorized_keys)[\s\S]{0,100}(?:readFile|fs\.|createReadStream)/gi,
146
+ description: 'Attempts to read SSH keys',
147
+ severity: Severity.CRITICAL,
148
+ confidence: 85,
149
+ mitre: ['T1552.004'],
150
+ remediation: 'Remove code and regenerate SSH keys.'
151
+ },
152
+
153
+ // ============ CRYPTOMINERS ============
154
+ {
155
+ name: 'Cryptominer - WebAssembly',
156
+ type: MalwareType.CRYPTOMINER,
157
+ pattern: /WebAssembly\.(?:instantiate|compile)[\s\S]{0,300}(?:hash|mine|worker|crypto)/gi,
158
+ description: 'WebAssembly-based cryptocurrency miner',
159
+ severity: Severity.HIGH,
160
+ confidence: 75,
161
+ mitre: ['T1496'],
162
+ remediation: 'Remove the cryptomining code entirely.'
163
+ },
164
+ {
165
+ name: 'Cryptominer - CoinHive Style',
166
+ type: MalwareType.CRYPTOMINER,
167
+ pattern: /(?:coinhive|coin-hive|cryptonight|monero|xmr|hashrate|CryptoNight)/gi,
168
+ description: 'Browser-based cryptocurrency miner reference',
169
+ severity: Severity.HIGH,
170
+ confidence: 90,
171
+ mitre: ['T1496'],
172
+ remediation: 'Remove all cryptomining references.'
173
+ },
174
+ {
175
+ name: 'Cryptominer - Worker Pool',
176
+ type: MalwareType.CRYPTOMINER,
177
+ pattern: /(?:stratum|mining[_-]?pool|worker\.postMessage[\s\S]{0,50}hash)/gi,
178
+ description: 'Mining pool communication pattern',
179
+ severity: Severity.HIGH,
180
+ confidence: 80,
181
+ mitre: ['T1496'],
182
+ remediation: 'Remove the mining worker code.'
183
+ },
184
+ {
185
+ name: 'Crypto Wallet Stealer',
186
+ type: MalwareType.CRYPTO_WALLET_STEALER,
187
+ pattern: /(?:wallet|ethereum|bitcoin|metamask|web3|privateKey)[\s\S]{0,100}(?:localStorage|send|post|fetch)/gi,
188
+ description: 'Attempts to steal cryptocurrency wallet data',
189
+ severity: Severity.CRITICAL,
190
+ confidence: 75,
191
+ mitre: ['T1005', 'T1041'],
192
+ remediation: 'Remove code, notify affected users, rotate wallet keys.'
193
+ },
194
+
195
+ // ============ BACKDOORS & REMOTE ACCESS ============
196
+ {
197
+ name: 'Reverse Shell',
198
+ type: MalwareType.REVERSE_SHELL,
199
+ pattern: /(?:net\.Socket|dgram)[\s\S]{0,200}(?:spawn|exec)[\s\S]{0,100}(?:\/bin\/(?:sh|bash)|cmd\.exe|powershell)/gi,
200
+ description: 'Network socket connected to shell execution',
201
+ severity: Severity.CRITICAL,
202
+ confidence: 95,
203
+ mitre: ['T1059', 'T1095'],
204
+ remediation: 'Remove immediately and audit all system access.'
205
+ },
206
+ {
207
+ name: 'Backdoor - Remote Code Execution',
208
+ type: MalwareType.BACKDOOR,
209
+ pattern: /(?:fetch|axios|http\.get)[\s\S]{0,100}(?:eval|Function|exec|spawn)[\s\S]{0,50}(?:body|response|data)/gi,
210
+ description: 'Fetches code from remote server and executes it',
211
+ severity: Severity.CRITICAL,
212
+ confidence: 90,
213
+ mitre: ['T1105', 'T1059'],
214
+ remediation: 'Remove the backdoor and investigate compromise.'
215
+ },
216
+ {
217
+ name: 'C2 Beacon',
218
+ type: MalwareType.C2_COMMUNICATION,
219
+ pattern: /setInterval[\s\S]{0,100}(?:fetch|axios|XMLHttpRequest)[\s\S]{0,100}(?:exec|eval|Function)/gi,
220
+ description: 'Periodic command and control communication',
221
+ severity: Severity.CRITICAL,
222
+ confidence: 80,
223
+ mitre: ['T1071', 'T1059'],
224
+ remediation: 'Remove C2 code and investigate network traffic.'
225
+ },
226
+ {
227
+ name: 'DNS Exfiltration',
228
+ type: MalwareType.C2_COMMUNICATION,
229
+ pattern: /(?:dns|resolve)[\s\S]{0,50}(?:encode|base64|hex)[\s\S]{0,50}(?:lookup|resolve4)/gi,
230
+ description: 'Data exfiltration via DNS queries',
231
+ severity: Severity.HIGH,
232
+ confidence: 75,
233
+ mitre: ['T1048.003'],
234
+ remediation: 'Remove the DNS exfiltration code.'
235
+ },
236
+
237
+ // ============ DROPPERS & LOADERS ============
238
+ {
239
+ name: 'Remote Script Loader',
240
+ type: MalwareType.LOADER,
241
+ pattern: /(?:document\.createElement\s*\(\s*['"`]script['"`]\s*\))[\s\S]{0,200}(?:src\s*=|appendChild)/gi,
242
+ description: 'Dynamically loads remote scripts',
243
+ severity: Severity.HIGH,
244
+ confidence: 70,
245
+ mitre: ['T1105'],
246
+ remediation: 'Verify script sources or remove dynamic loading.'
247
+ },
248
+ {
249
+ name: 'Payload Dropper',
250
+ type: MalwareType.DROPPER,
251
+ pattern: /(?:fs\.writeFile|writeFileSync)[\s\S]{0,100}(?:atob|Buffer\.from|base64|0x[0-9a-f]+)/gi,
252
+ description: 'Writes decoded payload to filesystem',
253
+ severity: Severity.CRITICAL,
254
+ confidence: 85,
255
+ mitre: ['T1105', 'T1204'],
256
+ remediation: 'Remove dropper and scan for dropped files.'
257
+ },
258
+ {
259
+ name: 'curl/wget Pipe Execution',
260
+ type: MalwareType.DROPPER,
261
+ pattern: /(?:curl|wget)\s+[^\s]+\s*\|\s*(?:sh|bash|node|python)/gi,
262
+ description: 'Downloads and executes remote script',
263
+ severity: Severity.CRITICAL,
264
+ confidence: 95,
265
+ mitre: ['T1059', 'T1105'],
266
+ remediation: 'Remove the dangerous command execution.'
267
+ },
268
+
269
+ // ============ OBFUSCATED & ENCODED PAYLOADS ============
270
+ {
271
+ name: 'Base64 Decode + Eval',
272
+ type: MalwareType.OBFUSCATED_PAYLOAD,
273
+ pattern: /(?:atob|Buffer\.from\s*\([^)]+,\s*['"`]base64['"`]\))[\s\S]{0,50}(?:eval|Function|exec)/gi,
274
+ description: 'Decodes Base64 and executes the result',
275
+ severity: Severity.CRITICAL,
276
+ confidence: 90,
277
+ mitre: ['T1140', 'T1059'],
278
+ remediation: 'Decode and analyze the payload, then remove.'
279
+ },
280
+ {
281
+ name: 'Hex Decode + Eval',
282
+ type: MalwareType.OBFUSCATED_PAYLOAD,
283
+ pattern: /Buffer\.from\s*\([^)]+,\s*['"`]hex['"`]\)[\s\S]{0,50}(?:eval|Function|exec|toString)/gi,
284
+ description: 'Decodes hex-encoded payload and executes',
285
+ severity: Severity.CRITICAL,
286
+ confidence: 85,
287
+ mitre: ['T1140', 'T1059'],
288
+ remediation: 'Decode and analyze, then remove the code.'
289
+ },
290
+ {
291
+ name: 'String.fromCharCode Obfuscation',
292
+ type: MalwareType.OBFUSCATED_PAYLOAD,
293
+ pattern: /String\.fromCharCode\s*\(\s*(?:\d+\s*,?\s*){10,}\)/gi,
294
+ description: 'Uses character codes to hide strings',
295
+ severity: Severity.HIGH,
296
+ confidence: 75,
297
+ mitre: ['T1140'],
298
+ remediation: 'Decode the character codes to analyze.'
299
+ },
300
+ {
301
+ name: 'Unicode Escape Obfuscation',
302
+ type: MalwareType.OBFUSCATED_PAYLOAD,
303
+ pattern: /(?:\\u[0-9a-f]{4}){10,}/gi,
304
+ description: 'Heavy use of unicode escapes for obfuscation',
305
+ severity: Severity.MEDIUM,
306
+ confidence: 65,
307
+ mitre: ['T1140'],
308
+ remediation: 'Decode and review the actual content.'
309
+ },
310
+ {
311
+ name: 'Hex Escape Obfuscation',
312
+ type: MalwareType.OBFUSCATED_PAYLOAD,
313
+ pattern: /(?:\\x[0-9a-f]{2}){15,}/gi,
314
+ description: 'Heavy use of hex escapes for obfuscation',
315
+ severity: Severity.HIGH,
316
+ confidence: 70,
317
+ mitre: ['T1140'],
318
+ remediation: 'Decode and analyze the hidden content.'
319
+ },
320
+
321
+ // ============ ANTI-DEBUGGING / EVASION ============
322
+ {
323
+ name: 'DevTools Detection',
324
+ type: MalwareType.ANTI_DEBUGGING,
325
+ pattern: /(?:devtools|firebug)[\s\S]{0,50}(?:open|detect|isOpen)/gi,
326
+ description: 'Detects if browser DevTools is open',
327
+ severity: Severity.MEDIUM,
328
+ confidence: 80,
329
+ mitre: ['T1622'],
330
+ remediation: 'Remove anti-debugging checks.'
331
+ },
332
+ {
333
+ name: 'Console Timing Detection',
334
+ type: MalwareType.ANTI_DEBUGGING,
335
+ pattern: /console\.(?:log|table|dir)[\s\S]{0,100}(?:Date\.now|performance\.now)[\s\S]{0,50}(?:>\s*\d+|threshold)/gi,
336
+ description: 'Uses console timing to detect debuggers',
337
+ severity: Severity.MEDIUM,
338
+ confidence: 70,
339
+ mitre: ['T1622'],
340
+ remediation: 'Remove timing-based detection.'
341
+ },
342
+ {
343
+ name: 'Debugger Trap',
344
+ type: MalwareType.ANTI_DEBUGGING,
345
+ pattern: /(?:setInterval|setTimeout)[\s\S]{0,50}(?:function\s*\(\)\s*{\s*debugger|['"`]debugger['"`])/gi,
346
+ description: 'Repeatedly triggers debugger statement',
347
+ severity: Severity.MEDIUM,
348
+ confidence: 85,
349
+ mitre: ['T1622'],
350
+ remediation: 'Remove the debugger trap code.'
351
+ },
352
+ {
353
+ name: 'VM/Sandbox Detection',
354
+ type: MalwareType.SANDBOX_EVASION,
355
+ pattern: /(?:navigator\.(?:webdriver|hardwareConcurrency|deviceMemory)|screen\.(?:width|height)[\s\S]{0,50}(?:800|1024))[\s\S]{0,100}(?:if|===|!==)/gi,
356
+ description: 'Checks for VM/sandbox environment',
357
+ severity: Severity.MEDIUM,
358
+ confidence: 70,
359
+ mitre: ['T1497'],
360
+ remediation: 'Remove environment detection code.'
361
+ },
362
+
363
+ // ============ PERSISTENCE ============
364
+ {
365
+ name: 'Cron Job Creation',
366
+ type: MalwareType.PERSISTENCE,
367
+ pattern: /(?:cron|crontab|\/etc\/cron)[\s\S]{0,100}(?:write|exec|spawn|append)/gi,
368
+ description: 'Attempts to create scheduled tasks',
369
+ severity: Severity.HIGH,
370
+ confidence: 80,
371
+ mitre: ['T1053'],
372
+ remediation: 'Remove persistence mechanism and check crontab.'
373
+ },
374
+ {
375
+ name: 'Startup Script Modification',
376
+ type: MalwareType.PERSISTENCE,
377
+ pattern: /(?:\.bashrc|\.profile|\.bash_profile|init\.d|systemd)[\s\S]{0,100}(?:writeFile|appendFile|exec)/gi,
378
+ description: 'Modifies startup scripts for persistence',
379
+ severity: Severity.CRITICAL,
380
+ confidence: 85,
381
+ mitre: ['T1546'],
382
+ remediation: 'Remove persistence and check startup files.'
383
+ },
384
+
385
+ // ============ SUPPLY CHAIN SPECIFIC ============
386
+ {
387
+ name: 'Package Install Hook Abuse',
388
+ type: MalwareType.POSTINSTALL_MALWARE,
389
+ pattern: /["'](?:preinstall|postinstall|preuninstall)["']\s*:\s*["'](?:[^"']*(?:curl|wget|node\s+-e|eval|exec)[^"']*)/gi,
390
+ description: 'Suspicious npm lifecycle script',
391
+ severity: Severity.CRITICAL,
392
+ confidence: 90,
393
+ mitre: ['T1195.002'],
394
+ remediation: 'Remove malicious lifecycle scripts.'
395
+ },
396
+ {
397
+ name: 'Suspicious Package Name Pattern',
398
+ type: MalwareType.TYPOSQUAT,
399
+ pattern: /require\s*\(\s*['"`](?:l[o0]dash|und[e3]rscore|ex[p9]ress|m[o0]ment|ax[i1]os|react-d[o0]m|vue-r[o0]uter)['"`]\s*\)/gi,
400
+ description: 'Potential typosquatting package import',
401
+ severity: Severity.HIGH,
402
+ confidence: 70,
403
+ mitre: ['T1195.002'],
404
+ remediation: 'Verify package names are spelled correctly.'
405
+ },
406
+
407
+ // ============ SUSPICIOUS NETWORK BEHAVIOR ============
408
+ {
409
+ name: 'Suspicious Webhook',
410
+ type: MalwareType.SUSPICIOUS_BEHAVIOR,
411
+ pattern: /(?:discord\.com\/api\/webhooks|hooks\.slack\.com|api\.telegram\.org\/bot)/gi,
412
+ description: 'Sends data to messaging webhook',
413
+ severity: Severity.HIGH,
414
+ confidence: 75,
415
+ mitre: ['T1567'],
416
+ remediation: 'Verify webhook usage is legitimate.'
417
+ },
418
+ {
419
+ name: 'Data Upload to Pastebin',
420
+ type: MalwareType.SUSPICIOUS_BEHAVIOR,
421
+ pattern: /(?:pastebin\.com|ghostbin|hastebin|paste\.ee)[\s\S]{0,100}(?:post|send|upload)/gi,
422
+ description: 'Uploads data to paste service',
423
+ severity: Severity.MEDIUM,
424
+ confidence: 70,
425
+ mitre: ['T1567.002'],
426
+ remediation: 'Verify the data being uploaded.'
427
+ },
428
+ {
429
+ name: 'IP Logger',
430
+ type: MalwareType.SUSPICIOUS_BEHAVIOR,
431
+ pattern: /(?:iplogger|grabify|ipify|ip-api|whatismyip)[\s\S]{0,50}(?:fetch|get|request)/gi,
432
+ description: 'Resolves and potentially logs IP address',
433
+ severity: Severity.MEDIUM,
434
+ confidence: 65,
435
+ mitre: ['T1016'],
436
+ remediation: 'Verify IP lookup is necessary and legitimate.'
437
+ }
438
+ ];
439
+
440
+ /**
441
+ * Long encoded string patterns to detect
442
+ */
443
+ const ENCODED_STRING_THRESHOLD = 200;
444
+
445
+ /**
446
+ * Malware Detector Class
447
+ */
448
+ export class MalwareDetector {
449
+ private matches: MalwareMatch[] = [];
450
+ private lines: string[] = [];
451
+
452
+ /**
453
+ * Scan code for malware patterns
454
+ */
455
+ scan(content: string, filePath: string): MalwareMatch[] {
456
+ this.matches = [];
457
+ this.lines = content.split('\n');
458
+
459
+ // Run pattern matching
460
+ this.runPatternMatching(content);
461
+
462
+ // Check for suspicious encoded strings
463
+ this.checkEncodedStrings(content);
464
+
465
+ // Check for high entropy sections (possible encrypted/encoded payloads)
466
+ this.checkHighEntropyContent(content);
467
+
468
+ // Check for suspicious network URLs
469
+ this.checkSuspiciousUrls(content);
470
+
471
+ // Deduplicate matches
472
+ return this.deduplicateMatches();
473
+ }
474
+
475
+ /**
476
+ * Run all malware pattern checks
477
+ */
478
+ private runPatternMatching(content: string): void {
479
+ for (const pattern of MALWARE_PATTERNS) {
480
+ // Reset regex state
481
+ pattern.pattern.lastIndex = 0;
482
+
483
+ let match;
484
+ while ((match = pattern.pattern.exec(content)) !== null) {
485
+ const lineNumber = this.getLineNumber(content, match.index);
486
+
487
+ this.matches.push({
488
+ type: pattern.type,
489
+ name: pattern.name,
490
+ description: pattern.description,
491
+ severity: pattern.severity,
492
+ line: lineNumber,
493
+ code: this.getCodeSnippet(lineNumber),
494
+ confidence: pattern.confidence,
495
+ indicators: pattern.indicators ? pattern.indicators(match) : [match[0].substring(0, 100)],
496
+ mitreAttack: pattern.mitre,
497
+ remediation: pattern.remediation
498
+ });
499
+ }
500
+ }
501
+ }
502
+
503
+ /**
504
+ * Check for suspicious encoded strings
505
+ */
506
+ private checkEncodedStrings(content: string): void {
507
+ // Find long base64-like strings
508
+ const base64Pattern = /['"`]([A-Za-z0-9+/=]{100,})['"`]/g;
509
+ let match;
510
+
511
+ while ((match = base64Pattern.exec(content)) !== null) {
512
+ const encoded = match[1];
513
+ if (isBase64Like(encoded)) {
514
+ const lineNumber = this.getLineNumber(content, match.index);
515
+
516
+ // Try to decode and check for suspicious content
517
+ let decodedContent = '';
518
+ try {
519
+ decodedContent = Buffer.from(encoded, 'base64').toString('utf8');
520
+ } catch {
521
+ // Not valid base64
522
+ }
523
+
524
+ const isSuspicious = decodedContent.includes('eval') ||
525
+ decodedContent.includes('exec') ||
526
+ decodedContent.includes('Function') ||
527
+ decodedContent.includes('http') ||
528
+ decodedContent.includes('require');
529
+
530
+ if (isSuspicious) {
531
+ this.matches.push({
532
+ type: MalwareType.ENCODED_PAYLOAD,
533
+ name: 'Suspicious Base64 Encoded Content',
534
+ description: 'Long Base64 string that decodes to potentially malicious content',
535
+ severity: Severity.HIGH,
536
+ line: lineNumber,
537
+ code: this.getCodeSnippet(lineNumber),
538
+ confidence: 80,
539
+ indicators: [`Base64 length: ${encoded.length}`, `Contains suspicious keywords when decoded`],
540
+ mitreAttack: ['T1140'],
541
+ remediation: 'Decode and analyze the Base64 content.'
542
+ });
543
+ }
544
+ }
545
+ }
546
+
547
+ // Find long hex strings
548
+ const hexPattern = /['"`]((?:0x)?[0-9a-fA-F]{100,})['"`]/g;
549
+ while ((match = hexPattern.exec(content)) !== null) {
550
+ const hex = match[1];
551
+ if (isHexEncoded(hex.replace(/^0x/, ''))) {
552
+ const lineNumber = this.getLineNumber(content, match.index);
553
+
554
+ this.matches.push({
555
+ type: MalwareType.ENCODED_PAYLOAD,
556
+ name: 'Suspicious Hex Encoded Content',
557
+ description: 'Long hex-encoded string detected',
558
+ severity: Severity.MEDIUM,
559
+ line: lineNumber,
560
+ code: this.getCodeSnippet(lineNumber),
561
+ confidence: 65,
562
+ indicators: [`Hex string length: ${hex.length}`],
563
+ mitreAttack: ['T1140'],
564
+ remediation: 'Decode and analyze the hex content.'
565
+ });
566
+ }
567
+ }
568
+ }
569
+
570
+ /**
571
+ * Check for high entropy content (encrypted/compressed data)
572
+ */
573
+ private checkHighEntropyContent(content: string): void {
574
+ // Split into chunks and check entropy
575
+ const chunkSize = 500;
576
+ for (let i = 0; i < this.lines.length; i++) {
577
+ const line = this.lines[i];
578
+ if (line.length > 200) {
579
+ const entropy = calculateEntropy(line);
580
+ if (entropy > 5.8) {
581
+ this.matches.push({
582
+ type: MalwareType.OBFUSCATED_PAYLOAD,
583
+ name: 'High Entropy Code Line',
584
+ description: `Line with unusually high entropy (${entropy.toFixed(2)}) suggesting obfuscated or encrypted content`,
585
+ severity: Severity.MEDIUM,
586
+ line: i + 1,
587
+ code: line.substring(0, 100) + '...',
588
+ confidence: 60,
589
+ indicators: [`Entropy: ${entropy.toFixed(2)}`],
590
+ mitreAttack: ['T1027'],
591
+ remediation: 'Analyze the obfuscated content.'
592
+ });
593
+ }
594
+ }
595
+ }
596
+ }
597
+
598
+ /**
599
+ * Check for suspicious URLs
600
+ */
601
+ private checkSuspiciousUrls(content: string): void {
602
+ const suspiciousPatterns = [
603
+ // Dynamic DNS providers (often used by malware)
604
+ { pattern: /(?:no-ip\.com|duckdns\.org|dynu\.com|freedns\.afraid\.org)/gi, name: 'Dynamic DNS Service' },
605
+ // URL shorteners (can hide malicious destinations)
606
+ { pattern: /(?:bit\.ly|tinyurl\.com|t\.co|goo\.gl|is\.gd|v\.gd)\/\w+/gi, name: 'URL Shortener' },
607
+ // Raw IP addresses in URLs
608
+ { pattern: /https?:\/\/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/gi, name: 'Raw IP URL' },
609
+ // File sharing services
610
+ { pattern: /(?:mega\.nz|mediafire\.com|zippyshare\.com|uploadfiles)/gi, name: 'File Sharing Service' }
611
+ ];
612
+
613
+ for (const { pattern, name } of suspiciousPatterns) {
614
+ pattern.lastIndex = 0;
615
+ let match;
616
+ while ((match = pattern.exec(content)) !== null) {
617
+ const lineNumber = this.getLineNumber(content, match.index);
618
+
619
+ this.matches.push({
620
+ type: MalwareType.SUSPICIOUS_BEHAVIOR,
621
+ name: `Suspicious URL: ${name}`,
622
+ description: `Code references ${name} which may be used to hide malicious activity`,
623
+ severity: Severity.MEDIUM,
624
+ line: lineNumber,
625
+ code: this.getCodeSnippet(lineNumber),
626
+ confidence: 55,
627
+ indicators: [match[0]],
628
+ mitreAttack: ['T1102'],
629
+ remediation: 'Verify the URL is legitimate and necessary.'
630
+ });
631
+ }
632
+ }
633
+ }
634
+
635
+ /**
636
+ * Get line number from string index
637
+ */
638
+ private getLineNumber(content: string, index: number): number {
639
+ const beforeMatch = content.substring(0, index);
640
+ return beforeMatch.split('\n').length;
641
+ }
642
+
643
+ /**
644
+ * Get code snippet for a line
645
+ */
646
+ private getCodeSnippet(lineNumber: number): string {
647
+ const lineIndex = lineNumber - 1;
648
+ if (lineIndex >= 0 && lineIndex < this.lines.length) {
649
+ return this.lines[lineIndex].trim().substring(0, 150);
650
+ }
651
+ return '';
652
+ }
653
+
654
+ /**
655
+ * Remove duplicate matches
656
+ */
657
+ private deduplicateMatches(): MalwareMatch[] {
658
+ const seen = new Set<string>();
659
+ return this.matches.filter(match => {
660
+ const key = `${match.type}:${match.line}:${match.name}`;
661
+ if (seen.has(key)) return false;
662
+ seen.add(key);
663
+ return true;
664
+ });
665
+ }
666
+
667
+ /**
668
+ * Get threat type for malware type
669
+ */
670
+ static getThreatType(type: MalwareType): ThreatType {
671
+ const mapping: Record<MalwareType, ThreatType> = {
672
+ [MalwareType.STEALER]: ThreatType.DATA_EXFILTRATION,
673
+ [MalwareType.KEYLOGGER]: ThreatType.KEYLOGGER,
674
+ [MalwareType.CREDENTIAL_HARVESTER]: ThreatType.DATA_EXFILTRATION,
675
+ [MalwareType.CRYPTOMINER]: ThreatType.CRYPTOMINER,
676
+ [MalwareType.CRYPTO_WALLET_STEALER]: ThreatType.DATA_EXFILTRATION,
677
+ [MalwareType.BACKDOOR]: ThreatType.BACKDOOR,
678
+ [MalwareType.REVERSE_SHELL]: ThreatType.REVERSE_SHELL,
679
+ [MalwareType.C2_COMMUNICATION]: ThreatType.SUSPICIOUS_NETWORK,
680
+ [MalwareType.DROPPER]: ThreatType.MALICIOUS_LOADER,
681
+ [MalwareType.LOADER]: ThreatType.MALICIOUS_LOADER,
682
+ [MalwareType.OBFUSCATED_PAYLOAD]: ThreatType.OBFUSCATED_CODE,
683
+ [MalwareType.ENCODED_PAYLOAD]: ThreatType.EMBEDDED_PAYLOAD,
684
+ [MalwareType.TYPOSQUAT]: ThreatType.MALICIOUS_LOADER,
685
+ [MalwareType.DEPENDENCY_CONFUSION]: ThreatType.MALICIOUS_LOADER,
686
+ [MalwareType.POSTINSTALL_MALWARE]: ThreatType.MALICIOUS_LOADER,
687
+ [MalwareType.ANTI_DEBUGGING]: ThreatType.OBFUSCATED_CODE,
688
+ [MalwareType.VM_DETECTION]: ThreatType.OBFUSCATED_CODE,
689
+ [MalwareType.SANDBOX_EVASION]: ThreatType.OBFUSCATED_CODE,
690
+ [MalwareType.PERSISTENCE]: ThreatType.BACKDOOR,
691
+ [MalwareType.SUSPICIOUS_BEHAVIOR]: ThreatType.SUSPICIOUS_NETWORK
692
+ };
693
+ return mapping[type] || ThreatType.MALICIOUS_LOADER;
694
+ }
695
+ }
696
+
697
+ export default MalwareDetector;