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,200 @@
1
+ /**
2
+ * Security Standards for Dependency Analysis
3
+ * Maps dependency risks to OWASP, CWE, MITRE, and SANS standards
4
+ */
5
+
6
+ import { SecurityStandard } from '../../types';
7
+ import { DependencyRiskCategory } from '../types';
8
+
9
+ /**
10
+ * OWASP A06:2021 - Vulnerable and Outdated Components
11
+ */
12
+ const OWASP_A06: SecurityStandard = {
13
+ name: 'OWASP',
14
+ id: 'A06:2021',
15
+ title: 'Vulnerable and Outdated Components',
16
+ description: 'Components, such as libraries, frameworks, and other software modules, run with the same privileges as the application. If a vulnerable component is exploited, such an attack can facilitate serious data loss or server takeover.',
17
+ url: 'https://owasp.org/Top10/A06_2021-Vulnerable_and_Outdated_Components/'
18
+ };
19
+
20
+ /**
21
+ * CWE-937 - OWASP Top 10 2017 Category A9 - Using Components with Known Vulnerabilities
22
+ */
23
+ const CWE_937: SecurityStandard = {
24
+ name: 'CWE',
25
+ id: 'CWE-937',
26
+ title: 'Using Components with Known Vulnerabilities',
27
+ description: 'The product uses a component that has a known vulnerability.',
28
+ url: 'https://cwe.mitre.org/data/definitions/937.html'
29
+ };
30
+
31
+ /**
32
+ * CWE-1035 - OWASP Top 10 2017 Category A9 - Using Components with Known Vulnerabilities
33
+ */
34
+ const CWE_1035: SecurityStandard = {
35
+ name: 'CWE',
36
+ id: 'CWE-1035',
37
+ title: 'OWASP Top 10 2017 Category A9',
38
+ description: 'Weaknesses in this category are related to the A9 category Using Components with Known Vulnerabilities in the OWASP Top 10 2017.',
39
+ url: 'https://cwe.mitre.org/data/definitions/1035.html'
40
+ };
41
+
42
+ /**
43
+ * CWE-506 - Embedded Malicious Code
44
+ */
45
+ const CWE_506: SecurityStandard = {
46
+ name: 'CWE',
47
+ id: 'CWE-506',
48
+ title: 'Embedded Malicious Code',
49
+ description: 'The product contains code that appears to be malicious in nature.',
50
+ url: 'https://cwe.mitre.org/data/definitions/506.html'
51
+ };
52
+
53
+ /**
54
+ * CWE-829 - Inclusion of Functionality from Untrusted Control Sphere
55
+ */
56
+ const CWE_829: SecurityStandard = {
57
+ name: 'CWE',
58
+ id: 'CWE-829',
59
+ title: 'Inclusion of Functionality from Untrusted Control Sphere',
60
+ description: 'The product imports, requires, or includes executable functionality from a source that is outside of the intended control sphere.',
61
+ url: 'https://cwe.mitre.org/data/definitions/829.html'
62
+ };
63
+
64
+ /**
65
+ * CWE-1104 - Use of Unmaintained Third Party Components
66
+ */
67
+ const CWE_1104: SecurityStandard = {
68
+ name: 'CWE',
69
+ id: 'CWE-1104',
70
+ title: 'Use of Unmaintained Third Party Components',
71
+ description: 'The product relies on third-party components that are not actively supported or maintained by the original developer or a trusted proxy.',
72
+ url: 'https://cwe.mitre.org/data/definitions/1104.html'
73
+ };
74
+
75
+ /**
76
+ * MITRE ATT&CK - Supply Chain Compromise
77
+ */
78
+ const MITRE_SUPPLY_CHAIN: SecurityStandard = {
79
+ name: 'MITRE',
80
+ id: 'T1195',
81
+ title: 'Supply Chain Compromise',
82
+ description: 'Adversaries may manipulate products or product delivery mechanisms prior to receipt by a final consumer for the purpose of data or system compromise.',
83
+ url: 'https://attack.mitre.org/techniques/T1195/'
84
+ };
85
+
86
+ /**
87
+ * MITRE ATT&CK - Compromise Software Supply Chain
88
+ */
89
+ const MITRE_T1195_002: SecurityStandard = {
90
+ name: 'MITRE',
91
+ id: 'T1195.002',
92
+ title: 'Compromise Software Supply Chain',
93
+ description: 'Adversaries may manipulate application software prior to receipt by a final consumer for the purpose of data or system compromise.',
94
+ url: 'https://attack.mitre.org/techniques/T1195/002/'
95
+ };
96
+
97
+ /**
98
+ * SANS Top 25 - Related entries
99
+ */
100
+ const SANS_UNTRUSTED_INPUT: SecurityStandard = {
101
+ name: 'SANS',
102
+ id: 'SANS-1',
103
+ title: 'Improper Neutralization of Special Elements',
104
+ description: 'Failure to properly validate and sanitize input from untrusted sources.',
105
+ url: 'https://www.sans.org/top25-software-errors/'
106
+ };
107
+
108
+ /**
109
+ * Get standards for a specific CWE
110
+ */
111
+ function getCWEStandard(cweId: string): SecurityStandard | null {
112
+ const cweMap: Record<string, SecurityStandard> = {
113
+ 'CWE-937': CWE_937,
114
+ 'CWE-1035': CWE_1035,
115
+ 'CWE-506': CWE_506,
116
+ 'CWE-829': CWE_829,
117
+ 'CWE-1104': CWE_1104
118
+ };
119
+
120
+ if (cweMap[cweId]) {
121
+ return cweMap[cweId];
122
+ }
123
+
124
+ // Create a generic CWE standard for unknown CWEs
125
+ const cweNumber = cweId.replace('CWE-', '');
126
+ return {
127
+ name: 'CWE',
128
+ id: cweId,
129
+ title: `CWE-${cweNumber}`,
130
+ description: `Common Weakness Enumeration ${cweNumber}`,
131
+ url: `https://cwe.mitre.org/data/definitions/${cweNumber}.html`
132
+ };
133
+ }
134
+
135
+ /**
136
+ * Get security standards for a dependency risk category
137
+ */
138
+ export function getStandardsForDependencyRisk(
139
+ category: DependencyRiskCategory,
140
+ cwes?: string[]
141
+ ): SecurityStandard[] {
142
+ const standards: SecurityStandard[] = [];
143
+
144
+ // Always include OWASP A06 for dependency risks
145
+ standards.push(OWASP_A06);
146
+
147
+ switch (category) {
148
+ case DependencyRiskCategory.VULNERABILITY:
149
+ standards.push(CWE_937, CWE_1035);
150
+ // Add specific CWEs if provided
151
+ if (cwes) {
152
+ for (const cwe of cwes) {
153
+ const cweStandard = getCWEStandard(cwe);
154
+ if (cweStandard && !standards.some(s => s.id === cweStandard.id)) {
155
+ standards.push(cweStandard);
156
+ }
157
+ }
158
+ }
159
+ break;
160
+
161
+ case DependencyRiskCategory.MALICIOUS:
162
+ standards.push(CWE_506, CWE_829, MITRE_SUPPLY_CHAIN, MITRE_T1195_002);
163
+ break;
164
+
165
+ case DependencyRiskCategory.SUPPLY_CHAIN:
166
+ standards.push(CWE_829, MITRE_SUPPLY_CHAIN, MITRE_T1195_002);
167
+ break;
168
+
169
+ case DependencyRiskCategory.OUTDATED:
170
+ standards.push(CWE_1104);
171
+ break;
172
+
173
+ case DependencyRiskCategory.MAINTENANCE:
174
+ standards.push(CWE_1104);
175
+ break;
176
+
177
+ case DependencyRiskCategory.LICENSE:
178
+ // No specific security standards for license issues
179
+ break;
180
+ }
181
+
182
+ return standards;
183
+ }
184
+
185
+ /**
186
+ * Get all dependency-related security standards
187
+ */
188
+ export function getAllDependencyStandards(): SecurityStandard[] {
189
+ return [
190
+ OWASP_A06,
191
+ CWE_937,
192
+ CWE_1035,
193
+ CWE_506,
194
+ CWE_829,
195
+ CWE_1104,
196
+ MITRE_SUPPLY_CHAIN,
197
+ MITRE_T1195_002,
198
+ SANS_UNTRUSTED_INPUT
199
+ ];
200
+ }
@@ -0,0 +1,343 @@
1
+ /**
2
+ * Vulnerability Detector
3
+ * Detects vulnerabilities, supply chain risks, and malicious packages
4
+ */
5
+
6
+ import {
7
+ Dependency,
8
+ DependencyVulnerability,
9
+ DependencyRiskCategory,
10
+ DependencyRecommendation,
11
+ CVEInfo,
12
+ SupplyChainRisk,
13
+ MalwareIndicator,
14
+ TyposquattingCandidate
15
+ } from '../types';
16
+ import { Severity, SecurityStandard } from '../../types';
17
+ import { generateId } from '../../utils';
18
+ import { getCVEsForPackage } from '../database/cveDatabase';
19
+ import { getMaliciousPackage, isDeprecatedPackage, getPopularPackages } from '../database/maliciousPackages';
20
+ import { getStandardsForDependencyRisk } from './securityStandards';
21
+ import { logger } from '../../utils/logger';
22
+
23
+ /**
24
+ * Vulnerability Detector Class
25
+ * Detects various security issues in dependencies
26
+ */
27
+ export class VulnerabilityDetector {
28
+ /**
29
+ * Analyze a dependency for vulnerabilities and risks
30
+ */
31
+ async analyzeDependency(dependency: Dependency): Promise<DependencyVulnerability[]> {
32
+ const vulnerabilities: DependencyVulnerability[] = [];
33
+
34
+ // Check for known malicious packages
35
+ const maliciousCheck = await this.checkMaliciousPackage(dependency);
36
+ if (maliciousCheck) {
37
+ vulnerabilities.push(maliciousCheck);
38
+ }
39
+
40
+ // Check for CVEs
41
+ const cveVulns = await this.checkCVEs(dependency);
42
+ vulnerabilities.push(...cveVulns);
43
+
44
+ // Check for typosquatting
45
+ const typosquatCheck = await this.checkTyposquatting(dependency);
46
+ if (typosquatCheck) {
47
+ vulnerabilities.push(typosquatCheck);
48
+ }
49
+
50
+ // Check for deprecated packages
51
+ const deprecatedCheck = await this.checkDeprecated(dependency);
52
+ if (deprecatedCheck) {
53
+ vulnerabilities.push(deprecatedCheck);
54
+ }
55
+
56
+ // Check for supply chain risks
57
+ const supplyChainRisks = await this.checkSupplyChainRisks(dependency);
58
+ vulnerabilities.push(...supplyChainRisks);
59
+
60
+ return vulnerabilities;
61
+ }
62
+
63
+ /**
64
+ * Check if package is known malicious
65
+ */
66
+ private async checkMaliciousPackage(dependency: Dependency): Promise<DependencyVulnerability | null> {
67
+ const malicious = getMaliciousPackage(dependency.name, dependency.ecosystem);
68
+
69
+ if (!malicious) return null;
70
+
71
+ // Check if affected version
72
+ if (malicious.affectedVersions && malicious.affectedVersions !== '*') {
73
+ const version = dependency.resolvedVersion || dependency.version;
74
+ const affectedVersions = malicious.affectedVersions.split(',').map(v => v.trim());
75
+
76
+ if (!affectedVersions.some(v => v === version || v === '*')) {
77
+ return null;
78
+ }
79
+ }
80
+
81
+ logger.debug(`[VulnDetector] Malicious package detected: ${dependency.name}`);
82
+
83
+ return {
84
+ id: generateId(),
85
+ dependency,
86
+ severity: Severity.CRITICAL,
87
+ category: DependencyRiskCategory.MALICIOUS,
88
+ title: `Known Malicious Package: ${dependency.name}`,
89
+ description: malicious.description,
90
+ malwareIndicators: malicious.indicators,
91
+ standards: getStandardsForDependencyRisk(DependencyRiskCategory.MALICIOUS),
92
+ recommendation: DependencyRecommendation.REMOVE,
93
+ recommendationDetails: `Immediately remove ${dependency.name} from your project. This package has been reported as malicious. ${malicious.references.length > 0 ? 'See references for more information.' : ''}`,
94
+ confidence: 100,
95
+ timestamp: new Date()
96
+ };
97
+ }
98
+
99
+ /**
100
+ * Check for known CVEs
101
+ */
102
+ private async checkCVEs(dependency: Dependency): Promise<DependencyVulnerability[]> {
103
+ const vulnerabilities: DependencyVulnerability[] = [];
104
+ const version = dependency.resolvedVersion || dependency.version;
105
+
106
+ // Skip if no version specified
107
+ if (!version || version === '*') {
108
+ return vulnerabilities;
109
+ }
110
+
111
+ const cves = getCVEsForPackage(dependency.name, dependency.ecosystem, version);
112
+
113
+ for (const cve of cves) {
114
+ logger.debug(`[VulnDetector] CVE detected: ${cve.id} in ${dependency.name}@${version}`);
115
+
116
+ vulnerabilities.push({
117
+ id: generateId(),
118
+ dependency,
119
+ severity: cve.severity,
120
+ category: DependencyRiskCategory.VULNERABILITY,
121
+ title: `${cve.id}: ${dependency.name}`,
122
+ description: cve.description,
123
+ cve,
124
+ standards: getStandardsForDependencyRisk(DependencyRiskCategory.VULNERABILITY, cve.cwes),
125
+ recommendation: cve.fixedVersion
126
+ ? DependencyRecommendation.UPGRADE
127
+ : DependencyRecommendation.REVIEW,
128
+ recommendationDetails: cve.fixedVersion
129
+ ? `Upgrade ${dependency.name} to version ${cve.fixedVersion} or later to fix ${cve.id}.`
130
+ : `Review the usage of ${dependency.name} and consider alternative packages. No fixed version available.`,
131
+ confidence: 95,
132
+ timestamp: new Date()
133
+ });
134
+ }
135
+
136
+ return vulnerabilities;
137
+ }
138
+
139
+ /**
140
+ * Check for typosquatting
141
+ */
142
+ private async checkTyposquatting(dependency: Dependency): Promise<DependencyVulnerability | null> {
143
+ const popularPackages = getPopularPackages(dependency.ecosystem);
144
+ const candidates = this.findTyposquatCandidates(dependency.name, popularPackages);
145
+
146
+ if (candidates.length === 0) return null;
147
+
148
+ const bestMatch = candidates[0];
149
+
150
+ // Only flag if similarity is high enough (potential typosquat)
151
+ if (bestMatch.similarityScore < 80) return null;
152
+
153
+ logger.debug(`[VulnDetector] Potential typosquatting: ${dependency.name} similar to ${bestMatch.legitimatePackage}`);
154
+
155
+ return {
156
+ id: generateId(),
157
+ dependency,
158
+ severity: Severity.HIGH,
159
+ category: DependencyRiskCategory.SUPPLY_CHAIN,
160
+ title: `Potential Typosquatting: ${dependency.name}`,
161
+ description: `The package "${dependency.name}" is very similar to the popular package "${bestMatch.legitimatePackage}" (${bestMatch.similarityScore}% similarity). This could be a typosquatting attempt.`,
162
+ supplyChainRisks: [SupplyChainRisk.TYPOSQUATTING],
163
+ standards: getStandardsForDependencyRisk(DependencyRiskCategory.SUPPLY_CHAIN),
164
+ recommendation: DependencyRecommendation.REVIEW,
165
+ recommendationDetails: `Verify that "${dependency.name}" is the intended package and not a typosquat of "${bestMatch.legitimatePackage}". If this is a mistake, replace with the correct package.`,
166
+ confidence: bestMatch.similarityScore,
167
+ timestamp: new Date()
168
+ };
169
+ }
170
+
171
+ /**
172
+ * Find typosquatting candidates
173
+ */
174
+ private findTyposquatCandidates(name: string, popularPackages: string[]): TyposquattingCandidate[] {
175
+ const candidates: TyposquattingCandidate[] = [];
176
+ const normalizedName = name.toLowerCase();
177
+
178
+ for (const popular of popularPackages) {
179
+ const normalizedPopular = popular.toLowerCase();
180
+
181
+ // Skip if same package
182
+ if (normalizedName === normalizedPopular) continue;
183
+
184
+ const similarity = this.calculateSimilarity(normalizedName, normalizedPopular);
185
+
186
+ if (similarity >= 70) {
187
+ const typosquatType = this.detectTyposquatType(normalizedName, normalizedPopular);
188
+
189
+ candidates.push({
190
+ suspiciousName: name,
191
+ legitimatePackage: popular,
192
+ similarityScore: similarity,
193
+ typosquatType
194
+ });
195
+ }
196
+ }
197
+
198
+ // Sort by similarity score descending
199
+ return candidates.sort((a, b) => b.similarityScore - a.similarityScore);
200
+ }
201
+
202
+ /**
203
+ * Calculate string similarity (Levenshtein distance based)
204
+ */
205
+ private calculateSimilarity(a: string, b: string): number {
206
+ const distance = this.levenshteinDistance(a, b);
207
+ const maxLength = Math.max(a.length, b.length);
208
+ return Math.round((1 - distance / maxLength) * 100);
209
+ }
210
+
211
+ /**
212
+ * Levenshtein distance algorithm
213
+ */
214
+ private levenshteinDistance(a: string, b: string): number {
215
+ const matrix: number[][] = [];
216
+
217
+ for (let i = 0; i <= b.length; i++) {
218
+ matrix[i] = [i];
219
+ }
220
+ for (let j = 0; j <= a.length; j++) {
221
+ matrix[0][j] = j;
222
+ }
223
+
224
+ for (let i = 1; i <= b.length; i++) {
225
+ for (let j = 1; j <= a.length; j++) {
226
+ if (b.charAt(i - 1) === a.charAt(j - 1)) {
227
+ matrix[i][j] = matrix[i - 1][j - 1];
228
+ } else {
229
+ matrix[i][j] = Math.min(
230
+ matrix[i - 1][j - 1] + 1,
231
+ matrix[i][j - 1] + 1,
232
+ matrix[i - 1][j] + 1
233
+ );
234
+ }
235
+ }
236
+ }
237
+
238
+ return matrix[b.length][a.length];
239
+ }
240
+
241
+ /**
242
+ * Detect type of typosquat
243
+ */
244
+ private detectTyposquatType(suspicious: string, legitimate: string): TyposquattingCandidate['typosquatType'] {
245
+ const lenDiff = Math.abs(suspicious.length - legitimate.length);
246
+
247
+ if (lenDiff === 1) {
248
+ if (suspicious.length > legitimate.length) {
249
+ return 'extra_char';
250
+ } else {
251
+ return 'missing_char';
252
+ }
253
+ }
254
+
255
+ if (lenDiff === 0) {
256
+ // Check for homograph (e.g., l vs 1, o vs 0)
257
+ const homographs = [['l', '1'], ['o', '0'], ['i', 'l'], ['rn', 'm']];
258
+ for (const [a, b] of homographs) {
259
+ if (suspicious.includes(a) && legitimate.includes(b)) {
260
+ return 'homograph';
261
+ }
262
+ if (suspicious.includes(b) && legitimate.includes(a)) {
263
+ return 'homograph';
264
+ }
265
+ }
266
+ return 'character_swap';
267
+ }
268
+
269
+ return 'bit_flip';
270
+ }
271
+
272
+ /**
273
+ * Check for deprecated packages
274
+ */
275
+ private async checkDeprecated(dependency: Dependency): Promise<DependencyVulnerability | null> {
276
+ const { deprecated, info } = isDeprecatedPackage(dependency.name);
277
+
278
+ if (!deprecated || !info) return null;
279
+
280
+ // Check ecosystem match
281
+ if (info.ecosystem !== dependency.ecosystem) return null;
282
+
283
+ logger.debug(`[VulnDetector] Deprecated package: ${dependency.name}`);
284
+
285
+ return {
286
+ id: generateId(),
287
+ dependency,
288
+ severity: Severity.LOW,
289
+ category: DependencyRiskCategory.OUTDATED,
290
+ title: `Deprecated Package: ${dependency.name}`,
291
+ description: `The package "${dependency.name}" is deprecated. ${info.reason}`,
292
+ standards: getStandardsForDependencyRisk(DependencyRiskCategory.OUTDATED),
293
+ recommendation: info.replacement
294
+ ? DependencyRecommendation.REPLACE
295
+ : DependencyRecommendation.REVIEW,
296
+ recommendationDetails: info.replacement
297
+ ? `Replace ${dependency.name} with ${info.replacement}.`
298
+ : `Review usage of ${dependency.name} and consider alternatives.`,
299
+ confidence: 90,
300
+ timestamp: new Date()
301
+ };
302
+ }
303
+
304
+ /**
305
+ * Check for supply chain risks
306
+ */
307
+ private async checkSupplyChainRisks(dependency: Dependency): Promise<DependencyVulnerability[]> {
308
+ const vulnerabilities: DependencyVulnerability[] = [];
309
+ const risks: SupplyChainRisk[] = [];
310
+
311
+ // Check for suspicious version patterns
312
+ const version = dependency.resolvedVersion || dependency.version;
313
+
314
+ // Flag 0.0.x versions as potentially new/untested
315
+ if (version && /^0\.0\.\d+/.test(version)) {
316
+ risks.push(SupplyChainRisk.NEW_PACKAGE);
317
+ }
318
+
319
+ // Flag packages with very recent versions (could be suspicious release)
320
+ // Note: This would need actual publish date data in production
321
+
322
+ if (risks.length > 0) {
323
+ vulnerabilities.push({
324
+ id: generateId(),
325
+ dependency,
326
+ severity: Severity.INFO,
327
+ category: DependencyRiskCategory.SUPPLY_CHAIN,
328
+ title: `Supply Chain Risk: ${dependency.name}`,
329
+ description: `The package "${dependency.name}" has potential supply chain risks: ${risks.join(', ')}`,
330
+ supplyChainRisks: risks,
331
+ standards: getStandardsForDependencyRisk(DependencyRiskCategory.SUPPLY_CHAIN),
332
+ recommendation: DependencyRecommendation.MONITOR,
333
+ recommendationDetails: `Monitor ${dependency.name} for any suspicious activity or updates. Consider pinning to a specific trusted version.`,
334
+ confidence: 60,
335
+ timestamp: new Date()
336
+ });
337
+ }
338
+
339
+ return vulnerabilities;
340
+ }
341
+ }
342
+
343
+ export default VulnerabilityDetector;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Dependency Analysis Module Exports
3
+ * Software Composition Analysis (SCA) for Secure-Scan
4
+ */
5
+
6
+ // Types
7
+ export * from './types';
8
+
9
+ // Parsers
10
+ export * from './parsers';
11
+
12
+ // Detectors
13
+ export * from './detectors';
14
+
15
+ // Database
16
+ export * from './database';
17
+
18
+ // Main analyzer
19
+ export * from './dependencyAnalyzer';
20
+ export { default as DependencyAnalyzer } from './dependencyAnalyzer';
21
+
22
+ // AI Analyzer
23
+ export * from './aiDependencyAnalyzer';
24
+ export { default as AIDependencyAnalyzer } from './aiDependencyAnalyzer';
25
+
26
+ // Installed Dependencies Scanner (Malware Detection)
27
+ export * from './installed';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Installed Dependencies Module
3
+ * Exports for scanning installed packages for malware
4
+ */
5
+
6
+ export * from './types';
7
+ export * from './installedScanner';
8
+ export * from './malwarePatterns';