@nahisaho/musubix-security 2.0.1 → 2.1.0

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,166 @@
1
+ /**
2
+ * @fileoverview DFG Adapter - Integrate musubix-dfg with taint analysis
3
+ * @module @nahisaho/musubix-security/analysis/interprocedural/dfg-adapter
4
+ * @trace REQ-SEC-001 (EARS: THE system SHALL integrate with DFG for enhanced taint tracking)
5
+ */
6
+ import type { DataFlowGraph, DFGNode } from '@nahisaho/musubix-dfg';
7
+ import type { TaintLocation, TaintFlowEdge } from './taint-propagator.js';
8
+ import type { TaintSinkCategory } from '../../types/taint.js';
9
+ import type { SourceDefinition } from '../sources/types.js';
10
+ import type { SinkDefinition } from '../sinks/types.js';
11
+ /**
12
+ * Options for DFG-based taint analysis
13
+ */
14
+ export interface DFGTaintOptions {
15
+ /** Include aliasing analysis */
16
+ trackAliasing?: boolean;
17
+ /** Include control flow dependencies */
18
+ trackControlDependencies?: boolean;
19
+ /** Maximum propagation depth */
20
+ maxDepth?: number;
21
+ /** Minimum confidence threshold */
22
+ minConfidence?: number;
23
+ }
24
+ /**
25
+ * DFG node with taint information
26
+ */
27
+ export interface TaintedDFGNode extends DFGNode {
28
+ /** Whether node is tainted */
29
+ isTainted: boolean;
30
+ /** Taint confidence */
31
+ taintConfidence: number;
32
+ /** Source of taint */
33
+ taintSource?: TaintLocation;
34
+ /** Sanitizers applied */
35
+ sanitizers: string[];
36
+ /** Remaining vulnerable categories */
37
+ vulnerableCategories: TaintSinkCategory[];
38
+ }
39
+ /**
40
+ * Result of DFG taint analysis
41
+ */
42
+ export interface DFGTaintResult {
43
+ /** Original DFG */
44
+ dfg: DataFlowGraph;
45
+ /** Tainted nodes */
46
+ taintedNodes: Map<string, TaintedDFGNode>;
47
+ /** Taint flow edges */
48
+ taintFlowEdges: TaintFlowEdge[];
49
+ /** Detected sources */
50
+ sources: TaintLocation[];
51
+ /** Detected sinks */
52
+ sinks: TaintLocation[];
53
+ /** Source to sink paths */
54
+ vulnerablePaths: TaintPath[];
55
+ }
56
+ /**
57
+ * Path from taint source to sink
58
+ */
59
+ export interface TaintPath {
60
+ /** Source location */
61
+ source: TaintLocation;
62
+ /** Sink location */
63
+ sink: TaintLocation;
64
+ /** Intermediate nodes */
65
+ path: string[];
66
+ /** Flow edges */
67
+ edges: TaintFlowEdge[];
68
+ /** Sanitizers in path */
69
+ sanitizers: string[];
70
+ /** Whether path is fully sanitized */
71
+ isSanitized: boolean;
72
+ /** Confidence */
73
+ confidence: number;
74
+ }
75
+ /**
76
+ * DFG Adapter for taint analysis
77
+ * Converts DFG data flow information to taint tracking
78
+ * @trace REQ-SEC-001
79
+ */
80
+ export declare class DFGTaintAdapter {
81
+ private sources;
82
+ private sinks;
83
+ private options;
84
+ constructor(sources: SourceDefinition[], sinks: SinkDefinition[], options?: DFGTaintOptions);
85
+ /**
86
+ * Analyze DFG for taint flows
87
+ */
88
+ analyzeTaint(dfg: DataFlowGraph): DFGTaintResult;
89
+ /**
90
+ * Propagate taint through DFG
91
+ */
92
+ private propagateTaint;
93
+ /**
94
+ * Check if DFG node is a taint source
95
+ */
96
+ private isSource;
97
+ /**
98
+ * Check if DFG node is a taint sink
99
+ */
100
+ private isSink;
101
+ /**
102
+ * Check if DFG node is a sanitizer
103
+ */
104
+ private checkSanitizer;
105
+ /**
106
+ * Check if edge type propagates taint
107
+ */
108
+ private propagatesTaint;
109
+ /**
110
+ * Get all sink categories
111
+ */
112
+ private getAllSinkCategories;
113
+ /**
114
+ * Update vulnerable categories after sanitization
115
+ */
116
+ private updateVulnerableCategories;
117
+ /**
118
+ * Calculate taint confidence after propagation
119
+ */
120
+ private calculateConfidence;
121
+ /**
122
+ * Convert DFG location to taint location
123
+ */
124
+ private dfgLocationToTaintLocation;
125
+ /**
126
+ * Create taint flow edge from DFG edge
127
+ */
128
+ private createFlowEdge;
129
+ /**
130
+ * Build complete taint path from source to sink
131
+ */
132
+ private buildTaintPath;
133
+ /**
134
+ * Get sink category for a node
135
+ */
136
+ getSinkCategory(node: DFGNode): TaintSinkCategory | null;
137
+ /**
138
+ * Get statistics about taint analysis
139
+ */
140
+ getStatistics(result: DFGTaintResult): DFGTaintStatistics;
141
+ /**
142
+ * Get all edges with a specific source node
143
+ */
144
+ private getEdgesWithSource;
145
+ /**
146
+ * Get all edges with a specific target node
147
+ */
148
+ private getEdgesWithTarget;
149
+ /**
150
+ * Get all edges with a specific source and type
151
+ */
152
+ private getEdgesWithSourceAndType;
153
+ }
154
+ /**
155
+ * Statistics from DFG taint analysis
156
+ */
157
+ export interface DFGTaintStatistics {
158
+ totalNodes: number;
159
+ taintedNodes: number;
160
+ sources: number;
161
+ sinks: number;
162
+ vulnerablePaths: number;
163
+ sanitizedPaths: number;
164
+ avgConfidence: number;
165
+ }
166
+ //# sourceMappingURL=dfg-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dfg-adapter.d.ts","sourceRoot":"","sources":["../../../src/analysis/interprocedural/dfg-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,455 @@
1
+ /**
2
+ * @fileoverview DFG Adapter - Integrate musubix-dfg with taint analysis
3
+ * @module @nahisaho/musubix-security/analysis/interprocedural/dfg-adapter
4
+ * @trace REQ-SEC-001 (EARS: THE system SHALL integrate with DFG for enhanced taint tracking)
5
+ */
6
+ /**
7
+ * DFG Adapter for taint analysis
8
+ * Converts DFG data flow information to taint tracking
9
+ * @trace REQ-SEC-001
10
+ */
11
+ export class DFGTaintAdapter {
12
+ sources;
13
+ sinks;
14
+ options;
15
+ constructor(sources, sinks, options = {}) {
16
+ this.sources = sources;
17
+ this.sinks = sinks;
18
+ this.options = {
19
+ trackAliasing: options.trackAliasing ?? true,
20
+ trackControlDependencies: options.trackControlDependencies ?? false,
21
+ maxDepth: options.maxDepth ?? 20,
22
+ minConfidence: options.minConfidence ?? 0.5,
23
+ };
24
+ }
25
+ /**
26
+ * Analyze DFG for taint flows
27
+ */
28
+ analyzeTaint(dfg) {
29
+ const taintedNodes = new Map();
30
+ const taintFlowEdges = [];
31
+ const sources = [];
32
+ const sinks = [];
33
+ const vulnerablePaths = [];
34
+ // Step 1: Identify taint sources in DFG
35
+ for (const [nodeId, node] of dfg.nodes) {
36
+ if (this.isSource(node)) {
37
+ const location = this.dfgLocationToTaintLocation(node);
38
+ sources.push(location);
39
+ // Mark node as tainted
40
+ taintedNodes.set(nodeId, {
41
+ ...node,
42
+ isTainted: true,
43
+ taintConfidence: 1.0,
44
+ taintSource: location,
45
+ sanitizers: [],
46
+ vulnerableCategories: this.getAllSinkCategories(),
47
+ });
48
+ }
49
+ }
50
+ // Step 2: Propagate taint through DFG edges
51
+ this.propagateTaint(dfg, taintedNodes, taintFlowEdges);
52
+ // Step 3: Identify sinks that receive tainted data
53
+ for (const [nodeId, node] of dfg.nodes) {
54
+ if (this.isSink(node)) {
55
+ const location = this.dfgLocationToTaintLocation(node);
56
+ sinks.push(location);
57
+ // Check if sink receives tainted data
58
+ const incomingEdges = this.getEdgesWithTarget(dfg, nodeId);
59
+ for (const edge of incomingEdges) {
60
+ const sourceNode = taintedNodes.get(edge.source);
61
+ if (sourceNode?.isTainted) {
62
+ // Found vulnerable path
63
+ const path = this.buildTaintPath(dfg, taintedNodes, sourceNode.taintSource, location);
64
+ if (path && path.confidence >= this.options.minConfidence) {
65
+ vulnerablePaths.push(path);
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
71
+ return {
72
+ dfg,
73
+ taintedNodes,
74
+ taintFlowEdges,
75
+ sources,
76
+ sinks,
77
+ vulnerablePaths,
78
+ };
79
+ }
80
+ /**
81
+ * Propagate taint through DFG
82
+ */
83
+ propagateTaint(dfg, taintedNodes, taintFlowEdges) {
84
+ const worklist = Array.from(taintedNodes.keys());
85
+ const visited = new Set();
86
+ const maxIterations = this.options.maxDepth * dfg.nodes.size;
87
+ let iteration = 0;
88
+ while (worklist.length > 0 && iteration < maxIterations) {
89
+ const nodeId = worklist.shift();
90
+ if (visited.has(nodeId))
91
+ continue;
92
+ visited.add(nodeId);
93
+ iteration++;
94
+ const taintedNode = taintedNodes.get(nodeId);
95
+ if (!taintedNode)
96
+ continue;
97
+ // Find outgoing edges
98
+ const outgoing = this.getEdgesWithSource(dfg, nodeId);
99
+ for (const edge of outgoing) {
100
+ // Check if this edge type propagates taint
101
+ if (!this.propagatesTaint(edge))
102
+ continue;
103
+ const targetNode = dfg.nodes.get(edge.target);
104
+ if (!targetNode)
105
+ continue;
106
+ // Check for sanitizer
107
+ const sanitizer = this.checkSanitizer(targetNode);
108
+ const newSanitizers = sanitizer
109
+ ? [...taintedNode.sanitizers, sanitizer]
110
+ : [...taintedNode.sanitizers];
111
+ // Update vulnerable categories after sanitization
112
+ const newVulnerableCategories = this.updateVulnerableCategories(taintedNode.vulnerableCategories, sanitizer);
113
+ // Calculate new confidence
114
+ const newConfidence = this.calculateConfidence(taintedNode.taintConfidence, edge.type);
115
+ // Create or update target node
116
+ const existingTarget = taintedNodes.get(edge.target);
117
+ if (!existingTarget || existingTarget.taintConfidence < newConfidence) {
118
+ taintedNodes.set(edge.target, {
119
+ ...targetNode,
120
+ isTainted: true,
121
+ taintConfidence: newConfidence,
122
+ taintSource: taintedNode.taintSource,
123
+ sanitizers: newSanitizers,
124
+ vulnerableCategories: newVulnerableCategories,
125
+ });
126
+ // Add to worklist for further propagation
127
+ if (!visited.has(edge.target)) {
128
+ worklist.push(edge.target);
129
+ }
130
+ }
131
+ // Record flow edge
132
+ const flowEdge = this.createFlowEdge(taintedNode, targetNode, edge, newConfidence, newSanitizers);
133
+ taintFlowEdges.push(flowEdge);
134
+ }
135
+ // Handle aliasing
136
+ if (this.options.trackAliasing) {
137
+ const aliasEdges = this.getEdgesWithSourceAndType(dfg, nodeId, 'alias');
138
+ for (const aliasEdge of aliasEdges) {
139
+ const aliasTarget = dfg.nodes.get(aliasEdge.target);
140
+ if (aliasTarget && !taintedNodes.has(aliasEdge.target)) {
141
+ taintedNodes.set(aliasEdge.target, {
142
+ ...aliasTarget,
143
+ isTainted: true,
144
+ taintConfidence: taintedNode.taintConfidence * 0.95,
145
+ taintSource: taintedNode.taintSource,
146
+ sanitizers: [...taintedNode.sanitizers],
147
+ vulnerableCategories: [...taintedNode.vulnerableCategories],
148
+ });
149
+ worklist.push(aliasEdge.target);
150
+ }
151
+ }
152
+ }
153
+ }
154
+ }
155
+ /**
156
+ * Check if DFG node is a taint source
157
+ */
158
+ isSource(node) {
159
+ for (const source of this.sources) {
160
+ for (const pattern of source.patterns) {
161
+ // Check method match
162
+ if (pattern.method) {
163
+ const methods = Array.isArray(pattern.method) ? pattern.method : [pattern.method];
164
+ if (methods.some((m) => node.name?.includes(m))) {
165
+ return true;
166
+ }
167
+ }
168
+ // Check property match
169
+ if (pattern.property) {
170
+ const props = Array.isArray(pattern.property) ? pattern.property : [pattern.property];
171
+ if (props.some((p) => node.name?.includes(p))) {
172
+ return true;
173
+ }
174
+ }
175
+ }
176
+ }
177
+ return false;
178
+ }
179
+ /**
180
+ * Check if DFG node is a taint sink
181
+ */
182
+ isSink(node) {
183
+ for (const sink of this.sinks) {
184
+ for (const pattern of sink.patterns) {
185
+ // Check method match
186
+ if (pattern.method) {
187
+ const methods = Array.isArray(pattern.method) ? pattern.method : [pattern.method];
188
+ if (methods.some((m) => node.name?.includes(m))) {
189
+ return true;
190
+ }
191
+ }
192
+ // Check property match
193
+ if (pattern.property) {
194
+ const props = Array.isArray(pattern.property) ? pattern.property : [pattern.property];
195
+ if (props.some((p) => node.name?.includes(p))) {
196
+ return true;
197
+ }
198
+ }
199
+ }
200
+ }
201
+ return false;
202
+ }
203
+ /**
204
+ * Check if DFG node is a sanitizer
205
+ */
206
+ checkSanitizer(node) {
207
+ const sanitizerPatterns = [
208
+ 'escape',
209
+ 'sanitize',
210
+ 'encode',
211
+ 'parameterize',
212
+ 'validate',
213
+ 'filter',
214
+ 'parseInt',
215
+ 'parseFloat',
216
+ ];
217
+ for (const pattern of sanitizerPatterns) {
218
+ if (node.name?.toLowerCase().includes(pattern)) {
219
+ return node.name;
220
+ }
221
+ }
222
+ return null;
223
+ }
224
+ /**
225
+ * Check if edge type propagates taint
226
+ */
227
+ propagatesTaint(edge) {
228
+ const propagatingTypes = [
229
+ 'def-use',
230
+ 'data-dep',
231
+ 'call-arg',
232
+ 'call-return',
233
+ 'property',
234
+ 'alias',
235
+ ];
236
+ if (this.options.trackControlDependencies) {
237
+ propagatingTypes.push('control-dep');
238
+ }
239
+ return propagatingTypes.includes(edge.type);
240
+ }
241
+ /**
242
+ * Get all sink categories
243
+ */
244
+ getAllSinkCategories() {
245
+ return [
246
+ 'sql-query',
247
+ 'nosql-query',
248
+ 'command-exec',
249
+ 'file-write',
250
+ 'file-read',
251
+ 'html-output',
252
+ 'redirect',
253
+ 'eval',
254
+ 'deserialization',
255
+ 'ldap-query',
256
+ 'xpath-query',
257
+ 'http-request',
258
+ ];
259
+ }
260
+ /**
261
+ * Update vulnerable categories after sanitization
262
+ */
263
+ updateVulnerableCategories(current, sanitizer) {
264
+ if (!sanitizer)
265
+ return current;
266
+ const sanitizerMappings = {
267
+ escape: ['sql-query', 'html-output'],
268
+ escapeHtml: ['html-output'],
269
+ encodeURIComponent: ['redirect', 'http-request'],
270
+ parameterize: ['sql-query'],
271
+ parseInt: ['sql-query', 'command-exec'],
272
+ sanitize: ['html-output', 'sql-query'],
273
+ };
274
+ const protectedCategories = [];
275
+ for (const [pattern, categories] of Object.entries(sanitizerMappings)) {
276
+ if (sanitizer.toLowerCase().includes(pattern.toLowerCase())) {
277
+ protectedCategories.push(...categories);
278
+ }
279
+ }
280
+ return current.filter((c) => !protectedCategories.includes(c));
281
+ }
282
+ /**
283
+ * Calculate taint confidence after propagation
284
+ */
285
+ calculateConfidence(baseConfidence, edgeType) {
286
+ const confidenceFactors = {
287
+ 'def-use': 1.0,
288
+ 'data-dep': 0.95,
289
+ 'call-arg': 0.9,
290
+ 'call-return': 0.85,
291
+ 'property': 0.9,
292
+ 'alias': 0.95,
293
+ 'control-dep': 0.6,
294
+ 'phi': 0.8,
295
+ };
296
+ const factor = confidenceFactors[edgeType] ?? 0.7;
297
+ return baseConfidence * factor;
298
+ }
299
+ /**
300
+ * Convert DFG location to taint location
301
+ */
302
+ dfgLocationToTaintLocation(node) {
303
+ return {
304
+ nodeId: node.id,
305
+ identifier: node.name ?? node.id,
306
+ line: node.location?.startLine ?? 0,
307
+ column: node.location?.startColumn ?? 0,
308
+ filePath: node.location?.filePath ?? 'unknown',
309
+ };
310
+ }
311
+ /**
312
+ * Create taint flow edge from DFG edge
313
+ */
314
+ createFlowEdge(sourceNode, targetNode, edge, confidence, sanitizers) {
315
+ const flowTypeMapping = {
316
+ 'def-use': 'assignment',
317
+ 'data-dep': 'assignment',
318
+ 'call-arg': 'parameter',
319
+ 'call-return': 'return',
320
+ 'property': 'property-access',
321
+ 'alias': 'assignment',
322
+ 'control-dep': 'implicit',
323
+ };
324
+ return {
325
+ id: `flow_${edge.id}`,
326
+ from: this.dfgLocationToTaintLocation(sourceNode),
327
+ to: this.dfgLocationToTaintLocation(targetNode),
328
+ flowType: flowTypeMapping[edge.type] ?? 'assignment',
329
+ sanitizersApplied: sanitizers,
330
+ confidence,
331
+ };
332
+ }
333
+ /**
334
+ * Build complete taint path from source to sink
335
+ */
336
+ buildTaintPath(dfg, taintedNodes, source, sink) {
337
+ // BFS to find shortest path
338
+ const visited = new Set();
339
+ const queue = [];
340
+ // Find source node
341
+ const sourceNodeId = Array.from(taintedNodes.entries())
342
+ .find(([, node]) => node.taintSource?.nodeId === source.nodeId)?.[0];
343
+ if (!sourceNodeId)
344
+ return null;
345
+ queue.push({ nodeId: sourceNodeId, path: [sourceNodeId], edges: [] });
346
+ visited.add(sourceNodeId);
347
+ while (queue.length > 0) {
348
+ const { nodeId, path, edges } = queue.shift();
349
+ // Check if we reached sink
350
+ if (nodeId === sink.nodeId) {
351
+ const taintedNode = taintedNodes.get(nodeId);
352
+ return {
353
+ source,
354
+ sink,
355
+ path,
356
+ edges,
357
+ sanitizers: taintedNode?.sanitizers ?? [],
358
+ isSanitized: (taintedNode?.vulnerableCategories.length ?? 0) === 0,
359
+ confidence: taintedNode?.taintConfidence ?? 0,
360
+ };
361
+ }
362
+ // Explore neighbors
363
+ const outgoing = this.getEdgesWithSource(dfg, nodeId);
364
+ for (const edge of outgoing) {
365
+ if (!visited.has(edge.target) && taintedNodes.has(edge.target)) {
366
+ visited.add(edge.target);
367
+ const targetNode = dfg.nodes.get(edge.target);
368
+ if (targetNode) {
369
+ const sourceNode = taintedNodes.get(nodeId);
370
+ const flowEdge = this.createFlowEdge(sourceNode, targetNode, edge, sourceNode.taintConfidence, sourceNode.sanitizers);
371
+ queue.push({
372
+ nodeId: edge.target,
373
+ path: [...path, edge.target],
374
+ edges: [...edges, flowEdge],
375
+ });
376
+ }
377
+ }
378
+ }
379
+ }
380
+ return null;
381
+ }
382
+ /**
383
+ * Get sink category for a node
384
+ */
385
+ getSinkCategory(node) {
386
+ for (const sink of this.sinks) {
387
+ for (const pattern of sink.patterns) {
388
+ if (pattern.method) {
389
+ const methods = Array.isArray(pattern.method) ? pattern.method : [pattern.method];
390
+ if (methods.some((m) => node.name?.includes(m))) {
391
+ return sink.category;
392
+ }
393
+ }
394
+ }
395
+ }
396
+ return null;
397
+ }
398
+ /**
399
+ * Get statistics about taint analysis
400
+ */
401
+ getStatistics(result) {
402
+ return {
403
+ totalNodes: result.dfg.nodes.size,
404
+ taintedNodes: result.taintedNodes.size,
405
+ sources: result.sources.length,
406
+ sinks: result.sinks.length,
407
+ vulnerablePaths: result.vulnerablePaths.length,
408
+ sanitizedPaths: result.vulnerablePaths.filter((p) => p.isSanitized).length,
409
+ avgConfidence: result.vulnerablePaths.length > 0
410
+ ? result.vulnerablePaths.reduce((sum, p) => sum + p.confidence, 0) /
411
+ result.vulnerablePaths.length
412
+ : 0,
413
+ };
414
+ }
415
+ // ========================================================================
416
+ // Helper methods for Map-based DFG traversal
417
+ // ========================================================================
418
+ /**
419
+ * Get all edges with a specific source node
420
+ */
421
+ getEdgesWithSource(dfg, sourceId) {
422
+ const result = [];
423
+ for (const edge of dfg.edges.values()) {
424
+ if (edge.source === sourceId) {
425
+ result.push(edge);
426
+ }
427
+ }
428
+ return result;
429
+ }
430
+ /**
431
+ * Get all edges with a specific target node
432
+ */
433
+ getEdgesWithTarget(dfg, targetId) {
434
+ const result = [];
435
+ for (const edge of dfg.edges.values()) {
436
+ if (edge.target === targetId) {
437
+ result.push(edge);
438
+ }
439
+ }
440
+ return result;
441
+ }
442
+ /**
443
+ * Get all edges with a specific source and type
444
+ */
445
+ getEdgesWithSourceAndType(dfg, sourceId, edgeType) {
446
+ const result = [];
447
+ for (const edge of dfg.edges.values()) {
448
+ if (edge.source === sourceId && edge.type === edgeType) {
449
+ result.push(edge);
450
+ }
451
+ }
452
+ return result;
453
+ }
454
+ }
455
+ //# sourceMappingURL=dfg-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dfg-adapter.js","sourceRoot":"","sources":["../../../src/analysis/interprocedural/dfg-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @fileoverview Interprocedural analysis module exports
3
+ * @module @nahisaho/musubix-security/analysis/interprocedural
4
+ * @trace REQ-SEC-001
5
+ */
6
+ export * from './call-graph-builder.js';
7
+ export * from './taint-propagator.js';
8
+ export * from './dfg-adapter.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/analysis/interprocedural/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @fileoverview Interprocedural analysis module exports
3
+ * @module @nahisaho/musubix-security/analysis/interprocedural
4
+ * @trace REQ-SEC-001
5
+ */
6
+ export * from './call-graph-builder.js';
7
+ export * from './taint-propagator.js';
8
+ export * from './dfg-adapter.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analysis/interprocedural/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}