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,391 @@
1
+ /**
2
+ * Tipos principales para Secure-Scan SAST
3
+ * Definiciones de tipos para análisis de seguridad
4
+ */
5
+
6
+ /**
7
+ * Lenguajes de programación soportados para análisis
8
+ */
9
+ export type SupportedLanguage =
10
+ | 'javascript'
11
+ | 'typescript'
12
+ | 'python'
13
+ | 'php'
14
+ | 'java'
15
+ | 'c'
16
+ | 'cpp'
17
+ | 'csharp'
18
+ | 'dockerfile'
19
+ | 'yaml'
20
+ | 'terraform';
21
+
22
+ /**
23
+ * Severity levels for findings
24
+ */
25
+ export enum Severity {
26
+ INFO = 'info',
27
+ LOW = 'low',
28
+ MEDIUM = 'medium',
29
+ HIGH = 'high',
30
+ CRITICAL = 'critical'
31
+ }
32
+
33
+ /**
34
+ * Security standard references
35
+ */
36
+ export interface SecurityStandard {
37
+ /** Standard name (OWASP, CWE, MITRE, SANS) */
38
+ name: 'OWASP' | 'CWE' | 'MITRE' | 'SANS';
39
+ /** Standard ID (e.g., CWE-79, A01:2021) */
40
+ id: string;
41
+ /** Standard title */
42
+ title: string;
43
+ /** Standard description */
44
+ description: string;
45
+ /** URL to standard documentation */
46
+ url?: string;
47
+ }
48
+
49
+ /**
50
+ * Type of threat detected
51
+ */
52
+ export enum ThreatType {
53
+ // Vulnerabilities
54
+ SQL_INJECTION = 'sql_injection',
55
+ COMMAND_INJECTION = 'command_injection',
56
+ XSS = 'xss',
57
+ CSRF = 'csrf',
58
+ INSECURE_DESERIALIZATION = 'insecure_deserialization',
59
+ HARDCODED_CREDENTIALS = 'hardcoded_credentials',
60
+ PATH_TRAVERSAL = 'path_traversal',
61
+ LDAP_INJECTION = 'ldap_injection',
62
+ INSECURE_CRYPTO = 'insecure_crypto',
63
+ WEAK_RANDOM = 'weak_random',
64
+ DANGEROUS_FUNCTION = 'dangerous_function',
65
+ VULNERABLE_DEPENDENCY = 'vulnerable_dependency',
66
+ INFORMATION_DISCLOSURE = 'information_disclosure',
67
+ BROKEN_ACCESS_CONTROL = 'broken_access_control',
68
+ SECURITY_MISCONFIGURATION = 'security_misconfiguration',
69
+
70
+ // Malware
71
+ BACKDOOR = 'backdoor',
72
+ KEYLOGGER = 'keylogger',
73
+ CRYPTOMINER = 'cryptominer',
74
+ OBFUSCATED_CODE = 'obfuscated_code',
75
+ EMBEDDED_PAYLOAD = 'embedded_payload',
76
+ REVERSE_SHELL = 'reverse_shell',
77
+ DATA_EXFILTRATION = 'data_exfiltration',
78
+ SUSPICIOUS_NETWORK = 'suspicious_network',
79
+ MALICIOUS_LOADER = 'malicious_loader'
80
+ }
81
+
82
+ /**
83
+ * Category of finding
84
+ */
85
+ export enum FindingCategory {
86
+ VULNERABILITY = 'vulnerability',
87
+ MALWARE = 'malware',
88
+ CODE_SMELL = 'code_smell',
89
+ BEST_PRACTICE = 'best_practice'
90
+ }
91
+
92
+ /**
93
+ * Source location in code
94
+ */
95
+ export interface SourceLocation {
96
+ /** File path relative to project root */
97
+ file: string;
98
+ /** Start line number (1-indexed) */
99
+ startLine: number;
100
+ /** End line number (1-indexed) */
101
+ endLine: number;
102
+ /** Start column (optional) */
103
+ startColumn?: number;
104
+ /** End column (optional) */
105
+ endColumn?: number;
106
+ }
107
+
108
+ /**
109
+ * Code snippet with context
110
+ */
111
+ export interface CodeSnippet {
112
+ /** The vulnerable/malicious code */
113
+ code: string;
114
+ /** Lines before for context */
115
+ contextBefore?: string;
116
+ /** Lines after for context */
117
+ contextAfter?: string;
118
+ /** Highlighted portion */
119
+ highlight?: {
120
+ start: number;
121
+ end: number;
122
+ };
123
+ }
124
+
125
+ /**
126
+ * Security finding from analysis
127
+ */
128
+ export interface Finding {
129
+ /** Unique finding ID */
130
+ id: string;
131
+ /** Finding title */
132
+ title: string;
133
+ /** Detailed description */
134
+ description: string;
135
+ /** Severity level */
136
+ severity: Severity;
137
+ /** Type of threat */
138
+ threatType: ThreatType;
139
+ /** Category of finding */
140
+ category: FindingCategory;
141
+ /** Source location */
142
+ location: SourceLocation;
143
+ /** Code snippet */
144
+ snippet: CodeSnippet;
145
+ /** Related security standards */
146
+ standards: SecurityStandard[];
147
+ /** Remediation advice */
148
+ remediation: string;
149
+ /** Confidence level (0-100) */
150
+ confidence: number;
151
+ /** Detected by which analyzer */
152
+ analyzer: string;
153
+ /** Detection timestamp */
154
+ timestamp: Date;
155
+ /** Tags for categorization */
156
+ tags: string[];
157
+ /** AI-generated explanation (if available) */
158
+ aiExplanation?: string;
159
+ /** Suggested fix (if available) */
160
+ suggestedFix?: string;
161
+ }
162
+
163
+ /**
164
+ * File information for scanning
165
+ */
166
+ export interface ScannedFile {
167
+ /** Absolute file path */
168
+ absolutePath: string;
169
+ /** Relative path from project root */
170
+ relativePath: string;
171
+ /** File extension */
172
+ extension: string;
173
+ /** Detected language */
174
+ language: SupportedLanguage | null;
175
+ /** File size in bytes */
176
+ size: number;
177
+ /** File content */
178
+ content: string;
179
+ /** Line count */
180
+ lineCount: number;
181
+ /** SHA256 hash of content */
182
+ hash: string;
183
+ }
184
+
185
+ /**
186
+ * Scan statistics
187
+ */
188
+ export interface ScanStats {
189
+ /** Total files scanned */
190
+ totalFiles: number;
191
+ /** Total lines of code */
192
+ totalLines: number;
193
+ /** Files by language */
194
+ filesByLanguage: Record<string, number>;
195
+ /** Findings by severity */
196
+ findingsBySeverity: Record<Severity, number>;
197
+ /** Findings by category */
198
+ findingsByCategory: Record<FindingCategory, number>;
199
+ /** Scan duration in milliseconds */
200
+ duration: number;
201
+ /** Scan start time */
202
+ startTime: Date;
203
+ /** Scan end time */
204
+ endTime: Date;
205
+ }
206
+
207
+ /**
208
+ * Complete scan result
209
+ */
210
+ export interface ScanResult {
211
+ /** Project path */
212
+ projectPath: string;
213
+ /** Project name */
214
+ projectName: string;
215
+ /** Scan ID */
216
+ scanId: string;
217
+ /** All findings */
218
+ findings: Finding[];
219
+ /** Scan statistics */
220
+ stats: ScanStats;
221
+ /** Risk score (0-100) */
222
+ riskScore: number;
223
+ /** Risk level */
224
+ riskLevel: 'safe' | 'low' | 'medium' | 'high' | 'critical';
225
+ /** Scanned files */
226
+ scannedFiles: ScannedFile[];
227
+ /** Configuration used */
228
+ config: ScanConfig;
229
+ }
230
+
231
+ /**
232
+ * Scan configuration
233
+ */
234
+ export interface ScanConfig {
235
+ /** Project path to scan */
236
+ projectPath: string;
237
+ /** Output file path */
238
+ outputPath?: string;
239
+ /** Languages to analyze */
240
+ languages?: SupportedLanguage[];
241
+ /** Patterns to exclude */
242
+ exclude?: string[];
243
+ /** Minimum severity to report */
244
+ minSeverity?: Severity;
245
+ /** Enable AI analysis */
246
+ useAI?: boolean;
247
+ /** AI provider configuration */
248
+ aiConfig?: AIConfig;
249
+ /** Verbose output */
250
+ verbose?: boolean;
251
+ /** Custom rules */
252
+ customRules?: string[];
253
+ /** Disabled rules */
254
+ disabledRules?: string[];
255
+ /** Maximum file size to scan (bytes) */
256
+ maxFileSize?: number;
257
+ /** Timeout per file (ms) */
258
+ fileTimeout?: number;
259
+ /** Report language (es = Spanish, en = English) */
260
+ language?: 'es' | 'en';
261
+ }
262
+
263
+ /**
264
+ * AI configuration
265
+ */
266
+ export interface AIConfig {
267
+ /** AI provider (auto-detected if not specified) */
268
+ provider: 'openai' | 'anthropic' | 'google' | 'gemini' | 'local' | 'auto';
269
+ /** API key */
270
+ apiKey?: string;
271
+ /** Model to use */
272
+ model?: string;
273
+ /** API endpoint (for local models) */
274
+ endpoint?: string;
275
+ /** Max tokens per request */
276
+ maxTokens?: number;
277
+ /** Temperature for generation */
278
+ temperature?: number;
279
+ /** Performance options for local models */
280
+ performance?: LocalAIPerformanceConfig;
281
+ }
282
+
283
+ /**
284
+ * Performance configuration for local AI models
285
+ */
286
+ export interface LocalAIPerformanceConfig {
287
+ /** Number of parallel requests (default: 1) */
288
+ parallelRequests?: number;
289
+ /** Number of GPU layers to use (-1 for all, 0 for CPU only) */
290
+ numGpuLayers?: number;
291
+ /** Number of threads to use (default: auto) */
292
+ numThreads?: number;
293
+ /** Context size in tokens (default: 4096) */
294
+ contextSize?: number;
295
+ /** Batch size for processing (default: 512) */
296
+ batchSize?: number;
297
+ /** Enable result caching */
298
+ enableCache?: boolean;
299
+ /** Use mmap for model loading */
300
+ useMmap?: boolean;
301
+ /** Use mlock to keep model in memory */
302
+ useMlock?: boolean;
303
+ /** Timeout per request in milliseconds (default: 120000) */
304
+ timeout?: number;
305
+ }
306
+
307
+ /**
308
+ * Rule definition for detection
309
+ */
310
+ export interface Rule {
311
+ /** Unique rule ID */
312
+ id: string;
313
+ /** Rule name */
314
+ name: string;
315
+ /** Rule description */
316
+ description: string;
317
+ /** Languages this rule applies to */
318
+ languages: SupportedLanguage[];
319
+ /** Threat type this rule detects */
320
+ threatType: ThreatType;
321
+ /** Category */
322
+ category: FindingCategory;
323
+ /** Default severity */
324
+ severity: Severity;
325
+ /** Related standards */
326
+ standards: SecurityStandard[];
327
+ /** Detection patterns */
328
+ patterns: RulePattern[];
329
+ /** Remediation template */
330
+ remediation: string;
331
+ /** Is rule enabled by default */
332
+ enabled: boolean;
333
+ /** Tags */
334
+ tags: string[];
335
+ }
336
+
337
+ /**
338
+ * Pattern for rule matching
339
+ */
340
+ export interface RulePattern {
341
+ /** Pattern type */
342
+ type: 'regex' | 'ast' | 'semantic';
343
+ /** Pattern value */
344
+ pattern: string;
345
+ /** Pattern flags */
346
+ flags?: string;
347
+ /** Additional conditions */
348
+ conditions?: PatternCondition[];
349
+ }
350
+
351
+ /**
352
+ * Condition for pattern matching
353
+ */
354
+ export interface PatternCondition {
355
+ /** Condition type */
356
+ type: 'context' | 'scope' | 'dataflow';
357
+ /** Condition value */
358
+ value: string;
359
+ /** Is negated */
360
+ negated?: boolean;
361
+ }
362
+
363
+ /**
364
+ * Analyzer plugin interface
365
+ */
366
+ export interface Analyzer {
367
+ /** Analyzer name */
368
+ name: string;
369
+ /** Supported languages */
370
+ languages: SupportedLanguage[];
371
+ /** Analyzer version */
372
+ version: string;
373
+ /** Initialize analyzer */
374
+ initialize(): Promise<void>;
375
+ /** Analyze a file */
376
+ analyze(file: ScannedFile, rules: Rule[]): Promise<Finding[]>;
377
+ /** Cleanup resources */
378
+ cleanup(): Promise<void>;
379
+ }
380
+
381
+ /**
382
+ * Report generator interface
383
+ */
384
+ export interface ReportGenerator {
385
+ /** Generator name */
386
+ name: string;
387
+ /** Output format */
388
+ format: 'html' | 'json' | 'pdf' | 'sarif';
389
+ /** Generate report */
390
+ generate(result: ScanResult): Promise<string>;
391
+ }
@@ -0,0 +1,306 @@
1
+ /**
2
+ * Utility Functions for Secure-Scan
3
+ */
4
+
5
+ import * as crypto from 'crypto';
6
+ import * as path from 'path';
7
+ import { SupportedLanguage, Severity } from '../types';
8
+
9
+ /**
10
+ * Generate a unique ID
11
+ */
12
+ export function generateId(): string {
13
+ return `SS-${Date.now().toString(36)}-${crypto.randomBytes(4).toString('hex')}`;
14
+ }
15
+
16
+ /**
17
+ * Calculate SHA256 hash of content
18
+ */
19
+ export function calculateHash(content: string): string {
20
+ return crypto.createHash('sha256').update(content).digest('hex');
21
+ }
22
+
23
+ /**
24
+ * Get language from file extension
25
+ */
26
+ export function getLanguageFromExtension(filePath: string): SupportedLanguage | null {
27
+ const ext = path.extname(filePath).toLowerCase();
28
+
29
+ const extensionMap: Record<string, SupportedLanguage> = {
30
+ '.js': 'javascript',
31
+ '.jsx': 'javascript',
32
+ '.mjs': 'javascript',
33
+ '.cjs': 'javascript',
34
+ '.ts': 'typescript',
35
+ '.tsx': 'typescript',
36
+ '.py': 'python',
37
+ '.pyw': 'python',
38
+ '.php': 'php',
39
+ '.phtml': 'php',
40
+ '.php3': 'php',
41
+ '.php4': 'php',
42
+ '.php5': 'php',
43
+ '.java': 'java',
44
+ '.c': 'c',
45
+ '.h': 'c',
46
+ '.cpp': 'cpp',
47
+ '.cc': 'cpp',
48
+ '.cxx': 'cpp',
49
+ '.hpp': 'cpp',
50
+ '.hxx': 'cpp',
51
+ '.cs': 'csharp',
52
+ '.dockerfile': 'dockerfile',
53
+ '.yaml': 'yaml',
54
+ '.yml': 'yaml',
55
+ '.tf': 'terraform',
56
+ '.tfvars': 'terraform'
57
+ };
58
+
59
+ // Check for Dockerfile without extension
60
+ if (path.basename(filePath).toLowerCase() === 'dockerfile') {
61
+ return 'dockerfile';
62
+ }
63
+
64
+ return extensionMap[ext] || null;
65
+ }
66
+
67
+ /**
68
+ * Check if file should be excluded
69
+ */
70
+ export function shouldExclude(filePath: string, excludePatterns: string[]): boolean {
71
+ const normalizedPath = filePath.replace(/\\/g, '/');
72
+
73
+ const defaultExcludes = [
74
+ 'node_modules',
75
+ 'vendor',
76
+ '.git',
77
+ 'dist',
78
+ 'build',
79
+ 'out',
80
+ '__pycache__',
81
+ '.venv',
82
+ 'venv',
83
+ '.env',
84
+ 'coverage',
85
+ '.nyc_output',
86
+ '.next',
87
+ '.nuxt'
88
+ ];
89
+
90
+ const allExcludes = [...defaultExcludes, ...excludePatterns];
91
+
92
+ return allExcludes.some(pattern => {
93
+ // Simple pattern matching
94
+ if (normalizedPath.includes(`/${pattern}/`) ||
95
+ normalizedPath.includes(`/${pattern}`) ||
96
+ normalizedPath.startsWith(`${pattern}/`)) {
97
+ return true;
98
+ }
99
+ return false;
100
+ });
101
+ }
102
+
103
+ /**
104
+ * Get file extension for syntax highlighting
105
+ */
106
+ export function getHighlightLanguage(language: SupportedLanguage | null): string {
107
+ const highlightMap: Record<SupportedLanguage, string> = {
108
+ 'javascript': 'javascript',
109
+ 'typescript': 'typescript',
110
+ 'python': 'python',
111
+ 'php': 'php',
112
+ 'java': 'java',
113
+ 'c': 'c',
114
+ 'cpp': 'cpp',
115
+ 'csharp': 'csharp',
116
+ 'dockerfile': 'dockerfile',
117
+ 'yaml': 'yaml',
118
+ 'terraform': 'hcl'
119
+ };
120
+
121
+ return language ? highlightMap[language] : 'plaintext';
122
+ }
123
+
124
+ /**
125
+ * Extract code context around a line
126
+ */
127
+ export function extractCodeContext(
128
+ content: string,
129
+ lineNumber: number,
130
+ contextLines: number = 3
131
+ ): { code: string; contextBefore: string; contextAfter: string } {
132
+ const lines = content.split('\n');
133
+ const targetLine = lineNumber - 1; // Convert to 0-indexed
134
+
135
+ const startBefore = Math.max(0, targetLine - contextLines);
136
+ const endAfter = Math.min(lines.length, targetLine + contextLines + 1);
137
+
138
+ const contextBefore = lines.slice(startBefore, targetLine).join('\n');
139
+ const code = lines[targetLine] || '';
140
+ const contextAfter = lines.slice(targetLine + 1, endAfter).join('\n');
141
+
142
+ return { code, contextBefore, contextAfter };
143
+ }
144
+
145
+ /**
146
+ * Count lines in content
147
+ */
148
+ export function countLines(content: string): number {
149
+ return content.split('\n').length;
150
+ }
151
+
152
+ /**
153
+ * Severity to numeric value for comparison
154
+ */
155
+ export function severityToNumber(severity: Severity): number {
156
+ const map: Record<Severity, number> = {
157
+ [Severity.INFO]: 0,
158
+ [Severity.LOW]: 1,
159
+ [Severity.MEDIUM]: 2,
160
+ [Severity.HIGH]: 3,
161
+ [Severity.CRITICAL]: 4
162
+ };
163
+ return map[severity];
164
+ }
165
+
166
+ /**
167
+ * Compare severities
168
+ */
169
+ export function isHigherOrEqualSeverity(a: Severity, b: Severity): boolean {
170
+ return severityToNumber(a) >= severityToNumber(b);
171
+ }
172
+
173
+ /**
174
+ * Get severity color for reporting
175
+ */
176
+ export function getSeverityColor(severity: Severity): string {
177
+ const colors: Record<Severity, string> = {
178
+ [Severity.INFO]: '#17a2b8',
179
+ [Severity.LOW]: '#28a745',
180
+ [Severity.MEDIUM]: '#ffc107',
181
+ [Severity.HIGH]: '#fd7e14',
182
+ [Severity.CRITICAL]: '#dc3545'
183
+ };
184
+ return colors[severity];
185
+ }
186
+
187
+ /**
188
+ * Get severity badge class
189
+ */
190
+ export function getSeverityBadge(severity: Severity): string {
191
+ const badges: Record<Severity, string> = {
192
+ [Severity.INFO]: 'badge-info',
193
+ [Severity.LOW]: 'badge-success',
194
+ [Severity.MEDIUM]: 'badge-warning',
195
+ [Severity.HIGH]: 'badge-orange',
196
+ [Severity.CRITICAL]: 'badge-danger'
197
+ };
198
+ return badges[severity];
199
+ }
200
+
201
+ /**
202
+ * Format duration for display
203
+ */
204
+ export function formatDuration(ms: number): string {
205
+ if (ms < 1000) {
206
+ return `${ms}ms`;
207
+ }
208
+ if (ms < 60000) {
209
+ return `${(ms / 1000).toFixed(2)}s`;
210
+ }
211
+ const minutes = Math.floor(ms / 60000);
212
+ const seconds = ((ms % 60000) / 1000).toFixed(0);
213
+ return `${minutes}m ${seconds}s`;
214
+ }
215
+
216
+ /**
217
+ * Escape HTML for safe display
218
+ */
219
+ export function escapeHtml(text: string): string {
220
+ const escapeMap: Record<string, string> = {
221
+ '&': '&amp;',
222
+ '<': '&lt;',
223
+ '>': '&gt;',
224
+ '"': '&quot;',
225
+ "'": '&#039;'
226
+ };
227
+ return text.replace(/[&<>"']/g, char => escapeMap[char]);
228
+ }
229
+
230
+ /**
231
+ * Truncate text with ellipsis
232
+ */
233
+ export function truncate(text: string, maxLength: number): string {
234
+ if (text.length <= maxLength) return text;
235
+ return text.substring(0, maxLength - 3) + '...';
236
+ }
237
+
238
+ /**
239
+ * Check if string looks like Base64
240
+ */
241
+ export function isBase64Like(str: string): boolean {
242
+ // Check if string looks like base64 encoded content
243
+ if (str.length < 20) return false;
244
+ const base64Regex = /^[A-Za-z0-9+/=]{20,}$/;
245
+ return base64Regex.test(str.replace(/\s/g, ''));
246
+ }
247
+
248
+ /**
249
+ * Check if string looks like hex encoded
250
+ */
251
+ export function isHexEncoded(str: string): boolean {
252
+ if (str.length < 20 || str.length % 2 !== 0) return false;
253
+ const hexRegex = /^[0-9a-fA-F]+$/;
254
+ return hexRegex.test(str);
255
+ }
256
+
257
+ /**
258
+ * Calculate Shannon entropy of a string
259
+ * High entropy suggests encrypted/compressed/obfuscated content
260
+ */
261
+ export function calculateEntropy(str: string): number {
262
+ if (str.length === 0) return 0;
263
+
264
+ const frequencies: Record<string, number> = {};
265
+ for (const char of str) {
266
+ frequencies[char] = (frequencies[char] || 0) + 1;
267
+ }
268
+
269
+ let entropy = 0;
270
+ const len = str.length;
271
+ for (const count of Object.values(frequencies)) {
272
+ const probability = count / len;
273
+ entropy -= probability * Math.log2(probability);
274
+ }
275
+
276
+ return entropy;
277
+ }
278
+
279
+ /**
280
+ * Check if code appears obfuscated based on entropy and patterns
281
+ */
282
+ export function looksObfuscated(code: string): boolean {
283
+ // Check entropy - obfuscated code tends to have higher entropy
284
+ const entropy = calculateEntropy(code);
285
+ if (entropy > 5.5) return true;
286
+
287
+ // Check for common obfuscation patterns
288
+ const obfuscationPatterns = [
289
+ /\\x[0-9a-f]{2}/gi, // Hex escape sequences
290
+ /\\u[0-9a-f]{4}/gi, // Unicode escape sequences
291
+ /['"][^'"]{100,}['"]/g, // Very long strings
292
+ /\b[a-z]{1}[0-9]{4,}\b/gi, // Variables like a12345
293
+ /\(\s*function\s*\(\s*\)\s*{[\s\S]*}\s*\)\s*\(\s*\)/g, // IIFE obfuscation
294
+ /eval\s*\(\s*atob\s*\(/gi, // eval(atob(...))
295
+ /String\.fromCharCode/gi, // Character code generation
296
+ ];
297
+
298
+ let patternMatches = 0;
299
+ for (const pattern of obfuscationPatterns) {
300
+ if (pattern.test(code)) {
301
+ patternMatches++;
302
+ }
303
+ }
304
+
305
+ return patternMatches >= 2;
306
+ }