@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,321 @@
1
+ /**
2
+ * @fileoverview CWE-787: Out-of-bounds Write
3
+ * @module @nahisaho/musubix-security/rules/cwe/cwe-787-oob-write
4
+ * @trace TSK-RULE-005
5
+ *
6
+ * Detects:
7
+ * - Buffer overflow patterns
8
+ * - Array index out of bounds
9
+ * - Unsafe array operations
10
+ * - TypedArray boundary violations
11
+ * - Unchecked array growth
12
+ *
13
+ * CWE-787 is #1 in CWE Top 25 2023.
14
+ */
15
+ /**
16
+ * CWE-787 - Out-of-bounds Write
17
+ */
18
+ export const cwe787OutOfBoundsWrite = {
19
+ id: 'cwe-787-oob-write',
20
+ name: 'CWE-787: Out-of-bounds Write',
21
+ description: 'Detects potential out-of-bounds write vulnerabilities including buffer overflows and unsafe array access',
22
+ defaultSeverity: 'high',
23
+ category: 'memory-safety',
24
+ tags: ['cwe', 'memory', 'buffer-overflow', 'array', 'security'],
25
+ cwe: ['787'],
26
+ references: [
27
+ {
28
+ title: 'CWE-787: Out-of-bounds Write',
29
+ url: 'https://cwe.mitre.org/data/definitions/787.html',
30
+ },
31
+ {
32
+ title: 'CWE Top 25 2023',
33
+ url: 'https://cwe.mitre.org/top25/archive/2023/2023_top25_list.html',
34
+ },
35
+ ],
36
+ async analyze(context) {
37
+ const findings = [];
38
+ const sourceCode = context.sourceCode;
39
+ checkBufferOverflowPatterns(context, sourceCode, findings);
40
+ checkUnsafeArrayAccess(context, sourceCode, findings);
41
+ checkTypedArrayViolations(context, sourceCode, findings);
42
+ checkUncheckedArrayGrowth(context, sourceCode, findings);
43
+ return findings;
44
+ },
45
+ };
46
+ /**
47
+ * Check for buffer overflow patterns (Node.js Buffer operations)
48
+ */
49
+ function checkBufferOverflowPatterns(context, sourceCode, findings) {
50
+ const lines = sourceCode.split('\n');
51
+ const bufferPatterns = [
52
+ {
53
+ pattern: /Buffer\.allocUnsafe\s*\(/gi,
54
+ type: 'Buffer.allocUnsafe usage',
55
+ message: 'Buffer.allocUnsafe creates uninitialized memory that may contain sensitive data',
56
+ severity: 'medium',
57
+ },
58
+ {
59
+ pattern: /Buffer\.allocUnsafeSlow\s*\(/gi,
60
+ type: 'Buffer.allocUnsafeSlow usage',
61
+ message: 'Buffer.allocUnsafeSlow creates uninitialized memory without pooling',
62
+ severity: 'medium',
63
+ },
64
+ {
65
+ pattern: /new\s+Buffer\s*\(/gi,
66
+ type: 'Deprecated Buffer constructor',
67
+ message: 'new Buffer() is deprecated and can cause security issues. Use Buffer.from() or Buffer.alloc()',
68
+ severity: 'high',
69
+ },
70
+ {
71
+ pattern: /\.copy\s*\([^)]*,\s*\d+\s*,\s*\d+\s*,\s*\d+\s*\)/gi,
72
+ type: 'Buffer.copy with manual offsets',
73
+ message: 'Manual buffer copy offsets may cause out-of-bounds writes',
74
+ severity: 'medium',
75
+ },
76
+ {
77
+ pattern: /\.write\s*\([^)]+,\s*(?:offset|index|\w+)\s*[,)]/gi,
78
+ type: 'Buffer.write with dynamic offset',
79
+ message: 'Buffer write with dynamic offset requires bounds checking',
80
+ severity: 'medium',
81
+ },
82
+ {
83
+ pattern: /\.writeUInt(?:8|16|32)(?:BE|LE)?\s*\([^)]+,\s*(?:\w+)\s*\)/gi,
84
+ type: 'Buffer typed write with variable offset',
85
+ message: 'Buffer typed write operations with variable offsets need bounds validation',
86
+ severity: 'medium',
87
+ },
88
+ ];
89
+ for (let lineNum = 0; lineNum < lines.length; lineNum++) {
90
+ const line = lines[lineNum];
91
+ for (const { pattern, type, message, severity } of bufferPatterns) {
92
+ pattern.lastIndex = 0;
93
+ if (pattern.test(line)) {
94
+ findings.push({
95
+ id: `cwe-787-buffer-${findings.length + 1}`,
96
+ ruleId: 'cwe-787-oob-write',
97
+ severity,
98
+ message: `${type}: ${message}`,
99
+ location: {
100
+ file: context.filePath,
101
+ startLine: lineNum + 1,
102
+ endLine: lineNum + 1,
103
+ startColumn: 0,
104
+ endColumn: line.length,
105
+ },
106
+ cwe: ['787'],
107
+ suggestion: {
108
+ description: 'Use safe buffer allocation and validate offsets',
109
+ example: `// Use Buffer.alloc() for zero-filled buffers
110
+ const buf = Buffer.alloc(size);
111
+
112
+ // Validate offsets before writing
113
+ if (offset >= 0 && offset + dataLength <= buf.length) {
114
+ buf.write(data, offset);
115
+ }`,
116
+ },
117
+ });
118
+ }
119
+ }
120
+ }
121
+ }
122
+ /**
123
+ * Check for unsafe array access patterns
124
+ */
125
+ function checkUnsafeArrayAccess(context, sourceCode, findings) {
126
+ const lines = sourceCode.split('\n');
127
+ const arrayPatterns = [
128
+ {
129
+ // arr[userInput] = value (assignment with user-controlled index)
130
+ pattern: /\w+\s*\[\s*(?:req\.|params\.|query\.|body\.|user\.|input\.)\w+\s*\]\s*=/gi,
131
+ type: 'Array write with user-controlled index',
132
+ message: 'Writing to array with user-controlled index can cause out-of-bounds access',
133
+ severity: 'high',
134
+ },
135
+ {
136
+ // arr[i] = value without bounds check in loop
137
+ pattern: /for\s*\([^)]*;\s*[^;]*;\s*\w+\+\+\s*\)[^{]*\{[^}]*\[\w+\]\s*=/gi,
138
+ type: 'Array write in loop without explicit bounds check',
139
+ message: 'Array writes in loops should have explicit bounds checking',
140
+ severity: 'low',
141
+ },
142
+ {
143
+ // Direct index assignment with arithmetic
144
+ pattern: /\[\s*\w+\s*[\+\-\*]\s*\d+\s*\]\s*=/gi,
145
+ type: 'Array write with index arithmetic',
146
+ message: 'Array index arithmetic may cause out-of-bounds writes',
147
+ severity: 'low',
148
+ },
149
+ ];
150
+ for (let lineNum = 0; lineNum < lines.length; lineNum++) {
151
+ const line = lines[lineNum];
152
+ for (const { pattern, type, message, severity } of arrayPatterns) {
153
+ pattern.lastIndex = 0;
154
+ if (pattern.test(line)) {
155
+ findings.push({
156
+ id: `cwe-787-array-${findings.length + 1}`,
157
+ ruleId: 'cwe-787-oob-write',
158
+ severity,
159
+ message: `${type}: ${message}`,
160
+ location: {
161
+ file: context.filePath,
162
+ startLine: lineNum + 1,
163
+ endLine: lineNum + 1,
164
+ startColumn: 0,
165
+ endColumn: line.length,
166
+ },
167
+ cwe: ['787'],
168
+ suggestion: {
169
+ description: 'Validate array indices before writing',
170
+ example: `// Always validate index before array write
171
+ if (index >= 0 && index < arr.length) {
172
+ arr[index] = value;
173
+ }
174
+
175
+ // Or use safe array methods
176
+ arr.splice(index, 0, value); // Will handle bounds automatically`,
177
+ },
178
+ });
179
+ }
180
+ }
181
+ }
182
+ }
183
+ /**
184
+ * Check for TypedArray boundary violations
185
+ */
186
+ function checkTypedArrayViolations(context, sourceCode, findings) {
187
+ const lines = sourceCode.split('\n');
188
+ const typedArrayPatterns = [
189
+ {
190
+ pattern: /new\s+(?:Int8Array|Uint8Array|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array|Float64Array|BigInt64Array|BigUint64Array)\s*\(\s*(?:\w+|[^)]+)\s*\)/gi,
191
+ type: 'TypedArray with dynamic size',
192
+ message: 'TypedArray creation with dynamic size should validate the size parameter',
193
+ severity: 'low',
194
+ },
195
+ {
196
+ pattern: /(?:Int8Array|Uint8Array|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array|Float64Array)\s*\.\s*from\s*\(/gi,
197
+ type: 'TypedArray.from usage',
198
+ message: 'TypedArray.from may cause issues if source is larger than expected',
199
+ severity: 'info',
200
+ },
201
+ {
202
+ pattern: /\.set\s*\(\s*\w+\s*,\s*\w+\s*\)/gi,
203
+ type: 'TypedArray.set with offset',
204
+ message: 'TypedArray.set with offset requires bounds validation to prevent overflow',
205
+ severity: 'medium',
206
+ },
207
+ {
208
+ pattern: /new\s+DataView\s*\([^)]+\)/gi,
209
+ type: 'DataView creation',
210
+ message: 'DataView operations require careful bounds management',
211
+ severity: 'low',
212
+ },
213
+ {
214
+ pattern: /\.setInt(?:8|16|32)\s*\([^)]+\)|\.setUint(?:8|16|32)\s*\([^)]+\)|\.setFloat(?:32|64)\s*\([^)]+\)/gi,
215
+ type: 'DataView typed write',
216
+ message: 'DataView typed writes can cause out-of-bounds access if offset is not validated',
217
+ severity: 'medium',
218
+ },
219
+ ];
220
+ for (let lineNum = 0; lineNum < lines.length; lineNum++) {
221
+ const line = lines[lineNum];
222
+ for (const { pattern, type, message, severity } of typedArrayPatterns) {
223
+ pattern.lastIndex = 0;
224
+ if (pattern.test(line)) {
225
+ findings.push({
226
+ id: `cwe-787-typed-${findings.length + 1}`,
227
+ ruleId: 'cwe-787-oob-write',
228
+ severity,
229
+ message: `${type}: ${message}`,
230
+ location: {
231
+ file: context.filePath,
232
+ startLine: lineNum + 1,
233
+ endLine: lineNum + 1,
234
+ startColumn: 0,
235
+ endColumn: line.length,
236
+ },
237
+ cwe: ['787'],
238
+ suggestion: {
239
+ description: 'Validate bounds before TypedArray operations',
240
+ example: `// Validate before TypedArray.set
241
+ const targetOffset = 10;
242
+ if (targetOffset + sourceArray.length <= targetArray.length) {
243
+ targetArray.set(sourceArray, targetOffset);
244
+ }
245
+
246
+ // DataView with bounds check
247
+ const view = new DataView(buffer);
248
+ if (offset + 4 <= buffer.byteLength) {
249
+ view.setInt32(offset, value);
250
+ }`,
251
+ },
252
+ });
253
+ }
254
+ }
255
+ }
256
+ }
257
+ /**
258
+ * Check for unchecked array growth patterns
259
+ */
260
+ function checkUncheckedArrayGrowth(context, sourceCode, findings) {
261
+ const lines = sourceCode.split('\n');
262
+ const growthPatterns = [
263
+ {
264
+ // arr.length = newLength (direct length manipulation)
265
+ pattern: /\.length\s*=\s*(?:\w+|[^;]+)/gi,
266
+ type: 'Direct array length manipulation',
267
+ message: 'Direct array length manipulation can truncate data or create sparse arrays',
268
+ severity: 'medium',
269
+ },
270
+ {
271
+ // Unbounded push in loop
272
+ pattern: /while\s*\([^)]*\)[^{]*\{[^}]*\.push\s*\(/gi,
273
+ type: 'Unbounded array growth in while loop',
274
+ message: 'Array growth in while loop without size limit may cause memory exhaustion',
275
+ severity: 'medium',
276
+ },
277
+ {
278
+ // Array spread with unknown size
279
+ pattern: /\[\s*\.\.\.\w+\s*,\s*\.\.\.\w+\s*\]/gi,
280
+ type: 'Multiple array spreads',
281
+ message: 'Spreading multiple arrays without size validation may cause memory issues',
282
+ severity: 'low',
283
+ },
284
+ ];
285
+ for (let lineNum = 0; lineNum < lines.length; lineNum++) {
286
+ const line = lines[lineNum];
287
+ for (const { pattern, type, message, severity } of growthPatterns) {
288
+ pattern.lastIndex = 0;
289
+ if (pattern.test(line)) {
290
+ findings.push({
291
+ id: `cwe-787-growth-${findings.length + 1}`,
292
+ ruleId: 'cwe-787-oob-write',
293
+ severity,
294
+ message: `${type}: ${message}`,
295
+ location: {
296
+ file: context.filePath,
297
+ startLine: lineNum + 1,
298
+ endLine: lineNum + 1,
299
+ startColumn: 0,
300
+ endColumn: line.length,
301
+ },
302
+ cwe: ['787'],
303
+ suggestion: {
304
+ description: 'Limit array size and validate before modification',
305
+ example: `// Limit array size
306
+ const MAX_SIZE = 10000;
307
+ if (arr.length < MAX_SIZE) {
308
+ arr.push(item);
309
+ }
310
+
311
+ // Safe length modification
312
+ const newLength = Math.min(desiredLength, MAX_ALLOWED_LENGTH);
313
+ arr.length = newLength;`,
314
+ },
315
+ });
316
+ }
317
+ }
318
+ }
319
+ }
320
+ export default cwe787OutOfBoundsWrite;
321
+ //# sourceMappingURL=cwe-787-oob-write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cwe-787-oob-write.js","sourceRoot":"","sources":["../../../src/rules/cwe/cwe-787-oob-write.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @fileoverview CWE-79: Improper Neutralization of Input During Web Page Generation (XSS)
3
+ * @module @nahisaho/musubix-security/rules/cwe/cwe-79-xss
4
+ * @trace TSK-RULE-005
5
+ *
6
+ * Detects:
7
+ * - Reflected XSS (user input in response)
8
+ * - Stored XSS (database content in output)
9
+ * - DOM-based XSS (client-side manipulation)
10
+ * - innerHTML/outerHTML usage
11
+ * - document.write usage
12
+ * - Unsafe template rendering
13
+ *
14
+ * CWE-79 is #2 in CWE Top 25 2023.
15
+ */
16
+ import type { SecurityRule } from '../types.js';
17
+ /**
18
+ * CWE-79 - Cross-site Scripting (XSS)
19
+ */
20
+ export declare const cwe79XSS: SecurityRule;
21
+ export default cwe79XSS;
22
+ //# sourceMappingURL=cwe-79-xss.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cwe-79-xss.d.ts","sourceRoot":"","sources":["../../../src/rules/cwe/cwe-79-xss.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,YAAY,EAA4B,MAAM,aAAa,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,YAgCtB,CAAC;AA4YF,eAAe,QAAQ,CAAC"}