@nahisaho/musubix-security 2.0.1 → 2.1.1

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 (363) hide show
  1. package/dist/analysis/enhanced-taint-analyzer.d.ts +120 -0
  2. package/dist/analysis/enhanced-taint-analyzer.d.ts.map +1 -0
  3. package/dist/analysis/enhanced-taint-analyzer.js +450 -0
  4. package/dist/analysis/enhanced-taint-analyzer.js.map +1 -0
  5. package/dist/analysis/index.d.ts +1 -0
  6. package/dist/analysis/index.d.ts.map +1 -1
  7. package/dist/analysis/index.js +1 -0
  8. package/dist/analysis/index.js.map +1 -1
  9. package/dist/analysis/interprocedural/call-graph-builder.d.ts +192 -0
  10. package/dist/analysis/interprocedural/call-graph-builder.d.ts.map +1 -0
  11. package/dist/analysis/interprocedural/call-graph-builder.js +510 -0
  12. package/dist/analysis/interprocedural/call-graph-builder.js.map +1 -0
  13. package/dist/analysis/interprocedural/dfg-adapter.d.ts +166 -0
  14. package/dist/analysis/interprocedural/dfg-adapter.d.ts.map +1 -0
  15. package/dist/analysis/interprocedural/dfg-adapter.js +455 -0
  16. package/dist/analysis/interprocedural/dfg-adapter.js.map +1 -0
  17. package/dist/analysis/interprocedural/index.d.ts +9 -0
  18. package/dist/analysis/interprocedural/index.d.ts.map +1 -0
  19. package/dist/analysis/interprocedural/index.js +9 -0
  20. package/dist/analysis/interprocedural/index.js.map +1 -0
  21. package/dist/analysis/interprocedural/taint-propagator.d.ts +250 -0
  22. package/dist/analysis/interprocedural/taint-propagator.d.ts.map +1 -0
  23. package/dist/analysis/interprocedural/taint-propagator.js +435 -0
  24. package/dist/analysis/interprocedural/taint-propagator.js.map +1 -0
  25. package/dist/analysis/sanitizers/command-sanitizers.d.ts +12 -0
  26. package/dist/analysis/sanitizers/command-sanitizers.d.ts.map +1 -0
  27. package/dist/analysis/sanitizers/command-sanitizers.js +123 -0
  28. package/dist/analysis/sanitizers/command-sanitizers.js.map +1 -0
  29. package/dist/analysis/sanitizers/html-sanitizers.d.ts +12 -0
  30. package/dist/analysis/sanitizers/html-sanitizers.d.ts.map +1 -0
  31. package/dist/analysis/sanitizers/html-sanitizers.js +213 -0
  32. package/dist/analysis/sanitizers/html-sanitizers.js.map +1 -0
  33. package/dist/analysis/sanitizers/index.d.ts +35 -0
  34. package/dist/analysis/sanitizers/index.d.ts.map +1 -0
  35. package/dist/analysis/sanitizers/index.js +59 -0
  36. package/dist/analysis/sanitizers/index.js.map +1 -0
  37. package/dist/analysis/sanitizers/path-sanitizers.d.ts +12 -0
  38. package/dist/analysis/sanitizers/path-sanitizers.d.ts.map +1 -0
  39. package/dist/analysis/sanitizers/path-sanitizers.js +163 -0
  40. package/dist/analysis/sanitizers/path-sanitizers.js.map +1 -0
  41. package/dist/analysis/sanitizers/sql-sanitizers.d.ts +12 -0
  42. package/dist/analysis/sanitizers/sql-sanitizers.d.ts.map +1 -0
  43. package/dist/analysis/sanitizers/sql-sanitizers.js +216 -0
  44. package/dist/analysis/sanitizers/sql-sanitizers.js.map +1 -0
  45. package/dist/analysis/sanitizers/types.d.ts +78 -0
  46. package/dist/analysis/sanitizers/types.d.ts.map +1 -0
  47. package/dist/analysis/sanitizers/types.js +7 -0
  48. package/dist/analysis/sanitizers/types.js.map +1 -0
  49. package/dist/analysis/sanitizers/validation-sanitizers.d.ts +12 -0
  50. package/dist/analysis/sanitizers/validation-sanitizers.d.ts.map +1 -0
  51. package/dist/analysis/sanitizers/validation-sanitizers.js +268 -0
  52. package/dist/analysis/sanitizers/validation-sanitizers.js.map +1 -0
  53. package/dist/analysis/sinks/code-eval.d.ts +12 -0
  54. package/dist/analysis/sinks/code-eval.d.ts.map +1 -0
  55. package/dist/analysis/sinks/code-eval.js +231 -0
  56. package/dist/analysis/sinks/code-eval.js.map +1 -0
  57. package/dist/analysis/sinks/command-exec.d.ts +12 -0
  58. package/dist/analysis/sinks/command-exec.d.ts.map +1 -0
  59. package/dist/analysis/sinks/command-exec.js +187 -0
  60. package/dist/analysis/sinks/command-exec.js.map +1 -0
  61. package/dist/analysis/sinks/file-operations.d.ts +12 -0
  62. package/dist/analysis/sinks/file-operations.d.ts.map +1 -0
  63. package/dist/analysis/sinks/file-operations.js +239 -0
  64. package/dist/analysis/sinks/file-operations.js.map +1 -0
  65. package/dist/analysis/sinks/html-output.d.ts +12 -0
  66. package/dist/analysis/sinks/html-output.d.ts.map +1 -0
  67. package/dist/analysis/sinks/html-output.js +256 -0
  68. package/dist/analysis/sinks/html-output.js.map +1 -0
  69. package/dist/analysis/sinks/index.d.ts +30 -0
  70. package/dist/analysis/sinks/index.d.ts.map +1 -0
  71. package/dist/analysis/sinks/index.js +46 -0
  72. package/dist/analysis/sinks/index.js.map +1 -0
  73. package/dist/analysis/sinks/sql-query.d.ts +12 -0
  74. package/dist/analysis/sinks/sql-query.d.ts.map +1 -0
  75. package/dist/analysis/sinks/sql-query.js +209 -0
  76. package/dist/analysis/sinks/sql-query.js.map +1 -0
  77. package/dist/analysis/sinks/types.d.ts +97 -0
  78. package/dist/analysis/sinks/types.d.ts.map +1 -0
  79. package/dist/analysis/sinks/types.js +7 -0
  80. package/dist/analysis/sinks/types.js.map +1 -0
  81. package/dist/analysis/sources/database.d.ts +12 -0
  82. package/dist/analysis/sources/database.d.ts.map +1 -0
  83. package/dist/analysis/sources/database.js +211 -0
  84. package/dist/analysis/sources/database.js.map +1 -0
  85. package/dist/analysis/sources/environment.d.ts +12 -0
  86. package/dist/analysis/sources/environment.d.ts.map +1 -0
  87. package/dist/analysis/sources/environment.js +158 -0
  88. package/dist/analysis/sources/environment.js.map +1 -0
  89. package/dist/analysis/sources/file-system.d.ts +12 -0
  90. package/dist/analysis/sources/file-system.d.ts.map +1 -0
  91. package/dist/analysis/sources/file-system.js +180 -0
  92. package/dist/analysis/sources/file-system.js.map +1 -0
  93. package/dist/analysis/sources/http-request.d.ts +12 -0
  94. package/dist/analysis/sources/http-request.d.ts.map +1 -0
  95. package/dist/analysis/sources/http-request.js +179 -0
  96. package/dist/analysis/sources/http-request.js.map +1 -0
  97. package/dist/analysis/sources/index.d.ts +26 -0
  98. package/dist/analysis/sources/index.d.ts.map +1 -0
  99. package/dist/analysis/sources/index.js +40 -0
  100. package/dist/analysis/sources/index.js.map +1 -0
  101. package/dist/analysis/sources/types.d.ts +93 -0
  102. package/dist/analysis/sources/types.d.ts.map +1 -0
  103. package/dist/analysis/sources/types.js +7 -0
  104. package/dist/analysis/sources/types.js.map +1 -0
  105. package/dist/analysis/sources/user-input.d.ts +12 -0
  106. package/dist/analysis/sources/user-input.d.ts.map +1 -0
  107. package/dist/analysis/sources/user-input.js +261 -0
  108. package/dist/analysis/sources/user-input.js.map +1 -0
  109. package/dist/cve/cpe-matcher.d.ts +183 -0
  110. package/dist/cve/cpe-matcher.d.ts.map +1 -0
  111. package/dist/cve/cpe-matcher.js +396 -0
  112. package/dist/cve/cpe-matcher.js.map +1 -0
  113. package/dist/cve/cve-cache.d.ts +225 -0
  114. package/dist/cve/cve-cache.d.ts.map +1 -0
  115. package/dist/cve/cve-cache.js +452 -0
  116. package/dist/cve/cve-cache.js.map +1 -0
  117. package/dist/cve/cve-cache.test.d.ts +6 -0
  118. package/dist/cve/cve-cache.test.d.ts.map +1 -0
  119. package/dist/cve/cve-cache.test.js +363 -0
  120. package/dist/cve/cve-cache.test.js.map +1 -0
  121. package/dist/cve/dependency-parser.d.ts +204 -0
  122. package/dist/cve/dependency-parser.d.ts.map +1 -0
  123. package/dist/cve/dependency-parser.js +338 -0
  124. package/dist/cve/dependency-parser.js.map +1 -0
  125. package/dist/cve/index.d.ts +20 -0
  126. package/dist/cve/index.d.ts.map +1 -0
  127. package/dist/cve/index.js +13 -0
  128. package/dist/cve/index.js.map +1 -0
  129. package/dist/cve/nvd-client.d.ts +137 -0
  130. package/dist/cve/nvd-client.d.ts.map +1 -0
  131. package/dist/cve/nvd-client.js +333 -0
  132. package/dist/cve/nvd-client.js.map +1 -0
  133. package/dist/cve/rate-limiter.d.ts +194 -0
  134. package/dist/cve/rate-limiter.d.ts.map +1 -0
  135. package/dist/cve/rate-limiter.js +276 -0
  136. package/dist/cve/rate-limiter.js.map +1 -0
  137. package/dist/cve/report-generator.d.ts +145 -0
  138. package/dist/cve/report-generator.d.ts.map +1 -0
  139. package/dist/cve/report-generator.js +377 -0
  140. package/dist/cve/report-generator.js.map +1 -0
  141. package/dist/cve/report-generator.test.d.ts +6 -0
  142. package/dist/cve/report-generator.test.d.ts.map +1 -0
  143. package/dist/cve/report-generator.test.js +275 -0
  144. package/dist/cve/report-generator.test.js.map +1 -0
  145. package/dist/cve/vulnerability-scanner.d.ts +198 -0
  146. package/dist/cve/vulnerability-scanner.d.ts.map +1 -0
  147. package/dist/cve/vulnerability-scanner.js +311 -0
  148. package/dist/cve/vulnerability-scanner.js.map +1 -0
  149. package/dist/cve/vulnerability-scanner.test.d.ts +6 -0
  150. package/dist/cve/vulnerability-scanner.test.d.ts.map +1 -0
  151. package/dist/cve/vulnerability-scanner.test.js +329 -0
  152. package/dist/cve/vulnerability-scanner.test.js.map +1 -0
  153. package/dist/index.d.ts +1 -0
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +4 -0
  156. package/dist/index.js.map +1 -1
  157. package/dist/rules/config/config-parser.d.ts +119 -0
  158. package/dist/rules/config/config-parser.d.ts.map +1 -0
  159. package/dist/rules/config/config-parser.js +376 -0
  160. package/dist/rules/config/config-parser.js.map +1 -0
  161. package/dist/rules/config/index.d.ts +8 -0
  162. package/dist/rules/config/index.d.ts.map +1 -0
  163. package/dist/rules/config/index.js +8 -0
  164. package/dist/rules/config/index.js.map +1 -0
  165. package/dist/rules/config/profiles.d.ts +85 -0
  166. package/dist/rules/config/profiles.d.ts.map +1 -0
  167. package/dist/rules/config/profiles.js +226 -0
  168. package/dist/rules/config/profiles.js.map +1 -0
  169. package/dist/rules/cwe/cwe-119-buffer-overflow.d.ts +9 -0
  170. package/dist/rules/cwe/cwe-119-buffer-overflow.d.ts.map +1 -0
  171. package/dist/rules/cwe/cwe-119-buffer-overflow.js +54 -0
  172. package/dist/rules/cwe/cwe-119-buffer-overflow.js.map +1 -0
  173. package/dist/rules/cwe/cwe-125-oob-read.d.ts +20 -0
  174. package/dist/rules/cwe/cwe-125-oob-read.d.ts.map +1 -0
  175. package/dist/rules/cwe/cwe-125-oob-read.js +247 -0
  176. package/dist/rules/cwe/cwe-125-oob-read.js.map +1 -0
  177. package/dist/rules/cwe/cwe-190-integer-overflow.d.ts +9 -0
  178. package/dist/rules/cwe/cwe-190-integer-overflow.d.ts.map +1 -0
  179. package/dist/rules/cwe/cwe-190-integer-overflow.js +55 -0
  180. package/dist/rules/cwe/cwe-190-integer-overflow.js.map +1 -0
  181. package/dist/rules/cwe/cwe-20-input-validation.d.ts +21 -0
  182. package/dist/rules/cwe/cwe-20-input-validation.d.ts.map +1 -0
  183. package/dist/rules/cwe/cwe-20-input-validation.js +342 -0
  184. package/dist/rules/cwe/cwe-20-input-validation.js.map +1 -0
  185. package/dist/rules/cwe/cwe-22-path-traversal.d.ts +20 -0
  186. package/dist/rules/cwe/cwe-22-path-traversal.d.ts.map +1 -0
  187. package/dist/rules/cwe/cwe-22-path-traversal.js +306 -0
  188. package/dist/rules/cwe/cwe-22-path-traversal.js.map +1 -0
  189. package/dist/rules/cwe/cwe-269-improper-privilege.d.ts +9 -0
  190. package/dist/rules/cwe/cwe-269-improper-privilege.d.ts.map +1 -0
  191. package/dist/rules/cwe/cwe-269-improper-privilege.js +58 -0
  192. package/dist/rules/cwe/cwe-269-improper-privilege.js.map +1 -0
  193. package/dist/rules/cwe/cwe-276-default-permissions.d.ts +9 -0
  194. package/dist/rules/cwe/cwe-276-default-permissions.d.ts.map +1 -0
  195. package/dist/rules/cwe/cwe-276-default-permissions.js +54 -0
  196. package/dist/rules/cwe/cwe-276-default-permissions.js.map +1 -0
  197. package/dist/rules/cwe/cwe-287-improper-auth.d.ts +9 -0
  198. package/dist/rules/cwe/cwe-287-improper-auth.d.ts.map +1 -0
  199. package/dist/rules/cwe/cwe-287-improper-auth.js +57 -0
  200. package/dist/rules/cwe/cwe-287-improper-auth.js.map +1 -0
  201. package/dist/rules/cwe/cwe-306-missing-auth-critical.d.ts +9 -0
  202. package/dist/rules/cwe/cwe-306-missing-auth-critical.d.ts.map +1 -0
  203. package/dist/rules/cwe/cwe-306-missing-auth-critical.js +53 -0
  204. package/dist/rules/cwe/cwe-306-missing-auth-critical.js.map +1 -0
  205. package/dist/rules/cwe/cwe-352-csrf.d.ts +9 -0
  206. package/dist/rules/cwe/cwe-352-csrf.d.ts.map +1 -0
  207. package/dist/rules/cwe/cwe-352-csrf.js +51 -0
  208. package/dist/rules/cwe/cwe-352-csrf.js.map +1 -0
  209. package/dist/rules/cwe/cwe-362-race-condition.d.ts +9 -0
  210. package/dist/rules/cwe/cwe-362-race-condition.d.ts.map +1 -0
  211. package/dist/rules/cwe/cwe-362-race-condition.js +55 -0
  212. package/dist/rules/cwe/cwe-362-race-condition.js.map +1 -0
  213. package/dist/rules/cwe/cwe-416-use-after-free.d.ts +23 -0
  214. package/dist/rules/cwe/cwe-416-use-after-free.d.ts.map +1 -0
  215. package/dist/rules/cwe/cwe-416-use-after-free.js +402 -0
  216. package/dist/rules/cwe/cwe-416-use-after-free.js.map +1 -0
  217. package/dist/rules/cwe/cwe-434-file-upload.d.ts +9 -0
  218. package/dist/rules/cwe/cwe-434-file-upload.d.ts.map +1 -0
  219. package/dist/rules/cwe/cwe-434-file-upload.js +55 -0
  220. package/dist/rules/cwe/cwe-434-file-upload.js.map +1 -0
  221. package/dist/rules/cwe/cwe-476-null-deref.d.ts +9 -0
  222. package/dist/rules/cwe/cwe-476-null-deref.d.ts.map +1 -0
  223. package/dist/rules/cwe/cwe-476-null-deref.js +55 -0
  224. package/dist/rules/cwe/cwe-476-null-deref.js.map +1 -0
  225. package/dist/rules/cwe/cwe-502-deserialization.d.ts +9 -0
  226. package/dist/rules/cwe/cwe-502-deserialization.d.ts.map +1 -0
  227. package/dist/rules/cwe/cwe-502-deserialization.js +57 -0
  228. package/dist/rules/cwe/cwe-502-deserialization.js.map +1 -0
  229. package/dist/rules/cwe/cwe-77-command-injection.d.ts +9 -0
  230. package/dist/rules/cwe/cwe-77-command-injection.d.ts.map +1 -0
  231. package/dist/rules/cwe/cwe-77-command-injection.js +55 -0
  232. package/dist/rules/cwe/cwe-77-command-injection.js.map +1 -0
  233. package/dist/rules/cwe/cwe-78-command-injection.d.ts +20 -0
  234. package/dist/rules/cwe/cwe-78-command-injection.d.ts.map +1 -0
  235. package/dist/rules/cwe/cwe-78-command-injection.js +259 -0
  236. package/dist/rules/cwe/cwe-78-command-injection.js.map +1 -0
  237. package/dist/rules/cwe/cwe-787-oob-write.d.ts +21 -0
  238. package/dist/rules/cwe/cwe-787-oob-write.d.ts.map +1 -0
  239. package/dist/rules/cwe/cwe-787-oob-write.js +321 -0
  240. package/dist/rules/cwe/cwe-787-oob-write.js.map +1 -0
  241. package/dist/rules/cwe/cwe-79-xss.d.ts +22 -0
  242. package/dist/rules/cwe/cwe-79-xss.d.ts.map +1 -0
  243. package/dist/rules/cwe/cwe-79-xss.js +386 -0
  244. package/dist/rules/cwe/cwe-79-xss.js.map +1 -0
  245. package/dist/rules/cwe/cwe-798-hardcoded-credentials.d.ts +9 -0
  246. package/dist/rules/cwe/cwe-798-hardcoded-credentials.d.ts.map +1 -0
  247. package/dist/rules/cwe/cwe-798-hardcoded-credentials.js +58 -0
  248. package/dist/rules/cwe/cwe-798-hardcoded-credentials.js.map +1 -0
  249. package/dist/rules/cwe/cwe-862-missing-auth.d.ts +9 -0
  250. package/dist/rules/cwe/cwe-862-missing-auth.d.ts.map +1 -0
  251. package/dist/rules/cwe/cwe-862-missing-auth.js +55 -0
  252. package/dist/rules/cwe/cwe-862-missing-auth.js.map +1 -0
  253. package/dist/rules/cwe/cwe-863-incorrect-auth.d.ts +9 -0
  254. package/dist/rules/cwe/cwe-863-incorrect-auth.d.ts.map +1 -0
  255. package/dist/rules/cwe/cwe-863-incorrect-auth.js +58 -0
  256. package/dist/rules/cwe/cwe-863-incorrect-auth.js.map +1 -0
  257. package/dist/rules/cwe/cwe-89-sql-injection.d.ts +21 -0
  258. package/dist/rules/cwe/cwe-89-sql-injection.d.ts.map +1 -0
  259. package/dist/rules/cwe/cwe-89-sql-injection.js +456 -0
  260. package/dist/rules/cwe/cwe-89-sql-injection.js.map +1 -0
  261. package/dist/rules/cwe/cwe-918-ssrf.d.ts +9 -0
  262. package/dist/rules/cwe/cwe-918-ssrf.d.ts.map +1 -0
  263. package/dist/rules/cwe/cwe-918-ssrf.js +59 -0
  264. package/dist/rules/cwe/cwe-918-ssrf.js.map +1 -0
  265. package/dist/rules/cwe/cwe-94-code-injection.d.ts +9 -0
  266. package/dist/rules/cwe/cwe-94-code-injection.d.ts.map +1 -0
  267. package/dist/rules/cwe/cwe-94-code-injection.js +59 -0
  268. package/dist/rules/cwe/cwe-94-code-injection.js.map +1 -0
  269. package/dist/rules/cwe/index.d.ts +43 -0
  270. package/dist/rules/cwe/index.d.ts.map +1 -0
  271. package/dist/rules/cwe/index.js +99 -0
  272. package/dist/rules/cwe/index.js.map +1 -0
  273. package/dist/rules/engine/index.d.ts +10 -0
  274. package/dist/rules/engine/index.d.ts.map +1 -0
  275. package/dist/rules/engine/index.js +9 -0
  276. package/dist/rules/engine/index.js.map +1 -0
  277. package/dist/rules/engine/rule-context.d.ts +99 -0
  278. package/dist/rules/engine/rule-context.d.ts.map +1 -0
  279. package/dist/rules/engine/rule-context.js +175 -0
  280. package/dist/rules/engine/rule-context.js.map +1 -0
  281. package/dist/rules/engine/rule-engine.d.ts +132 -0
  282. package/dist/rules/engine/rule-engine.d.ts.map +1 -0
  283. package/dist/rules/engine/rule-engine.js +379 -0
  284. package/dist/rules/engine/rule-engine.js.map +1 -0
  285. package/dist/rules/engine/rule-registry.d.ts +133 -0
  286. package/dist/rules/engine/rule-registry.d.ts.map +1 -0
  287. package/dist/rules/engine/rule-registry.js +281 -0
  288. package/dist/rules/engine/rule-registry.js.map +1 -0
  289. package/dist/rules/index.d.ts +14 -0
  290. package/dist/rules/index.d.ts.map +1 -0
  291. package/dist/rules/index.js +16 -0
  292. package/dist/rules/index.js.map +1 -0
  293. package/dist/rules/owasp/a01-broken-access-control.d.ts +19 -0
  294. package/dist/rules/owasp/a01-broken-access-control.d.ts.map +1 -0
  295. package/dist/rules/owasp/a01-broken-access-control.js +295 -0
  296. package/dist/rules/owasp/a01-broken-access-control.js.map +1 -0
  297. package/dist/rules/owasp/a02-cryptographic-failures.d.ts +19 -0
  298. package/dist/rules/owasp/a02-cryptographic-failures.d.ts.map +1 -0
  299. package/dist/rules/owasp/a02-cryptographic-failures.js +327 -0
  300. package/dist/rules/owasp/a02-cryptographic-failures.js.map +1 -0
  301. package/dist/rules/owasp/a03-injection.d.ts +21 -0
  302. package/dist/rules/owasp/a03-injection.d.ts.map +1 -0
  303. package/dist/rules/owasp/a03-injection.js +342 -0
  304. package/dist/rules/owasp/a03-injection.js.map +1 -0
  305. package/dist/rules/owasp/a04-insecure-design.d.ts +19 -0
  306. package/dist/rules/owasp/a04-insecure-design.d.ts.map +1 -0
  307. package/dist/rules/owasp/a04-insecure-design.js +403 -0
  308. package/dist/rules/owasp/a04-insecure-design.js.map +1 -0
  309. package/dist/rules/owasp/a05-security-misconfiguration.d.ts +19 -0
  310. package/dist/rules/owasp/a05-security-misconfiguration.d.ts.map +1 -0
  311. package/dist/rules/owasp/a05-security-misconfiguration.js +371 -0
  312. package/dist/rules/owasp/a05-security-misconfiguration.js.map +1 -0
  313. package/dist/rules/owasp/a06-vulnerable-components.d.ts +18 -0
  314. package/dist/rules/owasp/a06-vulnerable-components.d.ts.map +1 -0
  315. package/dist/rules/owasp/a06-vulnerable-components.js +243 -0
  316. package/dist/rules/owasp/a06-vulnerable-components.js.map +1 -0
  317. package/dist/rules/owasp/a07-auth-failures.d.ts +19 -0
  318. package/dist/rules/owasp/a07-auth-failures.d.ts.map +1 -0
  319. package/dist/rules/owasp/a07-auth-failures.js +300 -0
  320. package/dist/rules/owasp/a07-auth-failures.js.map +1 -0
  321. package/dist/rules/owasp/a08-integrity-failures.d.ts +18 -0
  322. package/dist/rules/owasp/a08-integrity-failures.d.ts.map +1 -0
  323. package/dist/rules/owasp/a08-integrity-failures.js +306 -0
  324. package/dist/rules/owasp/a08-integrity-failures.js.map +1 -0
  325. package/dist/rules/owasp/a09-logging-failures.d.ts +18 -0
  326. package/dist/rules/owasp/a09-logging-failures.d.ts.map +1 -0
  327. package/dist/rules/owasp/a09-logging-failures.js +339 -0
  328. package/dist/rules/owasp/a09-logging-failures.js.map +1 -0
  329. package/dist/rules/owasp/a10-ssrf.d.ts +18 -0
  330. package/dist/rules/owasp/a10-ssrf.d.ts.map +1 -0
  331. package/dist/rules/owasp/a10-ssrf.js +349 -0
  332. package/dist/rules/owasp/a10-ssrf.js.map +1 -0
  333. package/dist/rules/owasp/index.d.ts +20 -0
  334. package/dist/rules/owasp/index.d.ts.map +1 -0
  335. package/dist/rules/owasp/index.js +53 -0
  336. package/dist/rules/owasp/index.js.map +1 -0
  337. package/dist/rules/types.d.ts +277 -0
  338. package/dist/rules/types.d.ts.map +1 -0
  339. package/dist/rules/types.js +34 -0
  340. package/dist/rules/types.js.map +1 -0
  341. package/dist/tests/integration/epic-integration.test.d.ts +7 -0
  342. package/dist/tests/integration/epic-integration.test.d.ts.map +1 -0
  343. package/dist/tests/integration/epic-integration.test.js +390 -0
  344. package/dist/tests/integration/epic-integration.test.js.map +1 -0
  345. package/dist/tests/rules/cwe/cwe-top25-1-13.test.d.ts +2 -0
  346. package/dist/tests/rules/cwe/cwe-top25-1-13.test.d.ts.map +1 -0
  347. package/dist/tests/rules/cwe/cwe-top25-1-13.test.js +154 -0
  348. package/dist/tests/rules/cwe/cwe-top25-1-13.test.js.map +1 -0
  349. package/dist/tests/rules/cwe/cwe-top25-14-25.test.d.ts +2 -0
  350. package/dist/tests/rules/cwe/cwe-top25-14-25.test.d.ts.map +1 -0
  351. package/dist/tests/rules/cwe/cwe-top25-14-25.test.js +121 -0
  352. package/dist/tests/rules/cwe/cwe-top25-14-25.test.js.map +1 -0
  353. package/dist/types/cve.d.ts +278 -0
  354. package/dist/types/cve.d.ts.map +1 -0
  355. package/dist/types/cve.js +7 -0
  356. package/dist/types/cve.js.map +1 -0
  357. package/dist/types/index.d.ts +2 -0
  358. package/dist/types/index.d.ts.map +1 -1
  359. package/dist/types/rule.d.ts +245 -0
  360. package/dist/types/rule.d.ts.map +1 -0
  361. package/dist/types/rule.js +7 -0
  362. package/dist/types/rule.js.map +1 -0
  363. package/package.json +1 -1
