@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,261 @@
1
+ /**
2
+ * @fileoverview User input source definitions
3
+ * @module @nahisaho/musubix-security/analysis/sources/user-input
4
+ * @trace REQ-SEC-001
5
+ */
6
+ /**
7
+ * User input sources - form data, query params, request body
8
+ * @trace REQ-SEC-001
9
+ */
10
+ export const USER_INPUT_SOURCES = [
11
+ // Express.js sources
12
+ {
13
+ id: 'SRC-UI-001',
14
+ name: 'Express Request Body',
15
+ category: 'user-input',
16
+ framework: 'express',
17
+ patterns: [
18
+ { receiver: 'req', property: 'body', taintedReturn: true },
19
+ { receiver: 'request', property: 'body', taintedReturn: true },
20
+ ],
21
+ description: 'HTTP request body (POST/PUT data)',
22
+ confidence: 0.95,
23
+ enabled: true,
24
+ tags: ['express', 'http', 'body'],
25
+ relatedCWE: ['CWE-20', 'CWE-79', 'CWE-89'],
26
+ },
27
+ {
28
+ id: 'SRC-UI-002',
29
+ name: 'Express Query Parameters',
30
+ category: 'user-input',
31
+ framework: 'express',
32
+ patterns: [
33
+ { receiver: 'req', property: 'query', taintedReturn: true },
34
+ { receiver: 'request', property: 'query', taintedReturn: true },
35
+ ],
36
+ description: 'URL query parameters',
37
+ confidence: 0.95,
38
+ enabled: true,
39
+ tags: ['express', 'http', 'query'],
40
+ relatedCWE: ['CWE-20', 'CWE-79', 'CWE-89'],
41
+ },
42
+ {
43
+ id: 'SRC-UI-003',
44
+ name: 'Express URL Parameters',
45
+ category: 'user-input',
46
+ framework: 'express',
47
+ patterns: [
48
+ { receiver: 'req', property: 'params', taintedReturn: true },
49
+ { receiver: 'request', property: 'params', taintedReturn: true },
50
+ ],
51
+ description: 'URL path parameters (e.g., /users/:id)',
52
+ confidence: 0.95,
53
+ enabled: true,
54
+ tags: ['express', 'http', 'params'],
55
+ relatedCWE: ['CWE-20', 'CWE-89', 'CWE-22'],
56
+ },
57
+ {
58
+ id: 'SRC-UI-004',
59
+ name: 'Express Headers',
60
+ category: 'user-input',
61
+ framework: 'express',
62
+ patterns: [
63
+ { receiver: 'req', property: 'headers', taintedReturn: true },
64
+ { receiver: 'req', method: 'get', taintedReturn: true },
65
+ { receiver: 'req', method: 'header', taintedReturn: true },
66
+ ],
67
+ description: 'HTTP request headers',
68
+ confidence: 0.9,
69
+ enabled: true,
70
+ tags: ['express', 'http', 'headers'],
71
+ relatedCWE: ['CWE-20', 'CWE-113'],
72
+ },
73
+ {
74
+ id: 'SRC-UI-005',
75
+ name: 'Express Cookies',
76
+ category: 'user-input',
77
+ framework: 'express',
78
+ patterns: [
79
+ { receiver: 'req', property: 'cookies', taintedReturn: true },
80
+ { receiver: 'req', property: 'signedCookies', taintedReturn: true },
81
+ ],
82
+ description: 'HTTP cookies',
83
+ confidence: 0.9,
84
+ enabled: true,
85
+ tags: ['express', 'http', 'cookies'],
86
+ relatedCWE: ['CWE-20', 'CWE-79'],
87
+ },
88
+ // Koa.js sources
89
+ {
90
+ id: 'SRC-UI-010',
91
+ name: 'Koa Request Body',
92
+ category: 'user-input',
93
+ framework: 'koa',
94
+ patterns: [
95
+ { receiver: 'ctx', property: ['request', 'body'], taintedReturn: true },
96
+ { receiver: 'ctx', property: 'body', taintedReturn: true },
97
+ ],
98
+ description: 'Koa request body',
99
+ confidence: 0.95,
100
+ enabled: true,
101
+ tags: ['koa', 'http', 'body'],
102
+ relatedCWE: ['CWE-20', 'CWE-79', 'CWE-89'],
103
+ },
104
+ {
105
+ id: 'SRC-UI-011',
106
+ name: 'Koa Query Parameters',
107
+ category: 'user-input',
108
+ framework: 'koa',
109
+ patterns: [
110
+ { receiver: 'ctx', property: 'query', taintedReturn: true },
111
+ { receiver: 'ctx', property: ['request', 'query'], taintedReturn: true },
112
+ ],
113
+ description: 'Koa query parameters',
114
+ confidence: 0.95,
115
+ enabled: true,
116
+ tags: ['koa', 'http', 'query'],
117
+ relatedCWE: ['CWE-20', 'CWE-79', 'CWE-89'],
118
+ },
119
+ {
120
+ id: 'SRC-UI-012',
121
+ name: 'Koa URL Parameters',
122
+ category: 'user-input',
123
+ framework: 'koa',
124
+ patterns: [
125
+ { receiver: 'ctx', property: 'params', taintedReturn: true },
126
+ ],
127
+ description: 'Koa URL path parameters',
128
+ confidence: 0.95,
129
+ enabled: true,
130
+ tags: ['koa', 'http', 'params'],
131
+ relatedCWE: ['CWE-20', 'CWE-89', 'CWE-22'],
132
+ },
133
+ // Fastify sources
134
+ {
135
+ id: 'SRC-UI-020',
136
+ name: 'Fastify Request Body',
137
+ category: 'user-input',
138
+ framework: 'fastify',
139
+ patterns: [
140
+ { receiver: 'request', property: 'body', taintedReturn: true },
141
+ { receiver: 'req', property: 'body', taintedReturn: true },
142
+ ],
143
+ description: 'Fastify request body',
144
+ confidence: 0.95,
145
+ enabled: true,
146
+ tags: ['fastify', 'http', 'body'],
147
+ relatedCWE: ['CWE-20', 'CWE-79', 'CWE-89'],
148
+ },
149
+ {
150
+ id: 'SRC-UI-021',
151
+ name: 'Fastify Query Parameters',
152
+ category: 'user-input',
153
+ framework: 'fastify',
154
+ patterns: [
155
+ { receiver: 'request', property: 'query', taintedReturn: true },
156
+ ],
157
+ description: 'Fastify query parameters',
158
+ confidence: 0.95,
159
+ enabled: true,
160
+ tags: ['fastify', 'http', 'query'],
161
+ relatedCWE: ['CWE-20', 'CWE-79', 'CWE-89'],
162
+ },
163
+ // Next.js sources
164
+ {
165
+ id: 'SRC-UI-030',
166
+ name: 'Next.js API Request Body',
167
+ category: 'user-input',
168
+ framework: 'next',
169
+ patterns: [
170
+ { receiver: 'req', property: 'body', taintedReturn: true },
171
+ ],
172
+ description: 'Next.js API route request body',
173
+ confidence: 0.95,
174
+ enabled: true,
175
+ tags: ['next', 'http', 'body'],
176
+ relatedCWE: ['CWE-20', 'CWE-79', 'CWE-89'],
177
+ },
178
+ {
179
+ id: 'SRC-UI-031',
180
+ name: 'Next.js Query Parameters',
181
+ category: 'user-input',
182
+ framework: 'next',
183
+ patterns: [
184
+ { receiver: 'req', property: 'query', taintedReturn: true },
185
+ ],
186
+ description: 'Next.js API route query parameters',
187
+ confidence: 0.95,
188
+ enabled: true,
189
+ tags: ['next', 'http', 'query'],
190
+ relatedCWE: ['CWE-20', 'CWE-79', 'CWE-89'],
191
+ },
192
+ // Browser sources
193
+ {
194
+ id: 'SRC-UI-040',
195
+ name: 'DOM Input Value',
196
+ category: 'user-input',
197
+ framework: 'browser',
198
+ patterns: [
199
+ { method: 'getElementById', taintedReturn: true },
200
+ { method: 'querySelector', taintedReturn: true },
201
+ { method: 'querySelectorAll', taintedReturn: true },
202
+ { method: 'getElementsByName', taintedReturn: true },
203
+ { method: 'getElementsByClassName', taintedReturn: true },
204
+ ],
205
+ description: 'DOM element values (potentially user-controlled)',
206
+ confidence: 0.85,
207
+ enabled: true,
208
+ tags: ['browser', 'dom', 'input'],
209
+ relatedCWE: ['CWE-79', 'CWE-20'],
210
+ },
211
+ {
212
+ id: 'SRC-UI-041',
213
+ name: 'URL Location',
214
+ category: 'user-input',
215
+ framework: 'browser',
216
+ patterns: [
217
+ { receiver: 'location', property: 'search', taintedReturn: true },
218
+ { receiver: 'location', property: 'hash', taintedReturn: true },
219
+ { receiver: 'location', property: 'href', taintedReturn: true },
220
+ { receiver: 'window', property: ['location', 'search'], taintedReturn: true },
221
+ ],
222
+ description: 'Browser URL parameters',
223
+ confidence: 0.9,
224
+ enabled: true,
225
+ tags: ['browser', 'url'],
226
+ relatedCWE: ['CWE-79', 'CWE-601'],
227
+ },
228
+ {
229
+ id: 'SRC-UI-042',
230
+ name: 'User Prompt',
231
+ category: 'user-input',
232
+ framework: 'browser',
233
+ patterns: [
234
+ { method: 'prompt', taintedReturn: true },
235
+ ],
236
+ description: 'User input from prompt dialog',
237
+ confidence: 0.95,
238
+ enabled: true,
239
+ tags: ['browser', 'prompt'],
240
+ relatedCWE: ['CWE-79', 'CWE-20'],
241
+ },
242
+ // FormData
243
+ {
244
+ id: 'SRC-UI-050',
245
+ name: 'FormData',
246
+ category: 'user-input',
247
+ framework: 'browser',
248
+ patterns: [
249
+ { receiver: 'FormData', method: 'get', taintedReturn: true },
250
+ { receiver: 'FormData', method: 'getAll', taintedReturn: true },
251
+ { receiver: 'formData', method: 'get', taintedReturn: true },
252
+ { receiver: 'formData', method: 'getAll', taintedReturn: true },
253
+ ],
254
+ description: 'Form data values',
255
+ confidence: 0.95,
256
+ enabled: true,
257
+ tags: ['browser', 'form'],
258
+ relatedCWE: ['CWE-20', 'CWE-79'],
259
+ },
260
+ ];
261
+ //# sourceMappingURL=user-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-input.js","sourceRoot":"","sources":["../../../src/analysis/sources/user-input.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * @fileoverview CPE (Common Platform Enumeration) Matching Engine
3
+ * @module @nahisaho/musubix-security/cve/cpe-matcher
4
+ *
5
+ * Provides npm package name to CPE conversion and semver-based
6
+ * vulnerability matching.
7
+ *
8
+ * @requirement REQ-CVE-003 - CPE matching for vulnerability lookup
9
+ * @design DES-EPIC2-004 - CPE Matcher component
10
+ */
11
+ /**
12
+ * CPE 2.3 URI components
13
+ * @see https://nvd.nist.gov/products/cpe
14
+ */
15
+ export interface CPEComponents {
16
+ /** CPE part: 'a' = application, 'o' = OS, 'h' = hardware */
17
+ part: 'a' | 'o' | 'h';
18
+ /** Vendor/publisher name */
19
+ vendor: string;
20
+ /** Product name */
21
+ product: string;
22
+ /** Version string */
23
+ version: string;
24
+ /** Update/patch level */
25
+ update?: string;
26
+ /** Edition */
27
+ edition?: string;
28
+ /** Language */
29
+ language?: string;
30
+ /** Software edition */
31
+ swEdition?: string;
32
+ /** Target software */
33
+ targetSw?: string;
34
+ /** Target hardware */
35
+ targetHw?: string;
36
+ /** Other attributes */
37
+ other?: string;
38
+ }
39
+ /**
40
+ * Version range for vulnerability matching
41
+ */
42
+ export interface VersionRange {
43
+ /** Starting version (inclusive unless startExcluding is set) */
44
+ versionStart?: string;
45
+ /** Ending version (inclusive unless endExcluding is set) */
46
+ versionEnd?: string;
47
+ /** Start version is exclusive */
48
+ versionStartExcluding?: boolean;
49
+ /** End version is exclusive */
50
+ versionEndExcluding?: boolean;
51
+ }
52
+ /**
53
+ * CPE match criteria from NVD
54
+ */
55
+ export interface CPEMatch {
56
+ /** CPE 2.3 URI */
57
+ criteria: string;
58
+ /** Whether this criteria makes the configuration vulnerable */
59
+ vulnerable: boolean;
60
+ /** Match criteria ID */
61
+ matchCriteriaId: string;
62
+ /** Version range */
63
+ versionRange?: VersionRange;
64
+ }
65
+ /**
66
+ * Vulnerability match result
67
+ */
68
+ export interface VulnerabilityMatch {
69
+ /** Package name */
70
+ packageName: string;
71
+ /** Package version */
72
+ packageVersion: string;
73
+ /** CVE ID */
74
+ cveId: string;
75
+ /** Generated CPE URI */
76
+ cpe: string;
77
+ /** Match criteria that matched */
78
+ matchCriteria?: CPEMatch;
79
+ /** Whether version is in vulnerable range */
80
+ isVulnerable: boolean;
81
+ /** Match confidence (0-1) */
82
+ confidence: number;
83
+ }
84
+ /**
85
+ * CPE Matcher for npm packages
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * const matcher = new CPEMatcher();
90
+ *
91
+ * // Generate CPE from package
92
+ * const cpe = matcher.generateCPE('express', '4.18.2');
93
+ * // => 'cpe:2.3:a:expressjs:express:4.18.2:*:*:*:*:node.js:*:*'
94
+ *
95
+ * // Check if version is vulnerable
96
+ * const isVuln = matcher.isVersionVulnerable('4.18.2', {
97
+ * versionStart: '4.0.0',
98
+ * versionEnd: '4.19.0',
99
+ * versionEndExcluding: true
100
+ * });
101
+ * ```
102
+ */
103
+ export declare class CPEMatcher {
104
+ private vendorMappings;
105
+ constructor(customMappings?: Record<string, string>);
106
+ /**
107
+ * Generate CPE 2.3 URI for an npm package
108
+ * @param packageName - npm package name
109
+ * @param version - Package version
110
+ * @returns CPE 2.3 formatted URI
111
+ */
112
+ generateCPE(packageName: string, version: string): string;
113
+ /**
114
+ * Convert npm package info to CPE components
115
+ */
116
+ packageToCPEComponents(packageName: string, version: string): CPEComponents;
117
+ /**
118
+ * Convert CPE components to URI string
119
+ */
120
+ componentsToURI(components: CPEComponents): string;
121
+ /**
122
+ * Parse CPE 2.3 URI to components
123
+ */
124
+ parseURI(cpeUri: string): CPEComponents | null;
125
+ /**
126
+ * Check if a version falls within a vulnerable range
127
+ * @param version - Version to check
128
+ * @param range - Version range from CVE data
129
+ * @returns True if version is within vulnerable range
130
+ */
131
+ isVersionVulnerable(version: string, range: VersionRange): boolean;
132
+ /**
133
+ * Match a package against CPE criteria
134
+ */
135
+ matchPackage(packageName: string, packageVersion: string, cpeMatch: CPEMatch): VulnerabilityMatch | null;
136
+ /**
137
+ * Add a custom vendor mapping
138
+ */
139
+ addVendorMapping(packageName: string, vendor: string): void;
140
+ /**
141
+ * Get the vendor for a package
142
+ */
143
+ getVendor(packageName: string): string;
144
+ /**
145
+ * Normalize package name for CPE
146
+ */
147
+ private normalizeName;
148
+ /**
149
+ * Normalize version string
150
+ */
151
+ private normalizeVersion;
152
+ /**
153
+ * Resolve vendor for a package
154
+ */
155
+ private resolveVendor;
156
+ /**
157
+ * Get possible vendor names for a package
158
+ */
159
+ private getPossibleVendors;
160
+ /**
161
+ * Compare two semver versions
162
+ * @returns -1 if a < b, 0 if a == b, 1 if a > b
163
+ */
164
+ compareVersions(a: string, b: string): number;
165
+ /**
166
+ * Escape special characters in CPE component
167
+ */
168
+ private escapeComponent;
169
+ /**
170
+ * Unescape CPE component value
171
+ */
172
+ private unescapeComponent;
173
+ }
174
+ /**
175
+ * Create a CPE search query from package info
176
+ * Generates wildcarded CPE for searching NVD
177
+ */
178
+ export declare function createCPESearchQuery(packageName: string, vendor?: string): string;
179
+ /**
180
+ * Extract package name from CPE URI
181
+ */
182
+ export declare function extractPackageFromCPE(cpeUri: string): string | null;
183
+ //# sourceMappingURL=cpe-matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpe-matcher.d.ts","sourceRoot":"","sources":["../../src/cve/cpe-matcher.ts"],"names":[],"mappings":"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"}