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,287 @@
1
+ /**
2
+ * Types for Installed Dependencies Analysis
3
+ * Scans actual installed packages (node_modules, vendor, venv, etc.)
4
+ */
5
+
6
+ import { PackageEcosystem, MalwareIndicator, Dependency } from '../types';
7
+ import { Severity } from '../../types';
8
+
9
+ /**
10
+ * Simplified security standard reference for malware patterns
11
+ */
12
+ export interface MalwareSecurityStandard {
13
+ /** Standard name */
14
+ standard: 'CWE' | 'MITRE' | 'OWASP' | 'SANS';
15
+ /** Standard ID */
16
+ id: string;
17
+ /** Standard description */
18
+ description: string;
19
+ }
20
+
21
+ /**
22
+ * Installed package information
23
+ */
24
+ export interface InstalledPackage {
25
+ /** Package name */
26
+ name: string;
27
+ /** Installed version */
28
+ version: string;
29
+ /** Package ecosystem */
30
+ ecosystem: PackageEcosystem;
31
+ /** Installation path */
32
+ installPath: string;
33
+ /** Total size in bytes */
34
+ sizeBytes: number;
35
+ /** Number of files */
36
+ fileCount: number;
37
+ /** Has post-install scripts */
38
+ hasPostInstallScripts: boolean;
39
+ /** Post-install script content (if any) */
40
+ postInstallScripts?: PostInstallScript[];
41
+ /** Package metadata */
42
+ metadata?: InstalledPackageMetadata;
43
+ /** Integrity check result */
44
+ integrityStatus?: IntegrityStatus;
45
+ }
46
+
47
+ /**
48
+ * Package metadata from installed package
49
+ */
50
+ export interface InstalledPackageMetadata {
51
+ /** Author */
52
+ author?: string;
53
+ /** License */
54
+ license?: string;
55
+ /** Homepage */
56
+ homepage?: string;
57
+ /** Repository URL */
58
+ repository?: string;
59
+ /** Description */
60
+ description?: string;
61
+ /** Install date (if available) */
62
+ installDate?: Date;
63
+ /** Main entry point */
64
+ main?: string;
65
+ /** Binary commands */
66
+ binaries?: string[];
67
+ }
68
+
69
+ /**
70
+ * Post-install script information
71
+ */
72
+ export interface PostInstallScript {
73
+ /** Script type */
74
+ type: 'preinstall' | 'install' | 'postinstall' | 'preuninstall' | 'postuninstall';
75
+ /** Script command */
76
+ command: string;
77
+ /** Script file path (if file) */
78
+ scriptPath?: string;
79
+ /** Script content (if readable) */
80
+ content?: string;
81
+ /** Risk level */
82
+ riskLevel: Severity;
83
+ /** Risk indicators found */
84
+ riskIndicators: string[];
85
+ }
86
+
87
+ /**
88
+ * Integrity verification status
89
+ */
90
+ export interface IntegrityStatus {
91
+ /** Overall status */
92
+ status: 'verified' | 'mismatch' | 'unknown' | 'missing_lockfile';
93
+ /** Expected version from lock file */
94
+ expectedVersion?: string;
95
+ /** Installed version */
96
+ installedVersion: string;
97
+ /** Expected integrity hash */
98
+ expectedHash?: string;
99
+ /** Actual integrity hash */
100
+ actualHash?: string;
101
+ /** Mismatch details */
102
+ mismatchDetails?: string;
103
+ }
104
+
105
+ /**
106
+ * Malware scan result for installed package
107
+ */
108
+ export interface InstalledMalwareFinding {
109
+ /** Unique finding ID */
110
+ id: string;
111
+ /** Affected package */
112
+ package: InstalledPackage;
113
+ /** File where malware was detected */
114
+ filePath: string;
115
+ /** Line number (if applicable) */
116
+ lineNumber?: number;
117
+ /** Column number (if applicable) */
118
+ columnNumber?: number;
119
+ /** Malware indicators detected */
120
+ indicators: MalwareIndicator[];
121
+ /** Severity level */
122
+ severity: Severity;
123
+ /** Finding title */
124
+ title: string;
125
+ /** Detailed description */
126
+ description: string;
127
+ /** Matched pattern/signature */
128
+ matchedPattern: string;
129
+ /** Code snippet with malware */
130
+ codeSnippet?: string;
131
+ /** Security standards */
132
+ standards: MalwareSecurityStandard[];
133
+ /** Recommendation */
134
+ recommendation: string;
135
+ /** Confidence level (0-100) */
136
+ confidence: number;
137
+ /** Detection timestamp */
138
+ timestamp: Date;
139
+ }
140
+
141
+ /**
142
+ * Malware detection pattern
143
+ */
144
+ export interface MalwarePattern {
145
+ /** Pattern ID */
146
+ id: string;
147
+ /** Pattern name */
148
+ name: string;
149
+ /** Pattern description */
150
+ description: string;
151
+ /** Malware indicator type */
152
+ indicator: MalwareIndicator;
153
+ /** Severity */
154
+ severity: Severity;
155
+ /** Regex patterns */
156
+ patterns: RegExp[];
157
+ /** File extensions to scan */
158
+ fileExtensions: string[];
159
+ /** Keywords that trigger deeper analysis */
160
+ keywords?: string[];
161
+ /** Confidence level (0-100) */
162
+ confidence: number;
163
+ /** Related security standards */
164
+ standards: MalwareSecurityStandard[];
165
+ }
166
+
167
+ /**
168
+ * Installed dependencies scan result
169
+ */
170
+ export interface InstalledDependenciesScanResult {
171
+ /** Scanned package folders */
172
+ scannedFolders: ScannedFolder[];
173
+ /** All installed packages found */
174
+ installedPackages: InstalledPackage[];
175
+ /** Malware findings */
176
+ malwareFindings: InstalledMalwareFinding[];
177
+ /** Integrity issues */
178
+ integrityIssues: IntegrityIssue[];
179
+ /** Suspicious post-install scripts */
180
+ suspiciousScripts: SuspiciousScriptFinding[];
181
+ /** Statistics */
182
+ stats: InstalledScanStats;
183
+ /** Timestamp */
184
+ timestamp: Date;
185
+ }
186
+
187
+ /**
188
+ * Scanned folder information
189
+ */
190
+ export interface ScannedFolder {
191
+ /** Folder path */
192
+ path: string;
193
+ /** Folder type */
194
+ type: 'node_modules' | 'vendor' | 'venv' | 'site-packages' | 'packages' | 'other';
195
+ /** Ecosystem */
196
+ ecosystem: PackageEcosystem;
197
+ /** Number of packages */
198
+ packageCount: number;
199
+ /** Total size */
200
+ totalSizeBytes: number;
201
+ /** Files scanned */
202
+ filesScanned: number;
203
+ }
204
+
205
+ /**
206
+ * Integrity issue
207
+ */
208
+ export interface IntegrityIssue {
209
+ /** Package name */
210
+ packageName: string;
211
+ /** Issue type */
212
+ issueType: 'version_mismatch' | 'hash_mismatch' | 'unexpected_package' | 'missing_package' | 'tampered';
213
+ /** Severity */
214
+ severity: Severity;
215
+ /** Description */
216
+ description: string;
217
+ /** Expected value */
218
+ expected?: string;
219
+ /** Actual value */
220
+ actual?: string;
221
+ }
222
+
223
+ /**
224
+ * Suspicious script finding
225
+ */
226
+ export interface SuspiciousScriptFinding {
227
+ /** Package name */
228
+ packageName: string;
229
+ /** Script info */
230
+ script: PostInstallScript;
231
+ /** Severity */
232
+ severity: Severity;
233
+ /** Description */
234
+ description: string;
235
+ /** Risk indicators */
236
+ riskIndicators: string[];
237
+ }
238
+
239
+ /**
240
+ * Statistics for installed dependencies scan
241
+ */
242
+ export interface InstalledScanStats {
243
+ /** Total folders scanned */
244
+ totalFoldersScanned: number;
245
+ /** Total packages found */
246
+ totalPackagesFound: number;
247
+ /** Total files scanned */
248
+ totalFilesScanned: number;
249
+ /** Total bytes scanned */
250
+ totalBytesScanned: number;
251
+ /** Malware findings count */
252
+ malwareFindingsCount: number;
253
+ /** Integrity issues count */
254
+ integrityIssuesCount: number;
255
+ /** Suspicious scripts count */
256
+ suspiciousScriptsCount: number;
257
+ /** Packages by ecosystem */
258
+ packagesByEcosystem: Record<PackageEcosystem, number>;
259
+ /** Findings by severity */
260
+ findingsBySeverity: Record<Severity, number>;
261
+ /** Scan duration in ms */
262
+ duration: number;
263
+ }
264
+
265
+ /**
266
+ * Installed dependencies scanner configuration
267
+ */
268
+ export interface InstalledScanConfig {
269
+ /** Project root path */
270
+ projectPath: string;
271
+ /** Folders to scan */
272
+ foldersToScan?: string[];
273
+ /** Maximum file size to scan (bytes) */
274
+ maxFileSizeBytes?: number;
275
+ /** File extensions to scan */
276
+ fileExtensions?: string[];
277
+ /** Enable integrity verification */
278
+ verifyIntegrity?: boolean;
279
+ /** Scan post-install scripts */
280
+ scanPostInstallScripts?: boolean;
281
+ /** Maximum depth in node_modules */
282
+ maxDepth?: number;
283
+ /** Verbose logging */
284
+ verbose?: boolean;
285
+ /** Parallel scan threads */
286
+ parallelScans?: number;
287
+ }
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Base Dependency Parser
3
+ * Abstract base class for ecosystem-specific parsers
4
+ */
5
+
6
+ import {
7
+ DependencyParser,
8
+ DependencyManifest,
9
+ ManifestFileType,
10
+ PackageEcosystem,
11
+ Dependency
12
+ } from '../../types';
13
+ import { logger } from '../../../utils/logger';
14
+
15
+ /**
16
+ * Base Parser Class
17
+ * Provides common functionality for all dependency parsers
18
+ */
19
+ export abstract class BaseDependencyParser implements DependencyParser {
20
+ abstract name: string;
21
+ abstract supportedFiles: ManifestFileType[];
22
+ abstract ecosystem: PackageEcosystem;
23
+
24
+ /**
25
+ * Check if parser supports a file
26
+ */
27
+ supports(fileName: string): boolean {
28
+ const baseName = fileName.split(/[/\\]/).pop() || '';
29
+
30
+ // Special handling for .csproj files
31
+ if (baseName.endsWith('.csproj')) {
32
+ return this.supportedFiles.includes('csproj');
33
+ }
34
+
35
+ return this.supportedFiles.some(ft => baseName === ft || baseName.endsWith(ft));
36
+ }
37
+
38
+ /**
39
+ * Parse manifest file - must be implemented by subclasses
40
+ */
41
+ abstract parse(filePath: string, content: string): Promise<DependencyManifest>;
42
+
43
+ /**
44
+ * Helper to create a dependency object
45
+ */
46
+ protected createDependency(
47
+ name: string,
48
+ version: string,
49
+ sourceFile: string,
50
+ options: Partial<Dependency> = {}
51
+ ): Dependency {
52
+ return {
53
+ name,
54
+ version,
55
+ ecosystem: this.ecosystem,
56
+ dependencyType: 'direct',
57
+ depth: 0,
58
+ sourceFile,
59
+ ...options
60
+ };
61
+ }
62
+
63
+ /**
64
+ * Helper to normalize version string
65
+ */
66
+ protected normalizeVersion(version: string): string {
67
+ if (!version) return '*';
68
+
69
+ // Remove common prefixes
70
+ version = version.replace(/^[v=~^]/, '');
71
+
72
+ // Handle special cases
73
+ if (version === 'latest' || version === '*') {
74
+ return '*';
75
+ }
76
+
77
+ return version.trim();
78
+ }
79
+
80
+ /**
81
+ * Helper to determine if file is a lock file
82
+ */
83
+ protected isLockFile(fileName: string): boolean {
84
+ const lockPatterns = [
85
+ 'package-lock.json',
86
+ 'yarn.lock',
87
+ 'Pipfile.lock',
88
+ 'composer.lock'
89
+ ];
90
+ return lockPatterns.some(p => fileName.endsWith(p));
91
+ }
92
+
93
+ /**
94
+ * Log parsing info
95
+ */
96
+ protected logParsing(filePath: string): void {
97
+ logger.debug(`[${this.name}] Parsing: ${filePath}`);
98
+ }
99
+
100
+ /**
101
+ * Log parsing error
102
+ */
103
+ protected logError(filePath: string, error: string): void {
104
+ logger.debug(`[${this.name}] Error parsing ${filePath}: ${error}`);
105
+ }
106
+ }
107
+
108
+ export default BaseDependencyParser;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Base Parser Module Exports
3
+ */
4
+
5
+ export * from './baseParser';
6
+ export { default as BaseDependencyParser } from './baseParser';
@@ -0,0 +1,245 @@
1
+ /**
2
+ * C/C++ Dependency Parser
3
+ * Parses vcpkg.json, conanfile.txt, and CMakeLists.txt
4
+ */
5
+
6
+ import { BaseDependencyParser } from '../base';
7
+ import {
8
+ DependencyManifest,
9
+ ManifestFileType,
10
+ PackageEcosystem,
11
+ Dependency
12
+ } from '../../types';
13
+
14
+ /**
15
+ * vcpkg.json structure
16
+ */
17
+ interface VcpkgJson {
18
+ name?: string;
19
+ version?: string;
20
+ dependencies?: (string | VcpkgDependency)[];
21
+ 'default-features'?: boolean;
22
+ features?: Record<string, VcpkgFeature>;
23
+ }
24
+
25
+ interface VcpkgDependency {
26
+ name: string;
27
+ version?: string;
28
+ 'version>='?: string;
29
+ features?: string[];
30
+ platform?: string;
31
+ }
32
+
33
+ interface VcpkgFeature {
34
+ description?: string;
35
+ dependencies?: (string | VcpkgDependency)[];
36
+ }
37
+
38
+ /**
39
+ * C/C++ Dependency Parser
40
+ */
41
+ export class CppDependencyParser extends BaseDependencyParser {
42
+ name = 'C/C++ Dependency Parser';
43
+ supportedFiles: ManifestFileType[] = ['vcpkg.json', 'conanfile.txt', 'CMakeLists.txt'];
44
+ ecosystem: PackageEcosystem = 'vcpkg';
45
+
46
+ /**
47
+ * Parse manifest file
48
+ */
49
+ async parse(filePath: string, content: string): Promise<DependencyManifest> {
50
+ this.logParsing(filePath);
51
+
52
+ const fileName = filePath.split(/[/\\]/).pop() || '';
53
+ const dependencies: Dependency[] = [];
54
+ const parseErrors: string[] = [];
55
+ let ecosystem: PackageEcosystem = 'vcpkg';
56
+
57
+ try {
58
+ if (fileName === 'vcpkg.json') {
59
+ dependencies.push(...this.parseVcpkgJson(content, filePath, parseErrors));
60
+ ecosystem = 'vcpkg';
61
+ } else if (fileName === 'conanfile.txt') {
62
+ dependencies.push(...this.parseConanfile(content, filePath, parseErrors));
63
+ ecosystem = 'conan';
64
+ } else if (fileName === 'CMakeLists.txt') {
65
+ dependencies.push(...this.parseCMakeLists(content, filePath, parseErrors));
66
+ ecosystem = 'cmake';
67
+ }
68
+ } catch (error) {
69
+ const errorMsg = error instanceof Error ? error.message : String(error);
70
+ parseErrors.push(`Failed to parse ${fileName}: ${errorMsg}`);
71
+ this.logError(filePath, errorMsg);
72
+ }
73
+
74
+ return {
75
+ filePath,
76
+ fileType: fileName as ManifestFileType,
77
+ ecosystem,
78
+ dependencies,
79
+ parseErrors: parseErrors.length > 0 ? parseErrors : undefined,
80
+ isLockFile: false
81
+ };
82
+ }
83
+
84
+ /**
85
+ * Check if parser supports file
86
+ */
87
+ supports(fileName: string): boolean {
88
+ const baseName = fileName.split(/[/\\]/).pop() || '';
89
+ return this.supportedFiles.some(ft => baseName === ft);
90
+ }
91
+
92
+ /**
93
+ * Parse vcpkg.json
94
+ */
95
+ private parseVcpkgJson(content: string, filePath: string, errors: string[]): Dependency[] {
96
+ const dependencies: Dependency[] = [];
97
+
98
+ let vcpkg: VcpkgJson;
99
+ try {
100
+ vcpkg = JSON.parse(content);
101
+ } catch (e) {
102
+ errors.push('Invalid JSON in vcpkg.json');
103
+ return dependencies;
104
+ }
105
+
106
+ if (vcpkg.dependencies) {
107
+ for (const dep of vcpkg.dependencies) {
108
+ if (typeof dep === 'string') {
109
+ dependencies.push(this.createDependency(dep, '*', filePath, {
110
+ dependencyType: 'direct',
111
+ ecosystem: 'vcpkg'
112
+ }));
113
+ } else {
114
+ const version = dep.version || dep['version>='] || '*';
115
+ dependencies.push(this.createDependency(dep.name, version, filePath, {
116
+ dependencyType: 'direct',
117
+ ecosystem: 'vcpkg'
118
+ }));
119
+ }
120
+ }
121
+ }
122
+
123
+ // Parse feature dependencies
124
+ if (vcpkg.features) {
125
+ for (const [featureName, feature] of Object.entries(vcpkg.features)) {
126
+ if (feature.dependencies) {
127
+ for (const dep of feature.dependencies) {
128
+ const name = typeof dep === 'string' ? dep : dep.name;
129
+ const version = typeof dep === 'string' ? '*' : (dep.version || dep['version>='] || '*');
130
+ dependencies.push(this.createDependency(name, version, filePath, {
131
+ dependencyType: 'optional',
132
+ ecosystem: 'vcpkg'
133
+ }));
134
+ }
135
+ }
136
+ }
137
+ }
138
+
139
+ return dependencies;
140
+ }
141
+
142
+ /**
143
+ * Parse conanfile.txt
144
+ */
145
+ private parseConanfile(content: string, filePath: string, errors: string[]): Dependency[] {
146
+ const dependencies: Dependency[] = [];
147
+ const lines = content.split('\n');
148
+ let inRequires = false;
149
+ let inBuildRequires = false;
150
+
151
+ for (const line of lines) {
152
+ const trimmed = line.trim();
153
+
154
+ // Track sections
155
+ if (trimmed === '[requires]') {
156
+ inRequires = true;
157
+ inBuildRequires = false;
158
+ continue;
159
+ }
160
+ if (trimmed === '[build_requires]' || trimmed === '[tool_requires]') {
161
+ inRequires = false;
162
+ inBuildRequires = true;
163
+ continue;
164
+ }
165
+ if (trimmed.startsWith('[')) {
166
+ inRequires = false;
167
+ inBuildRequires = false;
168
+ continue;
169
+ }
170
+
171
+ // Skip comments and empty lines
172
+ if (!trimmed || trimmed.startsWith('#')) continue;
173
+
174
+ // Parse requirement line (format: package/version)
175
+ if (inRequires || inBuildRequires) {
176
+ const match = trimmed.match(/^([^/\s@]+)(?:\/([^@\s]+))?/);
177
+ if (match) {
178
+ const name = match[1];
179
+ const version = match[2] || '*';
180
+ dependencies.push(this.createDependency(name, version, filePath, {
181
+ dependencyType: inBuildRequires ? 'dev' : 'direct',
182
+ ecosystem: 'conan'
183
+ }));
184
+ }
185
+ }
186
+ }
187
+
188
+ return dependencies;
189
+ }
190
+
191
+ /**
192
+ * Parse CMakeLists.txt
193
+ */
194
+ private parseCMakeLists(content: string, filePath: string, errors: string[]): Dependency[] {
195
+ const dependencies: Dependency[] = [];
196
+
197
+ // find_package(Package VERSION x.x REQUIRED)
198
+ const findPackageRegex = /find_package\s*\(\s*(\w+)(?:\s+(\d+(?:\.\d+)*))?[^)]*\)/gi;
199
+
200
+ let match;
201
+ while ((match = findPackageRegex.exec(content)) !== null) {
202
+ const name = match[1];
203
+ const version = match[2] || '*';
204
+
205
+ // Skip CMake built-in packages
206
+ const builtins = ['CMake', 'CTest', 'GTest'];
207
+ if (builtins.includes(name)) continue;
208
+
209
+ dependencies.push(this.createDependency(name, version, filePath, {
210
+ dependencyType: 'direct',
211
+ ecosystem: 'cmake'
212
+ }));
213
+ }
214
+
215
+ // FetchContent_Declare(name GIT_REPOSITORY url GIT_TAG tag)
216
+ const fetchContentRegex = /FetchContent_Declare\s*\(\s*(\w+)[^)]*GIT_TAG\s+([^\s)]+)/gi;
217
+
218
+ while ((match = fetchContentRegex.exec(content)) !== null) {
219
+ const name = match[1];
220
+ const version = match[2] || '*';
221
+
222
+ dependencies.push(this.createDependency(name, version, filePath, {
223
+ dependencyType: 'direct',
224
+ ecosystem: 'cmake'
225
+ }));
226
+ }
227
+
228
+ // CPMAddPackage
229
+ const cpmRegex = /CPMAddPackage\s*\([^)]*NAME\s+(\w+)[^)]*VERSION\s+([^\s)]+)/gi;
230
+
231
+ while ((match = cpmRegex.exec(content)) !== null) {
232
+ const name = match[1];
233
+ const version = match[2] || '*';
234
+
235
+ dependencies.push(this.createDependency(name, version, filePath, {
236
+ dependencyType: 'direct',
237
+ ecosystem: 'cmake'
238
+ }));
239
+ }
240
+
241
+ return dependencies;
242
+ }
243
+ }
244
+
245
+ export default CppDependencyParser;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * C/C++ Parser Module Exports
3
+ */
4
+
5
+ export * from './cppParser';
6
+ export { default as CppDependencyParser } from './cppParser';