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,928 @@
1
+ /**
2
+ * @fileoverview Malware Detection Module - Main Entry Point
3
+ * @module rules/malware
4
+ *
5
+ * Enterprise-grade malware detection system with:
6
+ * - Multi-pattern detection (Regex, AST, Heuristic, Semantic)
7
+ * - Dynamic scoring with MITRE ATT&CK integration
8
+ * - 60+ comprehensive rules across 7 categories
9
+ * - Support for 13 programming languages
10
+ * - ReDoS protection and timeout safeguards
11
+ * - Obfuscation detection and entropy analysis
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * import { MalwareRuleEngine, createMalwareEngine } from './rules/malware';
16
+ *
17
+ * // Create engine with all rules
18
+ * const engine = createMalwareEngine();
19
+ *
20
+ * // Analyze code
21
+ * const findings = await engine.analyze(code, {
22
+ * filePath: 'suspicious.js',
23
+ * language: 'javascript'
24
+ * });
25
+ *
26
+ * // Check results
27
+ * findings.forEach(finding => {
28
+ * console.log(`${finding.severity}: ${finding.ruleName}`);
29
+ * console.log(`Score: ${finding.score.totalScore}/100`);
30
+ * });
31
+ * ```
32
+ */
33
+
34
+ // ============================================================================
35
+ // LEGACY TYPE COMPATIBILITY
36
+ // ============================================================================
37
+
38
+ import { Rule, Severity, ThreatType, FindingCategory } from '../../types';
39
+ import { getStandardsForThreat } from '../standards';
40
+
41
+ // ============================================================================
42
+ // NEW TYPE EXPORTS
43
+ // ============================================================================
44
+
45
+ export * from './types';
46
+
47
+ // ============================================================================
48
+ // UTILITY EXPORTS
49
+ // ============================================================================
50
+
51
+ export {
52
+ calculateEntropy,
53
+ analyzeEntropyByLine,
54
+ normalizeCode,
55
+ detectObfuscationLevel,
56
+ detectAntiDebugging,
57
+ detectEnvironmentChecks,
58
+ safeRegexMatch,
59
+ extractSnippet,
60
+ analyzeBase64Content,
61
+ extractSuspiciousStrings
62
+ } from './utils';
63
+
64
+ // ============================================================================
65
+ // CONSTANTS EXPORTS
66
+ // ============================================================================
67
+
68
+ export {
69
+ SCORE_THRESHOLDS,
70
+ ENTROPY_THRESHOLDS,
71
+ LIMITS,
72
+ OBFUSCATION_INDICATORS,
73
+ SUSPICIOUS_HOSTS,
74
+ CRYPTO_INDICATORS,
75
+ DANGEROUS_FUNCTIONS,
76
+ MITRE_TECHNIQUES
77
+ } from './constants';
78
+
79
+ // ============================================================================
80
+ // SCORING EXPORTS
81
+ // ============================================================================
82
+
83
+ export { MalwareScoreCalculator } from './scoring';
84
+
85
+ // ============================================================================
86
+ // ENGINE EXPORTS
87
+ // ============================================================================
88
+
89
+ export {
90
+ MalwareRuleEngine,
91
+ PatternMatcher,
92
+ createDefaultEngine,
93
+ quickScan,
94
+ EngineOptions
95
+ } from './engine';
96
+
97
+ // ============================================================================
98
+ // RULE CATEGORY EXPORTS
99
+ // ============================================================================
100
+
101
+ import { backdoorRules as newBackdoorRules } from './categories/backdoors';
102
+ import { cryptominerRules as newCryptominerRules } from './categories/cryptominers';
103
+ import { keyloggerRules as newKeyloggerRules } from './categories/keyloggers';
104
+ import { exfiltrationRules as newExfiltrationRules } from './categories/exfiltration';
105
+ import { obfuscationRules as newObfuscationRules } from './categories/obfuscation';
106
+ import { loaderRules as newLoaderRules } from './categories/loaders';
107
+ import { networkRules as newNetworkRules } from './categories/network';
108
+
109
+ export {
110
+ newBackdoorRules as backdoorRulesV2,
111
+ newCryptominerRules as cryptominerRulesV2,
112
+ newKeyloggerRules as keyloggerRulesV2,
113
+ newExfiltrationRules as exfiltrationRulesV2,
114
+ newObfuscationRules as obfuscationRulesV2,
115
+ newLoaderRules as loaderRulesV2,
116
+ newNetworkRules as networkRulesV2
117
+ };
118
+
119
+ // ============================================================================
120
+ // AGGREGATED RULE SETS
121
+ // ============================================================================
122
+
123
+ import { MalwareRule } from './types';
124
+
125
+ /**
126
+ * All malware detection rules (60+ rules)
127
+ */
128
+ export const allMalwareRules: MalwareRule[] = [
129
+ ...newBackdoorRules, // 10 rules
130
+ ...newCryptominerRules, // 11 rules
131
+ ...newKeyloggerRules, // 12 rules
132
+ ...newExfiltrationRules, // 15 rules
133
+ ...newObfuscationRules, // 14 rules
134
+ ...newLoaderRules, // 9 rules
135
+ ...newNetworkRules // 10 rules
136
+ ];
137
+
138
+ /**
139
+ * Critical severity rules only
140
+ */
141
+ export const criticalRules: MalwareRule[] = allMalwareRules.filter(
142
+ rule => rule.severity === 'critical'
143
+ );
144
+
145
+ /**
146
+ * High confidence rules only
147
+ */
148
+ export const highConfidenceRules: MalwareRule[] = allMalwareRules.filter(
149
+ rule => rule.confidence === 'high'
150
+ );
151
+
152
+ // ============================================================================
153
+ // ENGINE FACTORY FUNCTIONS
154
+ // ============================================================================
155
+
156
+ import { MalwareRuleEngine, EngineOptions } from './engine';
157
+ import { AnalysisOptions } from './types';
158
+
159
+ /**
160
+ * Create a fully configured malware detection engine with all rules
161
+ *
162
+ * @param options - Optional analysis configuration
163
+ * @returns Configured MalwareRuleEngine instance
164
+ *
165
+ * @example
166
+ * ```typescript
167
+ * const engine = createMalwareEngine({
168
+ * enableHeuristics: true,
169
+ * enableAstAnalysis: true,
170
+ * minConfidence: 0.5
171
+ * });
172
+ * ```
173
+ */
174
+ export function createMalwareEngine(
175
+ options?: Partial<EngineOptions>
176
+ ): MalwareRuleEngine {
177
+ return new MalwareRuleEngine(allMalwareRules, options);
178
+ }
179
+
180
+ /**
181
+ * Create an engine with only critical severity rules
182
+ *
183
+ * @param options - Optional analysis configuration
184
+ * @returns MalwareRuleEngine with critical rules only
185
+ */
186
+ export function createCriticalOnlyEngine(
187
+ options?: Partial<EngineOptions>
188
+ ): MalwareRuleEngine {
189
+ return new MalwareRuleEngine(criticalRules, options);
190
+ }
191
+
192
+ /**
193
+ * Create an engine with custom rule subset
194
+ *
195
+ * @param rules - Array of rules to include
196
+ * @param options - Optional analysis configuration
197
+ * @returns MalwareRuleEngine with specified rules
198
+ */
199
+ export function createCustomEngine(
200
+ rules: MalwareRule[],
201
+ options?: Partial<EngineOptions>
202
+ ): MalwareRuleEngine {
203
+ return new MalwareRuleEngine(rules, options);
204
+ }
205
+
206
+ // ============================================================================
207
+ // CONVENIENCE FUNCTIONS
208
+ // ============================================================================
209
+
210
+ import { MalwareFinding, AnalysisContext, SupportedLanguage } from './types';
211
+
212
+ /**
213
+ * Quick malware scan with default settings
214
+ *
215
+ * @param code - Code to analyze
216
+ * @param language - Programming language
217
+ * @returns Scan results with malicious status
218
+ *
219
+ * @example
220
+ * ```typescript
221
+ * const result = await scanForMalware(suspiciousCode, 'javascript');
222
+ * if (result.isMalicious) {
223
+ * console.log(`Malware detected! Score: ${result.score}`);
224
+ * result.findings.forEach(f => console.log(f.ruleName));
225
+ * }
226
+ * ```
227
+ */
228
+ export async function scanForMalware(
229
+ code: string,
230
+ language?: string
231
+ ): Promise<{
232
+ isMalicious: boolean;
233
+ score: number;
234
+ severity: 'critical' | 'high' | 'medium' | 'low' | 'clean';
235
+ findings: MalwareFinding[];
236
+ summary: {
237
+ totalFindings: number;
238
+ criticalCount: number;
239
+ highCount: number;
240
+ };
241
+ }> {
242
+ const engine = createMalwareEngine();
243
+ const context: AnalysisContext = {
244
+ filePath: 'scan',
245
+ content: code,
246
+ language: (language as SupportedLanguage) ?? SupportedLanguage.JAVASCRIPT
247
+ };
248
+ const findings = await engine.analyze(context);
249
+
250
+ const maxScore = findings.length > 0
251
+ ? Math.max(...findings.map(f => f.malwareScore.score))
252
+ : 0;
253
+
254
+ const criticalCount = findings.filter(f => f.severity === 'critical').length;
255
+ const highCount = findings.filter(f => f.severity === 'high').length;
256
+
257
+ let severity: 'critical' | 'high' | 'medium' | 'low' | 'clean';
258
+ if (maxScore >= 85) severity = 'critical';
259
+ else if (maxScore >= 65) severity = 'high';
260
+ else if (maxScore >= 40) severity = 'medium';
261
+ else if (maxScore >= 20) severity = 'low';
262
+ else severity = 'clean';
263
+
264
+ return {
265
+ isMalicious: maxScore >= 40, // Medium threshold
266
+ score: maxScore,
267
+ severity,
268
+ findings,
269
+ summary: {
270
+ totalFindings: findings.length,
271
+ criticalCount,
272
+ highCount
273
+ }
274
+ };
275
+ }
276
+
277
+ /**
278
+ * Check if code contains specific malware category
279
+ *
280
+ * @param code - Code to analyze
281
+ * @param category - Malware category to check
282
+ * @param language - Programming language
283
+ * @returns True if category detected
284
+ *
285
+ * @example
286
+ * ```typescript
287
+ * const hasBackdoor = await hasMalwareCategory(code, 'backdoor', 'javascript');
288
+ * ```
289
+ */
290
+ export async function hasMalwareCategory(
291
+ code: string,
292
+ category: 'backdoor' | 'cryptominer' | 'keylogger' | 'exfiltration' | 'obfuscation' | 'loader' | 'network',
293
+ language?: string
294
+ ): Promise<boolean> {
295
+ let rules: MalwareRule[];
296
+
297
+ switch (category) {
298
+ case 'backdoor':
299
+ rules = newBackdoorRules;
300
+ break;
301
+ case 'cryptominer':
302
+ rules = newCryptominerRules;
303
+ break;
304
+ case 'keylogger':
305
+ rules = newKeyloggerRules;
306
+ break;
307
+ case 'exfiltration':
308
+ rules = newExfiltrationRules;
309
+ break;
310
+ case 'obfuscation':
311
+ rules = newObfuscationRules;
312
+ break;
313
+ case 'loader':
314
+ rules = newLoaderRules;
315
+ break;
316
+ case 'network':
317
+ rules = newNetworkRules;
318
+ break;
319
+ }
320
+
321
+ const engine = new MalwareRuleEngine(rules);
322
+ const context: AnalysisContext = {
323
+ filePath: 'scan',
324
+ content: code,
325
+ language: (language as SupportedLanguage) ?? SupportedLanguage.JAVASCRIPT
326
+ };
327
+ const findings = await engine.analyze(context);
328
+
329
+ return findings.length > 0;
330
+ }
331
+
332
+ /**
333
+ * Analyze code and generate detailed report
334
+ *
335
+ * @param code - Code to analyze
336
+ * @param filePath - File path for context
337
+ * @param language - Programming language
338
+ * @returns Detailed analysis report
339
+ */
340
+ export async function generateMalwareReport(
341
+ code: string,
342
+ filePath: string,
343
+ language?: string
344
+ ): Promise<{
345
+ filePath: string;
346
+ language?: string;
347
+ timestamp: Date;
348
+ findings: MalwareFinding[];
349
+ summary: {
350
+ totalFindings: number;
351
+ bySeverity: Record<string, number>;
352
+ byCategory: Record<string, number>;
353
+ highestScore: number;
354
+ isMalicious: boolean;
355
+ };
356
+ mitreAttack: Array<{
357
+ tactic: string;
358
+ technique: string;
359
+ count: number;
360
+ }>;
361
+ recommendations: string[];
362
+ }> {
363
+ const engine = createMalwareEngine();
364
+ const context: AnalysisContext = {
365
+ filePath,
366
+ content: code,
367
+ language: (language as SupportedLanguage) ?? SupportedLanguage.JAVASCRIPT
368
+ };
369
+ const findings = await engine.analyze(context);
370
+ const summary = engine.generateSummary(findings);
371
+
372
+ // Aggregate MITRE ATT&CK techniques
373
+ const mitreTechniques = new Map<string, { tactic: string; technique: string; count: number }>();
374
+
375
+ for (const finding of findings) {
376
+ if (finding.mitreAttack) {
377
+ for (const mitre of finding.mitreAttack) {
378
+ const key = `${mitre.tacticId}-${mitre.techniqueId}`;
379
+ const existing = mitreTechniques.get(key);
380
+ if (existing) {
381
+ existing.count++;
382
+ } else {
383
+ mitreTechniques.set(key, {
384
+ tactic: mitre.tacticName,
385
+ technique: mitre.techniqueName,
386
+ count: 1
387
+ });
388
+ }
389
+ }
390
+ }
391
+ }
392
+
393
+ // Generate recommendations
394
+ const recommendations: string[] = [];
395
+ if (summary.criticalCount > 0) {
396
+ recommendations.push('URGENT: Critical malware detected. Isolate and analyze immediately.');
397
+ }
398
+ if (summary.bySeverity['high'] > 0) {
399
+ recommendations.push('High severity threats found. Review and remove malicious code.');
400
+ }
401
+ if (findings.some(f => String(f.threatType).includes('backdoor'))) {
402
+ recommendations.push('Backdoor detected. Check for unauthorized access and reset credentials.');
403
+ }
404
+ if (findings.some(f => String(f.threatType).includes('exfiltration'))) {
405
+ recommendations.push('Data exfiltration detected. Investigate what data may have been stolen.');
406
+ }
407
+ if (findings.some(f => String(f.category) === 'obfuscation')) {
408
+ recommendations.push('Obfuscation detected. Use deobfuscation tools to analyze intent.');
409
+ }
410
+
411
+ // Calculate by category
412
+ const byCategory: Record<string, number> = {};
413
+ for (const finding of findings) {
414
+ byCategory[finding.category] = (byCategory[finding.category] || 0) + 1;
415
+ }
416
+
417
+ return {
418
+ filePath,
419
+ language,
420
+ timestamp: new Date(),
421
+ findings,
422
+ summary: {
423
+ ...summary,
424
+ byCategory,
425
+ isMalicious: summary.highestScore >= 40
426
+ },
427
+ mitreAttack: Array.from(mitreTechniques.values()),
428
+ recommendations
429
+ };
430
+ }
431
+
432
+ // ============================================================================
433
+ // MODULE METADATA
434
+ // ============================================================================
435
+
436
+ export const MALWARE_MODULE_INFO = {
437
+ version: '2.0.0',
438
+ totalRules: allMalwareRules.length,
439
+ categories: [
440
+ 'backdoors',
441
+ 'cryptominers',
442
+ 'keyloggers',
443
+ 'exfiltration',
444
+ 'obfuscation',
445
+ 'loaders',
446
+ 'network'
447
+ ],
448
+ supportedLanguages: [
449
+ 'javascript',
450
+ 'typescript',
451
+ 'python',
452
+ 'php',
453
+ 'c',
454
+ 'cpp',
455
+ 'csharp',
456
+ 'java',
457
+ 'ruby',
458
+ 'go',
459
+ 'rust',
460
+ 'shell',
461
+ 'powershell'
462
+ ],
463
+ features: [
464
+ 'Multi-pattern detection (Regex, AST, Heuristic, Semantic)',
465
+ 'Dynamic malware scoring (0-100)',
466
+ 'MITRE ATT&CK framework integration',
467
+ 'Obfuscation and entropy analysis',
468
+ 'ReDoS protection',
469
+ 'Concurrent file analysis',
470
+ 'Detailed remediation steps',
471
+ 'False positive reduction'
472
+ ]
473
+ };
474
+
475
+ /**
476
+ * Get module information
477
+ */
478
+ export function getModuleInfo(): typeof MALWARE_MODULE_INFO {
479
+ return MALWARE_MODULE_INFO;
480
+ }
481
+
482
+ // ============================================================================
483
+ // LEGACY COMPATIBILITY - ORIGINAL RULES
484
+ // ============================================================================
485
+
486
+ /**
487
+ * Backdoor Detection Rules
488
+ */
489
+ const backdoorRules: Rule[] = [
490
+ {
491
+ id: 'MAL-BACK-001',
492
+ name: 'Potential Backdoor - Reverse Shell',
493
+ description: 'Code pattern consistent with a reverse shell detected. This allows remote attackers to gain shell access to the system.',
494
+ languages: ['javascript', 'typescript', 'python', 'php', 'c', 'cpp', 'csharp'],
495
+ threatType: ThreatType.REVERSE_SHELL,
496
+ category: FindingCategory.MALWARE,
497
+ severity: Severity.CRITICAL,
498
+ standards: getStandardsForThreat(ThreatType.REVERSE_SHELL),
499
+ patterns: [
500
+ {
501
+ type: 'regex',
502
+ pattern: 'socket\\.(?:connect|create_connection)\\s*\\([^)]*\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}',
503
+ flags: 'gi'
504
+ },
505
+ {
506
+ type: 'regex',
507
+ pattern: '\\/bin\\/(?:bash|sh)\\s+-i',
508
+ flags: 'gi'
509
+ },
510
+ {
511
+ type: 'regex',
512
+ pattern: 'nc\\s+-e\\s+\\/bin\\/(?:bash|sh)',
513
+ flags: 'gi'
514
+ },
515
+ {
516
+ type: 'regex',
517
+ pattern: 'subprocess\\.(?:Popen|call).*(?:bash|sh|cmd)',
518
+ flags: 'gi'
519
+ },
520
+ {
521
+ type: 'regex',
522
+ pattern: 'dup2\\s*\\(.*(?:STDIN|STDOUT|STDERR)',
523
+ flags: 'gi'
524
+ },
525
+ {
526
+ type: 'regex',
527
+ pattern: 'CreateProcess.*cmd\\.exe',
528
+ flags: 'gi'
529
+ }
530
+ ],
531
+ remediation: 'This code appears to implement a reverse shell backdoor. Remove immediately and investigate how this code was introduced. Audit all recent commits and contributor access.',
532
+ enabled: true,
533
+ tags: ['backdoor', 'reverse-shell', 'malware', 'critical']
534
+ },
535
+ {
536
+ id: 'MAL-BACK-002',
537
+ name: 'Web Shell Pattern',
538
+ description: 'Code pattern consistent with a web shell detected. Web shells provide attackers with remote command execution via web interface.',
539
+ languages: ['php', 'python', 'javascript', 'typescript'],
540
+ threatType: ThreatType.BACKDOOR,
541
+ category: FindingCategory.MALWARE,
542
+ severity: Severity.CRITICAL,
543
+ standards: getStandardsForThreat(ThreatType.BACKDOOR),
544
+ patterns: [
545
+ {
546
+ type: 'regex',
547
+ pattern: '\\$_(?:GET|POST|REQUEST)\\s*\\[[\'"][^\'"]+[\'"]\\s*\\].*(?:exec|system|passthru|shell_exec|eval)',
548
+ flags: 'gi'
549
+ },
550
+ {
551
+ type: 'regex',
552
+ pattern: 'eval\\s*\\(\\s*(?:base64_decode|gzinflate|str_rot13)',
553
+ flags: 'gi'
554
+ },
555
+ {
556
+ type: 'regex',
557
+ pattern: 'assert\\s*\\(\\s*\\$_',
558
+ flags: 'gi'
559
+ },
560
+ {
561
+ type: 'regex',
562
+ pattern: 'preg_replace\\s*\\([^)]*\\/e[\'"]',
563
+ flags: 'gi'
564
+ }
565
+ ],
566
+ remediation: 'This appears to be a web shell. Remove immediately. Investigate system for other compromises. Check web server logs for unauthorized access.',
567
+ enabled: true,
568
+ tags: ['webshell', 'backdoor', 'rce', 'critical']
569
+ }
570
+ ];
571
+
572
+ /**
573
+ * Cryptominer Detection Rules
574
+ */
575
+ const cryptominerRules: Rule[] = [
576
+ {
577
+ id: 'MAL-CRYPT-001',
578
+ name: 'Cryptocurrency Mining Code',
579
+ description: 'Code patterns associated with cryptocurrency mining detected. This may indicate unauthorized use of computing resources.',
580
+ languages: ['javascript', 'typescript', 'python', 'php'],
581
+ threatType: ThreatType.CRYPTOMINER,
582
+ category: FindingCategory.MALWARE,
583
+ severity: Severity.HIGH,
584
+ standards: getStandardsForThreat(ThreatType.CRYPTOMINER),
585
+ patterns: [
586
+ {
587
+ type: 'regex',
588
+ pattern: 'coinhive|cryptoloot|coin-hive|coinimp|cryptonight',
589
+ flags: 'gi'
590
+ },
591
+ {
592
+ type: 'regex',
593
+ pattern: 'stratum\\+tcp:\\/\\/',
594
+ flags: 'gi'
595
+ },
596
+ {
597
+ type: 'regex',
598
+ pattern: 'xmrig|xmr-stak|minerd|cgminer',
599
+ flags: 'gi'
600
+ },
601
+ {
602
+ type: 'regex',
603
+ pattern: 'CryptoNight|RandomX|Ethash',
604
+ flags: 'g'
605
+ },
606
+ {
607
+ type: 'regex',
608
+ pattern: 'miner\\.(?:start|stop|mine)',
609
+ flags: 'gi'
610
+ },
611
+ {
612
+ type: 'regex',
613
+ pattern: 'hashrate|nonce.*difficulty',
614
+ flags: 'gi'
615
+ }
616
+ ],
617
+ remediation: 'Remove cryptocurrency mining code immediately. This is resource theft. Investigate how this code was introduced and review access controls.',
618
+ enabled: true,
619
+ tags: ['cryptominer', 'resource-abuse', 'malware']
620
+ }
621
+ ];
622
+
623
+ /**
624
+ * Keylogger Detection Rules
625
+ */
626
+ const keyloggerRules: Rule[] = [
627
+ {
628
+ id: 'MAL-KEY-001',
629
+ name: 'Potential Keylogger',
630
+ description: 'Code pattern consistent with keylogging behavior detected. Keyloggers capture and potentially exfiltrate user keystrokes.',
631
+ languages: ['javascript', 'typescript', 'python', 'csharp', 'c', 'cpp'],
632
+ threatType: ThreatType.KEYLOGGER,
633
+ category: FindingCategory.MALWARE,
634
+ severity: Severity.CRITICAL,
635
+ standards: getStandardsForThreat(ThreatType.KEYLOGGER),
636
+ patterns: [
637
+ {
638
+ type: 'regex',
639
+ pattern: 'addEventListener\\s*\\([\'"]key(?:down|up|press)[\'"]',
640
+ flags: 'gi'
641
+ },
642
+ {
643
+ type: 'regex',
644
+ pattern: 'onkey(?:down|up|press)\\s*=',
645
+ flags: 'gi'
646
+ },
647
+ {
648
+ type: 'regex',
649
+ pattern: 'pynput\\.keyboard\\.Listener',
650
+ flags: 'gi'
651
+ },
652
+ {
653
+ type: 'regex',
654
+ pattern: 'GetAsyncKeyState|SetWindowsHookEx.*WH_KEYBOARD',
655
+ flags: 'gi'
656
+ },
657
+ {
658
+ type: 'regex',
659
+ pattern: 'keyboard\\.on_(?:press|release)',
660
+ flags: 'gi'
661
+ }
662
+ ],
663
+ remediation: 'This code captures keyboard input. If not intentional for legitimate purposes (like accessibility), remove immediately and investigate.',
664
+ enabled: true,
665
+ tags: ['keylogger', 'spyware', 'malware', 'critical']
666
+ }
667
+ ];
668
+
669
+ /**
670
+ * Data Exfiltration Detection Rules
671
+ */
672
+ const exfiltrationRules: Rule[] = [
673
+ {
674
+ id: 'MAL-EXFIL-001',
675
+ name: 'Suspicious Data Exfiltration',
676
+ description: 'Code pattern suggests collection and transmission of sensitive data to external endpoints.',
677
+ languages: ['javascript', 'typescript', 'python', 'php'],
678
+ threatType: ThreatType.DATA_EXFILTRATION,
679
+ category: FindingCategory.MALWARE,
680
+ severity: Severity.CRITICAL,
681
+ standards: getStandardsForThreat(ThreatType.DATA_EXFILTRATION),
682
+ patterns: [
683
+ {
684
+ type: 'regex',
685
+ pattern: 'document\\.cookie.*(?:fetch|XMLHttpRequest|ajax|axios)',
686
+ flags: 'gis'
687
+ },
688
+ {
689
+ type: 'regex',
690
+ pattern: 'localStorage.*(?:fetch|XMLHttpRequest|ajax)',
691
+ flags: 'gis'
692
+ },
693
+ {
694
+ type: 'regex',
695
+ pattern: '(?:password|credit|ssn|secret).*(?:http|fetch|post)',
696
+ flags: 'gis'
697
+ },
698
+ {
699
+ type: 'regex',
700
+ pattern: 'navigator\\.(?:credentials|clipboard).*fetch',
701
+ flags: 'gis'
702
+ }
703
+ ],
704
+ remediation: 'This code appears to collect and transmit sensitive data. Verify this is intentional and authorized. If not, remove immediately and audit data flows.',
705
+ enabled: true,
706
+ tags: ['exfiltration', 'data-theft', 'malware']
707
+ }
708
+ ];
709
+
710
+ /**
711
+ * Obfuscated Code Detection Rules
712
+ */
713
+ const obfuscationRules: Rule[] = [
714
+ {
715
+ id: 'MAL-OBF-001',
716
+ name: 'Heavily Obfuscated Code',
717
+ description: 'Code appears to be heavily obfuscated, potentially hiding malicious functionality. Legitimate code rarely requires this level of obfuscation.',
718
+ languages: ['javascript', 'typescript', 'python', 'php'],
719
+ threatType: ThreatType.OBFUSCATED_CODE,
720
+ category: FindingCategory.MALWARE,
721
+ severity: Severity.HIGH,
722
+ standards: getStandardsForThreat(ThreatType.OBFUSCATED_CODE),
723
+ patterns: [
724
+ {
725
+ type: 'regex',
726
+ pattern: '\\\\x[0-9a-f]{2}(?:\\\\x[0-9a-f]{2}){10,}',
727
+ flags: 'gi'
728
+ },
729
+ {
730
+ type: 'regex',
731
+ pattern: '\\\\u[0-9a-f]{4}(?:\\\\u[0-9a-f]{4}){10,}',
732
+ flags: 'gi'
733
+ },
734
+ {
735
+ type: 'regex',
736
+ pattern: 'String\\.fromCharCode\\s*\\([^)]{50,}\\)',
737
+ flags: 'gi'
738
+ },
739
+ {
740
+ type: 'regex',
741
+ pattern: 'atob\\s*\\([\'"][A-Za-z0-9+/=]{100,}[\'"]\\)',
742
+ flags: 'g'
743
+ },
744
+ {
745
+ type: 'regex',
746
+ pattern: 'eval\\s*\\(\\s*(?:atob|Buffer\\.from|unescape)',
747
+ flags: 'gi'
748
+ },
749
+ {
750
+ type: 'regex',
751
+ pattern: '_0x[a-f0-9]{4,}',
752
+ flags: 'gi'
753
+ }
754
+ ],
755
+ remediation: 'Heavily obfuscated code should be investigated. Deobfuscate and review the actual functionality. Consider removing if source cannot be verified.',
756
+ enabled: true,
757
+ tags: ['obfuscation', 'suspicious', 'malware']
758
+ }
759
+ ];
760
+
761
+ /**
762
+ * Embedded Payload Detection Rules
763
+ */
764
+ const payloadRules: Rule[] = [
765
+ {
766
+ id: 'MAL-PAYLOAD-001',
767
+ name: 'Embedded Binary Payload',
768
+ description: 'Large base64-encoded or hex-encoded data detected that may contain embedded malware or executable payloads.',
769
+ languages: ['javascript', 'typescript', 'python', 'php', 'java', 'csharp'],
770
+ threatType: ThreatType.EMBEDDED_PAYLOAD,
771
+ category: FindingCategory.MALWARE,
772
+ severity: Severity.HIGH,
773
+ standards: getStandardsForThreat(ThreatType.EMBEDDED_PAYLOAD),
774
+ patterns: [
775
+ {
776
+ type: 'regex',
777
+ pattern: '[\'"][A-Za-z0-9+/]{500,}={0,2}[\'"]',
778
+ flags: 'g'
779
+ },
780
+ {
781
+ type: 'regex',
782
+ pattern: '(?:4d5a|7f454c46|cafebabe)[0-9a-f]{100,}',
783
+ flags: 'gi'
784
+ },
785
+ {
786
+ type: 'regex',
787
+ pattern: 'base64\\.b64decode\\s*\\([\'"][A-Za-z0-9+/]{200,}',
788
+ flags: 'g'
789
+ }
790
+ ],
791
+ remediation: 'Large embedded binary data should be investigated. Extract and analyze the payload. If legitimate, document its purpose; otherwise, remove.',
792
+ enabled: true,
793
+ tags: ['payload', 'binary', 'embedded', 'malware']
794
+ }
795
+ ];
796
+
797
+ /**
798
+ * Suspicious Network Activity Rules
799
+ */
800
+ const networkRules: Rule[] = [
801
+ {
802
+ id: 'MAL-NET-001',
803
+ name: 'Suspicious External Connection',
804
+ description: 'Code makes connections to external IP addresses or suspicious domains. This may indicate C2 communication or data exfiltration.',
805
+ languages: ['javascript', 'typescript', 'python', 'php', 'java', 'csharp'],
806
+ threatType: ThreatType.SUSPICIOUS_NETWORK,
807
+ category: FindingCategory.MALWARE,
808
+ severity: Severity.MEDIUM,
809
+ standards: getStandardsForThreat(ThreatType.SUSPICIOUS_NETWORK),
810
+ patterns: [
811
+ {
812
+ type: 'regex',
813
+ pattern: '(?:fetch|axios|request|http).*(?:pastebin|hastebin|ghostbin)',
814
+ flags: 'gi'
815
+ },
816
+ {
817
+ type: 'regex',
818
+ pattern: '(?:fetch|axios|request).*\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}',
819
+ flags: 'gi'
820
+ },
821
+ {
822
+ type: 'regex',
823
+ pattern: '\\.(?:onion|bit|i2p)[\\/\\s\\\'\\"]',
824
+ flags: 'gi'
825
+ },
826
+ {
827
+ type: 'regex',
828
+ pattern: 'ngrok\\.io|serveo\\.net|localhost\\.run',
829
+ flags: 'gi'
830
+ }
831
+ ],
832
+ remediation: 'Review all external network connections. Verify destinations are legitimate and authorized. Block unauthorized external communications.',
833
+ enabled: true,
834
+ tags: ['network', 'c2', 'suspicious', 'malware']
835
+ }
836
+ ];
837
+
838
+ /**
839
+ * Malicious Loader Detection Rules
840
+ */
841
+ const loaderRules: Rule[] = [
842
+ {
843
+ id: 'MAL-LOAD-001',
844
+ name: 'Dynamic Code Loading',
845
+ description: 'Code dynamically loads and executes external content. This is a common technique for loading malware payloads.',
846
+ languages: ['javascript', 'typescript', 'python', 'php'],
847
+ threatType: ThreatType.MALICIOUS_LOADER,
848
+ category: FindingCategory.MALWARE,
849
+ severity: Severity.HIGH,
850
+ standards: getStandardsForThreat(ThreatType.MALICIOUS_LOADER),
851
+ patterns: [
852
+ {
853
+ type: 'regex',
854
+ pattern: 'eval\\s*\\(\\s*(?:fetch|axios|request|http\\.get)',
855
+ flags: 'gis'
856
+ },
857
+ {
858
+ type: 'regex',
859
+ pattern: 'document\\.write\\s*\\([\'"]<script[^>]*src=',
860
+ flags: 'gi'
861
+ },
862
+ {
863
+ type: 'regex',
864
+ pattern: 'exec\\s*\\(\\s*(?:urllib|requests)\\.get',
865
+ flags: 'gis'
866
+ },
867
+ {
868
+ type: 'regex',
869
+ pattern: '\\.createElement\\s*\\([\'"]script[\'"]\\)[\\s\\S]*\\.src\\s*=',
870
+ flags: 'gim'
871
+ }
872
+ ],
873
+ remediation: 'Dynamic code loading from external sources is dangerous. Use Content Security Policy. Verify all external code sources and use integrity checks.',
874
+ enabled: true,
875
+ tags: ['loader', 'dynamic', 'remote-code', 'malware']
876
+ }
877
+ ];
878
+
879
+ /**
880
+ * Export all malware rules (LEGACY COMPATIBILITY)
881
+ * For backward compatibility with existing codebase
882
+ */
883
+ export const malwareRules: Rule[] = [
884
+ ...backdoorRules,
885
+ ...cryptominerRules,
886
+ ...keyloggerRules,
887
+ ...exfiltrationRules,
888
+ ...obfuscationRules,
889
+ ...payloadRules,
890
+ ...networkRules,
891
+ ...loaderRules
892
+ ];
893
+
894
+ // ============================================================================
895
+ // DEFAULT EXPORT
896
+ // ============================================================================
897
+
898
+ export default {
899
+ // New Engine API
900
+ MalwareRuleEngine,
901
+ createMalwareEngine,
902
+ createCriticalOnlyEngine,
903
+ createCustomEngine,
904
+
905
+ // New Rules (v2)
906
+ allMalwareRules,
907
+ backdoorRulesV2: newBackdoorRules,
908
+ cryptominerRules,
909
+ keyloggerRules,
910
+ exfiltrationRules,
911
+ obfuscationRules,
912
+ loaderRules,
913
+ networkRules,
914
+
915
+ // Convenience functions
916
+ scanForMalware,
917
+ hasMalwareCategory,
918
+ generateMalwareReport,
919
+ getModuleInfo,
920
+
921
+ // Legacy compatibility
922
+ malwareRules,
923
+ backdoorRules,
924
+
925
+ // Metadata
926
+ MALWARE_MODULE_INFO
927
+ };
928
+