@@ -0,0 +1,120 @@
1
+ /**
2
+ * @fileoverview Enhanced Taint Analyzer with interprocedural analysis
3
+ * @module @nahisaho/musubix-security/analysis/enhanced-taint-analyzer
4
+ * @trace REQ-SEC-001 (EARS: THE system SHALL provide interprocedural taint analysis)
5
+ * @trace TSK-SEC-008
6
+ */
7
+ import type { TaintResult, TaintAnalysisOptions } from '../types/index.js';
8
+ import type { DataFlowGraph } from '@nahisaho/musubix-dfg';
9
+ import { type CallGraph, type CallGraphStatistics } from './interprocedural/call-graph-builder.js';
10
+ import { type TaintFinding } from './interprocedural/taint-propagator.js';
11
+ import { type DFGTaintResult, type DFGTaintStatistics } from './interprocedural/dfg-adapter.js';
12
+ import type { SourceDefinition } from './sources/types.js';
13
+ import type { SinkDefinition } from './sinks/types.js';
14
+ /**
15
+ * Options for enhanced taint analysis
16
+ */
17
+ export interface EnhancedTaintOptions extends TaintAnalysisOptions {
18
+ /** Enable interprocedural analysis */
19
+ interprocedural?: boolean;
20
+ /** Enable DFG-based analysis */
21
+ useDFG?: boolean;
22
+ /** Include call graph building */
23
+ buildCallGraph?: boolean;
24
+ /** Maximum call depth for interprocedural analysis */
25
+ maxCallDepth?: number;
26
+ /** Track implicit flows (control dependencies) */
27
+ trackImplicitFlows?: boolean;
28
+ /** Custom source definitions */
29
+ customSourceDefinitions?: SourceDefinition[];
30
+ /** Custom sink definitions */
31
+ customSinkDefinitions?: SinkDefinition[];
32
+ }
33
+ /**
34
+ * Result from enhanced taint analysis
35
+ */
36
+ export interface EnhancedTaintResult extends TaintResult {
37
+ /** Call graph (if built) */
38
+ callGraph?: CallGraph;
39
+ /** Call graph statistics */
40
+ callGraphStats?: CallGraphStatistics;
41
+ /** Interprocedural findings */
42
+ interproceduralFindings?: TaintFinding[];
43
+ /** DFG-based results (if enabled) */
44
+ dfgResults?: DFGTaintResult[];
45
+ /** DFG statistics */
46
+ dfgStats?: DFGTaintStatistics;
47
+ /** Analysis mode used */
48
+ analysisMode: 'intraprocedural' | 'interprocedural' | 'dfg' | 'combined';
49
+ }
50
+ /**
51
+ * Enhanced Taint Analyzer with interprocedural capabilities
52
+ * @trace REQ-SEC-001, TSK-SEC-008
53
+ */
54
+ export declare class EnhancedTaintAnalyzer {
55
+ private baseAnalyzer;
56
+ private callGraphBuilder;
57
+ private taintPropagator;
58
+ private dfgAdapter;
59
+ private options;
60
+ private sourceDefinitions;
61
+ private sinkDefinitions;
62
+ constructor(options?: EnhancedTaintOptions);
63
+ /**
64
+ * Reset analysis state (for testing)
65
+ */
66
+ static resetState(): void;
67
+ /**
68
+ * Analyze a directory with enhanced taint analysis
69
+ */
70
+ analyze(rootPath: string): Promise<EnhancedTaintResult>;
71
+ /**
72
+ * Analyze with DFG
73
+ */
74
+ analyzeWithDFG(rootPath: string, dfgs: DataFlowGraph[]): Promise<EnhancedTaintResult>;
75
+ /**
76
+ * Extract source locations from base analysis
77
+ */
78
+ private extractSourceLocations;
79
+ /**
80
+ * Merge intraprocedural and interprocedural findings
81
+ */
82
+ private mergeFindings;
83
+ /**
84
+ * Convert TaintFinding to TaintPath
85
+ */
86
+ private convertFindingToPath;
87
+ /**
88
+ * Map TaintFlowType to TaintFlowStep operation
89
+ */
90
+ private mapFlowTypeToOperation;
91
+ /**
92
+ * Convert DFG results to TaintPath format
93
+ */
94
+ private convertDFGPaths;
95
+ /**
96
+ * Build summary from results
97
+ */
98
+ private buildSummary;
99
+ /**
100
+ * Get source definitions
101
+ */
102
+ getSourceDefinitions(): SourceDefinition[];
103
+ /**
104
+ * Get sink definitions
105
+ */
106
+ getSinkDefinitions(): SinkDefinition[];
107
+ /**
108
+ * Add custom source definition
109
+ */
110
+ addSourceDefinition(source: SourceDefinition): void;
111
+ /**
112
+ * Add custom sink definition
113
+ */
114
+ addSinkDefinition(sink: SinkDefinition): void;
115
+ }
116
+ /**
117
+ * Create enhanced taint analyzer
118
+ */
119
+ export declare function createEnhancedTaintAnalyzer(options?: EnhancedTaintOptions): EnhancedTaintAnalyzer;
120
+ //# sourceMappingURL=enhanced-taint-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhanced-taint-analyzer.d.ts","sourceRoot":"","sources":["../../src/analysis/enhanced-taint-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,450 @@
1
+ /**
2
+ * @fileoverview Enhanced Taint Analyzer with interprocedural analysis
3
+ * @module @nahisaho/musubix-security/analysis/enhanced-taint-analyzer
4
+ * @trace REQ-SEC-001 (EARS: THE system SHALL provide interprocedural taint analysis)
5
+ * @trace TSK-SEC-008
6
+ */
7
+ import { TaintAnalyzer, resetTaintCounters } from './taint-analyzer.js';
8
+ import { CallGraphBuilder } from './interprocedural/call-graph-builder.js';
9
+ import { TaintPropagator } from './interprocedural/taint-propagator.js';
10
+ import { DFGTaintAdapter } from './interprocedural/dfg-adapter.js';
11
+ // Import aggregated built-ins
12
+ import { ALL_BUILTIN_SOURCES } from './sources/index.js';
13
+ import { ALL_BUILTIN_SINKS } from './sinks/index.js';
14
+ import { ALL_BUILTIN_SANITIZERS } from './sanitizers/index.js';
15
+ /**
16
+ * Enhanced Taint Analyzer with interprocedural capabilities
17
+ * @trace REQ-SEC-001, TSK-SEC-008
18
+ */
19
+ export class EnhancedTaintAnalyzer {
20
+ baseAnalyzer;
21
+ callGraphBuilder = null;
22
+ taintPropagator = null;
23
+ dfgAdapter = null;
24
+ options;
25
+ sourceDefinitions;
26
+ sinkDefinitions;
27
+ constructor(options = {}) {
28
+ this.baseAnalyzer = new TaintAnalyzer(options);
29
+ this.options = {
30
+ // Base options
31
+ customSources: options.customSources ?? [],
32
+ customSinks: options.customSinks ?? [],
33
+ additionalSanitizers: options.additionalSanitizers ?? [],
34
+ excludePatterns: options.excludePatterns ?? ['node_modules', 'dist', '.git'],
35
+ maxPathDepth: options.maxPathDepth ?? 10,
36
+ trackAsync: options.trackAsync ?? true,
37
+ // Enhanced options
38
+ interprocedural: options.interprocedural ?? true,
39
+ useDFG: options.useDFG ?? false,
40
+ buildCallGraph: options.buildCallGraph ?? true,
41
+ maxCallDepth: options.maxCallDepth ?? 5,
42
+ trackImplicitFlows: options.trackImplicitFlows ?? false,
43
+ customSourceDefinitions: options.customSourceDefinitions ?? [],
44
+ customSinkDefinitions: options.customSinkDefinitions ?? [],
45
+ };
46
+ // Collect all source definitions
47
+ this.sourceDefinitions = [
48
+ ...ALL_BUILTIN_SOURCES,
49
+ ...(this.options.customSourceDefinitions ?? []),
50
+ ];
51
+ // Collect all sink definitions
52
+ this.sinkDefinitions = [
53
+ ...ALL_BUILTIN_SINKS,
54
+ ...(this.options.customSinkDefinitions ?? []),
55
+ ];
56
+ // Initialize interprocedural components if enabled
57
+ if (this.options.interprocedural || this.options.buildCallGraph) {
58
+ this.callGraphBuilder = new CallGraphBuilder({
59
+ maxDepth: this.options.maxCallDepth,
60
+ trackCallbacks: true,
61
+ includeAnonymous: true,
62
+ });
63
+ this.taintPropagator = new TaintPropagator(this.sourceDefinitions, this.sinkDefinitions, [...ALL_BUILTIN_SANITIZERS], {
64
+ maxDepth: this.options.maxCallDepth,
65
+ trackImplicitFlows: this.options.trackImplicitFlows,
66
+ minConfidence: 0.5,
67
+ });
68
+ }
69
+ // Initialize DFG adapter if enabled
70
+ if (this.options.useDFG) {
71
+ this.dfgAdapter = new DFGTaintAdapter(this.sourceDefinitions, this.sinkDefinitions, {
72
+ trackAliasing: true,
73
+ trackControlDependencies: this.options.trackImplicitFlows,
74
+ maxDepth: (this.options.maxCallDepth ?? 5) * 4,
75
+ minConfidence: 0.5,
76
+ });
77
+ }
78
+ }
79
+ /**
80
+ * Reset analysis state (for testing)
81
+ */
82
+ static resetState() {
83
+ resetTaintCounters();
84
+ }
85
+ /**
86
+ * Analyze a directory with enhanced taint analysis
87
+ */
88
+ async analyze(rootPath) {
89
+ const startTime = Date.now();
90
+ // Step 1: Run base intraprocedural analysis
91
+ const baseResult = await this.baseAnalyzer.analyze(rootPath);
92
+ // Determine analysis mode
93
+ let analysisMode = 'intraprocedural';
94
+ if (this.options.useDFG && this.options.interprocedural) {
95
+ analysisMode = 'combined';
96
+ }
97
+ else if (this.options.useDFG) {
98
+ analysisMode = 'dfg';
99
+ }
100
+ else if (this.options.interprocedural) {
101
+ analysisMode = 'interprocedural';
102
+ }
103
+ // Initialize enhanced result
104
+ const result = {
105
+ ...baseResult,
106
+ analysisMode,
107
+ };
108
+ // Step 2: Build call graph if enabled
109
+ if (this.options.buildCallGraph && this.callGraphBuilder) {
110
+ try {
111
+ const callGraph = await this.callGraphBuilder.buildFromDirectory(rootPath);
112
+ result.callGraph = callGraph;
113
+ result.callGraphStats = this.callGraphBuilder.getStatistics(result.callGraph);
114
+ }
115
+ catch (error) {
116
+ console.warn(`Warning: Failed to build call graph: ${error}`);
117
+ }
118
+ }
119
+ // Step 3: Run interprocedural analysis if enabled
120
+ if (this.options.interprocedural && this.taintPropagator && result.callGraph) {
121
+ try {
122
+ const sourceLocations = this.extractSourceLocations(baseResult);
123
+ const findings = this.taintPropagator.analyze(result.callGraph, sourceLocations);
124
+ result.interproceduralFindings = findings;
125
+ // Merge interprocedural findings into unsafe paths
126
+ const mergedPaths = this.mergeFindings(result.unsafePaths, findings);
127
+ result.unsafePaths = mergedPaths;
128
+ }
129
+ catch (error) {
130
+ console.warn(`Warning: Interprocedural analysis failed: ${error}`);
131
+ }
132
+ }
133
+ // Update duration
134
+ result.duration = Date.now() - startTime;
135
+ // Update summary
136
+ result.summary = this.buildSummary(result);
137
+ return result;
138
+ }
139
+ /**
140
+ * Analyze with DFG
141
+ */
142
+ async analyzeWithDFG(rootPath, dfgs) {
143
+ const startTime = Date.now();
144
+ // Run base analysis
145
+ const baseResult = await this.baseAnalyzer.analyze(rootPath);
146
+ const result = {
147
+ ...baseResult,
148
+ analysisMode: 'dfg',
149
+ dfgResults: [],
150
+ };
151
+ // Analyze each DFG
152
+ if (this.dfgAdapter && dfgs.length > 0) {
153
+ let totalStats = {
154
+ totalNodes: 0,
155
+ taintedNodes: 0,
156
+ sources: 0,
157
+ sinks: 0,
158
+ vulnerablePaths: 0,
159
+ sanitizedPaths: 0,
160
+ avgConfidence: 0,
161
+ };
162
+ for (const dfg of dfgs) {
163
+ const dfgResult = this.dfgAdapter.analyzeTaint(dfg);
164
+ result.dfgResults.push(dfgResult);
165
+ // Accumulate statistics
166
+ const stats = this.dfgAdapter.getStatistics(dfgResult);
167
+ totalStats.totalNodes += stats.totalNodes;
168
+ totalStats.taintedNodes += stats.taintedNodes;
169
+ totalStats.sources += stats.sources;
170
+ totalStats.sinks += stats.sinks;
171
+ totalStats.vulnerablePaths += stats.vulnerablePaths;
172
+ totalStats.sanitizedPaths += stats.sanitizedPaths;
173
+ }
174
+ // Calculate average confidence
175
+ if (totalStats.vulnerablePaths > 0) {
176
+ const totalConfidence = result.dfgResults.reduce((sum, r) => {
177
+ return sum + r.vulnerablePaths.reduce((s, p) => s + p.confidence, 0);
178
+ }, 0);
179
+ totalStats.avgConfidence = totalConfidence / totalStats.vulnerablePaths;
180
+ }
181
+ result.dfgStats = totalStats;
182
+ // Convert DFG paths to TaintPath format
183
+ const dfgPaths = this.convertDFGPaths(result.dfgResults);
184
+ result.unsafePaths = [...result.unsafePaths, ...dfgPaths];
185
+ }
186
+ result.duration = Date.now() - startTime;
187
+ result.summary = this.buildSummary(result);
188
+ return result;
189
+ }
190
+ /**
191
+ * Extract source locations from base analysis
192
+ */
193
+ extractSourceLocations(baseResult) {
194
+ return baseResult.sources.map((source) => ({
195
+ nodeId: source.id,
196
+ identifier: source.variableName,
197
+ line: source.location.startLine,
198
+ column: source.location.startColumn,
199
+ filePath: source.location.file,
200
+ }));
201
+ }
202
+ /**
203
+ * Merge intraprocedural and interprocedural findings
204
+ */
205
+ mergeFindings(intraPaths, interFindings) {
206
+ const merged = [...intraPaths];
207
+ const existingKeys = new Set(intraPaths.map(p => `${p.source.location.file}:${p.source.location.startLine}:${p.sink.location.file}:${p.sink.location.startLine}`));
208
+ // Convert interprocedural findings to TaintPath format
209
+ for (const finding of interFindings) {
210
+ const key = `${finding.source.location.file}:${finding.source.location.line}:${finding.sink.location.file}:${finding.sink.location.line}`;
211
+ // Skip if already covered by intraprocedural analysis
212
+ if (existingKeys.has(key))
213
+ continue;
214
+ merged.push(this.convertFindingToPath(finding));
215
+ }
216
+ return merged;
217
+ }
218
+ /**
219
+ * Convert TaintFinding to TaintPath
220
+ */
221
+ convertFindingToPath(finding) {
222
+ const sourceCategory = (finding.source.type || 'user-input');
223
+ const sinkCategory = finding.sink.category;
224
+ return {
225
+ id: finding.id,
226
+ source: {
227
+ id: finding.source.id,
228
+ category: sourceCategory,
229
+ location: {
230
+ file: finding.source.location.file,
231
+ startLine: finding.source.location.line,
232
+ startColumn: finding.source.location.column,
233
+ endLine: finding.source.location.line,
234
+ endColumn: finding.source.location.column + (finding.source.name?.length ?? 0),
235
+ },
236
+ variableName: finding.source.name ?? 'unknown',
237
+ expression: finding.source.name ?? 'unknown',
238
+ description: `Taint source: ${finding.source.name}`,
239
+ confidence: finding.source.confidence,
240
+ },
241
+ sink: {
242
+ id: finding.sink.id,
243
+ category: sinkCategory,
244
+ location: {
245
+ file: finding.sink.location.file,
246
+ startLine: finding.sink.location.line,
247
+ startColumn: finding.sink.location.column,
248
+ endLine: finding.sink.location.line,
249
+ endColumn: finding.sink.location.column + (finding.sink.name?.length ?? 0),
250
+ },
251
+ functionName: finding.sink.name ?? 'unknown',
252
+ argumentIndex: 0,
253
+ expectedSanitizers: [],
254
+ description: `Taint sink: ${finding.sink.name}`,
255
+ severity: finding.severity,
256
+ },
257
+ steps: finding.flowPath.map((edge, idx) => ({
258
+ index: idx,
259
+ location: {
260
+ file: edge.from.filePath,
261
+ startLine: edge.from.line,
262
+ startColumn: edge.from.column,
263
+ endLine: edge.from.line,
264
+ endColumn: edge.from.column,
265
+ },
266
+ expression: edge.from.identifier ?? '',
267
+ operation: this.mapFlowTypeToOperation(edge.flowType),
268
+ sanitized: edge.sanitizersApplied.length > 0,
269
+ })),
270
+ sanitized: finding.sanitizationComplete,
271
+ confidence: finding.confidence,
272
+ length: finding.flowPath.length,
273
+ };
274
+ }
275
+ /**
276
+ * Map TaintFlowType to TaintFlowStep operation
277
+ */
278
+ mapFlowTypeToOperation(flowType) {
279
+ const mapping = {
280
+ 'assignment': 'assignment',
281
+ 'parameter': 'parameter',
282
+ 'return': 'return',
283
+ 'property-access': 'property-access',
284
+ 'method-call': 'call',
285
+ 'callback': 'call',
286
+ 'implicit': 'assignment',
287
+ };
288
+ return mapping[flowType] ?? 'assignment';
289
+ }
290
+ /**
291
+ * Convert DFG results to TaintPath format
292
+ */
293
+ convertDFGPaths(dfgResults) {
294
+ const paths = [];
295
+ let pathCounter = 0;
296
+ for (const dfgResult of dfgResults) {
297
+ for (const vulnPath of dfgResult.vulnerablePaths) {
298
+ if (vulnPath.isSanitized)
299
+ continue; // Skip sanitized paths
300
+ pathCounter++;
301
+ paths.push({
302
+ id: `DFG-PATH-${String(pathCounter).padStart(4, '0')}`,
303
+ source: {
304
+ id: `DFG-SRC-${pathCounter}`,
305
+ category: 'user-input',
306
+ location: {
307
+ file: vulnPath.source.filePath,
308
+ startLine: vulnPath.source.line,
309
+ startColumn: vulnPath.source.column,
310
+ endLine: vulnPath.source.line,
311
+ endColumn: vulnPath.source.column,
312
+ },
313
+ variableName: vulnPath.source.identifier ?? '',
314
+ expression: vulnPath.source.identifier ?? '',
315
+ description: 'DFG-detected taint source',
316
+ confidence: vulnPath.confidence,
317
+ },
318
+ sink: {
319
+ id: `DFG-SNK-${pathCounter}`,
320
+ category: 'sql-query',
321
+ location: {
322
+ file: vulnPath.sink.filePath,
323
+ startLine: vulnPath.sink.line,
324
+ startColumn: vulnPath.sink.column,
325
+ endLine: vulnPath.sink.line,
326
+ endColumn: vulnPath.sink.column,
327
+ },
328
+ functionName: vulnPath.sink.identifier ?? '',
329
+ argumentIndex: 0,
330
+ expectedSanitizers: [],
331
+ description: 'DFG-detected taint sink',
332
+ severity: 'high',
333
+ },
334
+ steps: vulnPath.path.map((nodeId, index) => ({
335
+ index,
336
+ location: {
337
+ file: vulnPath.source.filePath,
338
+ startLine: 0,
339
+ startColumn: 0,
340
+ endLine: 0,
341
+ endColumn: 0,
342
+ },
343
+ expression: nodeId,
344
+ operation: 'assignment',
345
+ sanitized: false,
346
+ })),
347
+ sanitized: vulnPath.isSanitized,
348
+ confidence: vulnPath.confidence,
349
+ length: vulnPath.path.length,
350
+ });
351
+ }
352
+ }
353
+ return paths;
354
+ }
355
+ /**
356
+ * Build summary from results
357
+ */
358
+ buildSummary(result) {
359
+ const bySeverity = {
360
+ critical: 0,
361
+ high: 0,
362
+ medium: 0,
363
+ low: 0,
364
+ info: 0,
365
+ };
366
+ const bySourceCategory = {
367
+ 'user-input': 0,
368
+ 'database': 0,
369
+ 'file-system': 0,
370
+ 'network': 0,
371
+ 'environment': 0,
372
+ 'config': 0,
373
+ 'cli-args': 0,
374
+ };
375
+ const bySinkCategory = {
376
+ 'sql-query': 0,
377
+ 'nosql-query': 0,
378
+ 'command-exec': 0,
379
+ 'file-write': 0,
380
+ 'file-read': 0,
381
+ 'html-output': 0,
382
+ 'redirect': 0,
383
+ 'eval': 0,
384
+ 'deserialization': 0,
385
+ 'ldap-query': 0,
386
+ 'xpath-query': 0,
387
+ 'http-request': 0,
388
+ };
389
+ for (const path of result.unsafePaths) {
390
+ bySeverity[path.sink.severity]++;
391
+ bySourceCategory[path.source.category]++;
392
+ bySinkCategory[path.sink.category]++;
393
+ }
394
+ return {
395
+ totalSources: result.sources.length,
396
+ totalSinks: result.sinks.length,
397
+ unsafePathCount: result.unsafePaths.length,
398
+ bySeverity,
399
+ bySourceCategory,
400
+ bySinkCategory,
401
+ };
402
+ }
403
+ /**
404
+ * Get source definitions
405
+ */
406
+ getSourceDefinitions() {
407
+ return [...this.sourceDefinitions];
408
+ }
409
+ /**
410
+ * Get sink definitions
411
+ */
412
+ getSinkDefinitions() {
413
+ return [...this.sinkDefinitions];
414
+ }
415
+ /**
416
+ * Add custom source definition
417
+ */
418
+ addSourceDefinition(source) {
419
+ this.sourceDefinitions.push(source);
420
+ // Reinitialize propagator with new definitions
421
+ if (this.taintPropagator) {
422
+ this.taintPropagator = new TaintPropagator(this.sourceDefinitions, this.sinkDefinitions, [...ALL_BUILTIN_SANITIZERS], {
423
+ maxDepth: this.options.maxCallDepth,
424
+ trackImplicitFlows: this.options.trackImplicitFlows,
425
+ minConfidence: 0.5,
426
+ });
427
+ }
428
+ }
429
+ /**
430
+ * Add custom sink definition
431
+ */
432
+ addSinkDefinition(sink) {
433
+ this.sinkDefinitions.push(sink);
434
+ // Reinitialize propagator with new definitions
435
+ if (this.taintPropagator) {
436
+ this.taintPropagator = new TaintPropagator(this.sourceDefinitions, this.sinkDefinitions, [...ALL_BUILTIN_SANITIZERS], {
437
+ maxDepth: this.options.maxCallDepth,
438
+ trackImplicitFlows: this.options.trackImplicitFlows,
439
+ minConfidence: 0.5,
440
+ });
441
+ }
442
+ }
443
+ }
444
+ /**
445
+ * Create enhanced taint analyzer
446
+ */
447
+ export function createEnhancedTaintAnalyzer(options) {
448
+ return new EnhancedTaintAnalyzer(options);
449
+ }
450
+ //# sourceMappingURL=enhanced-taint-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhanced-taint-analyzer.js","sourceRoot":"","sources":["../../src/analysis/enhanced-taint-analyzer.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  export { VulnerabilityScanner, createVulnerabilityScanner, resetVulnCounter, } from './vulnerability-scanner.js';
6
6
  export { TaintAnalyzer, createTaintAnalyzer, resetTaintCounters, } from './taint-analyzer.js';
7
+ export { EnhancedTaintAnalyzer, createEnhancedTaintAnalyzer, type EnhancedTaintOptions, type EnhancedTaintResult, } from './enhanced-taint-analyzer.js';
7
8
  export { SecretDetector, createSecretDetector, resetSecretCounter, } from './secret-detector.js';
8
9
  export { DependencyAuditor, createDependencyAuditor, } from './dependency-auditor.js';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  export { VulnerabilityScanner, createVulnerabilityScanner, resetVulnCounter, } from './vulnerability-scanner.js';
6
6
  export { TaintAnalyzer, createTaintAnalyzer, resetTaintCounters, } from './taint-analyzer.js';
7
+ export { EnhancedTaintAnalyzer, createEnhancedTaintAnalyzer, } from './enhanced-taint-analyzer.js';
7
8
  export { SecretDetector, createSecretDetector, resetSecretCounter, } from './secret-detector.js';
8
9
  export { DependencyAuditor, createDependencyAuditor, } from './dependency-auditor.js';
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,qBAAqB,EACrB,2BAA2B,GAG5B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC"}