@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,403 @@
1
+ /**
2
+ * @fileoverview OWASP A04:2021 - Insecure Design Rule
3
+ * @module @nahisaho/musubix-security/rules/owasp/a04-insecure-design
4
+ * @trace TSK-RULE-003
5
+ *
6
+ * Detects:
7
+ * - Missing rate limiting
8
+ * - Missing input validation
9
+ * - Missing output encoding
10
+ * - Insecure defaults
11
+ * - Business logic flaws
12
+ */
13
+ /**
14
+ * OWASP A04 - Insecure Design
15
+ */
16
+ export const owaspA04InsecureDesign = {
17
+ id: 'owasp-a04-insecure-design',
18
+ name: 'OWASP A04:2021 - Insecure Design',
19
+ description: 'Detects design-level security flaws such as missing rate limiting, validation, and encoding',
20
+ defaultSeverity: 'high',
21
+ detectionMethod: 'pattern-match',
22
+ tags: ['owasp', 'design', 'rate-limiting', 'validation', 'security'],
23
+ owasp: ['A04:2021'],
24
+ cwe: ['73', '183', '209', '256', '501', '522', '602', '656', '799', '840'],
25
+ references: [
26
+ { title: 'OWASP A04:2021 - Insecure Design', url: 'https://owasp.org/Top10/A04_2021-Insecure_Design/' },
27
+ { title: 'CWE-501: Trust Boundary Violation', url: 'https://cwe.mitre.org/data/definitions/501.html' },
28
+ ],
29
+ async analyze(context) {
30
+ const findings = [];
31
+ const sourceFile = context.sourceFile;
32
+ if (!sourceFile)
33
+ return findings;
34
+ // Check for missing rate limiting
35
+ checkMissingRateLimiting(context, findings);
36
+ // Check for missing input validation
37
+ checkMissingInputValidation(context, findings);
38
+ // Check for missing output encoding
39
+ checkMissingOutputEncoding(context, findings);
40
+ // Check for insecure defaults
41
+ checkInsecureDefaults(context, findings);
42
+ // Check for missing security headers
43
+ checkMissingSecurityHeaders(context, findings);
44
+ // Check for business logic issues
45
+ checkBusinessLogicFlaws(context, findings);
46
+ return findings;
47
+ },
48
+ };
49
+ /**
50
+ * Check for missing rate limiting on sensitive endpoints
51
+ */
52
+ function checkMissingRateLimiting(context, findings) {
53
+ const sourceCode = context.sourceCode;
54
+ // Check if rate limiting is imported/used
55
+ const hasRateLimiting = /rateLimit|express-rate-limit|rate-limiter|throttle/i.test(sourceCode);
56
+ // Sensitive endpoints that should have rate limiting
57
+ const sensitiveEndpointPatterns = [
58
+ /\.(post|put)\s*\(\s*['"`]\/(?:api\/)?(?:login|signin|auth)/gi,
59
+ /\.(post|put)\s*\(\s*['"`]\/(?:api\/)?(?:register|signup)/gi,
60
+ /\.(post|put)\s*\(\s*['"`]\/(?:api\/)?(?:reset-password|forgot-password)/gi,
61
+ /\.(post|put)\s*\(\s*['"`]\/(?:api\/)?(?:otp|verify|code)/gi,
62
+ ];
63
+ if (!hasRateLimiting) {
64
+ const lines = sourceCode.split('\n');
65
+ for (let lineNum = 0; lineNum < lines.length; lineNum++) {
66
+ const line = lines[lineNum];
67
+ for (const pattern of sensitiveEndpointPatterns) {
68
+ pattern.lastIndex = 0;
69
+ if (pattern.test(line)) {
70
+ findings.push({
71
+ id: `owasp-a04-rate-${findings.length + 1}`,
72
+ ruleId: 'owasp-a04-insecure-design',
73
+ severity: 'high',
74
+ message: 'Sensitive endpoint without rate limiting - vulnerable to brute force attacks',
75
+ location: {
76
+ file: context.filePath,
77
+ startLine: lineNum + 1,
78
+ endLine: lineNum + 1,
79
+ startColumn: 0,
80
+ endColumn: line.length,
81
+ },
82
+ suggestion: {
83
+ description: 'Add rate limiting to sensitive endpoints',
84
+ example: `// Add rate limiting middleware:
85
+ const rateLimit = require('express-rate-limit');
86
+ const authLimiter = rateLimit({
87
+ windowMs: 15 * 60 * 1000,
88
+ max: 5,
89
+ message: 'Too many attempts, please try again later'
90
+ });
91
+ app.post('/login', authLimiter, loginHandler);`,
92
+ },
93
+ });
94
+ break;
95
+ }
96
+ }
97
+ }
98
+ }
99
+ }
100
+ /**
101
+ * Check for missing input validation
102
+ */
103
+ function checkMissingInputValidation(context, findings) {
104
+ const sourceCode = context.sourceCode;
105
+ const lines = sourceCode.split('\n');
106
+ // Check for direct use of req.body/query/params without validation
107
+ const directUsePatterns = [
108
+ // Direct assignment from request
109
+ { pattern: /(?:const|let|var)\s+\w+\s*=\s*req\.body\s*;/gi, type: 'body' },
110
+ { pattern: /(?:const|let|var)\s+\w+\s*=\s*req\.query\s*;/gi, type: 'query' },
111
+ { pattern: /(?:const|let|var)\s+\w+\s*=\s*req\.params\s*;/gi, type: 'params' },
112
+ // Destructuring without validation
113
+ { pattern: /(?:const|let|var)\s+\{[^}]+\}\s*=\s*req\.body\s*;?\s*(?!.*validate)/gi, type: 'body destructuring' },
114
+ ];
115
+ // Check if validation library is present
116
+ const hasValidation = /(?:joi|yup|zod|express-validator|class-validator|ajv)/i.test(sourceCode);
117
+ if (!hasValidation) {
118
+ for (let lineNum = 0; lineNum < lines.length; lineNum++) {
119
+ const line = lines[lineNum];
120
+ for (const { pattern, type } of directUsePatterns) {
121
+ pattern.lastIndex = 0;
122
+ if (pattern.test(line)) {
123
+ // Check surrounding context for validation
124
+ const surroundingCode = lines.slice(lineNum, Math.min(lines.length, lineNum + 10)).join('\n');
125
+ if (!hasInputValidation(surroundingCode)) {
126
+ findings.push({
127
+ id: `owasp-a04-validation-${findings.length + 1}`,
128
+ ruleId: 'owasp-a04-insecure-design',
129
+ severity: 'medium',
130
+ message: `Request ${type} used without input validation`,
131
+ location: {
132
+ file: context.filePath,
133
+ startLine: lineNum + 1,
134
+ endLine: lineNum + 1,
135
+ startColumn: 0,
136
+ endColumn: line.length,
137
+ },
138
+ suggestion: {
139
+ description: 'Use a validation library',
140
+ example: `// Use a validation library:
141
+ const { z } = require('zod');
142
+ const schema = z.object({
143
+ email: z.string().email(),
144
+ password: z.string().min(8)
145
+ });
146
+ const validated = schema.parse(req.body);`,
147
+ },
148
+ });
149
+ }
150
+ break;
151
+ }
152
+ }
153
+ }
154
+ }
155
+ }
156
+ /**
157
+ * Check for missing output encoding
158
+ */
159
+ function checkMissingOutputEncoding(context, findings) {
160
+ const sourceCode = context.sourceCode;
161
+ const lines = sourceCode.split('\n');
162
+ const outputPatterns = [
163
+ // res.send with user data
164
+ { pattern: /res\.send\s*\([^)]*(?:req\.body|req\.query|req\.params|user\.|data\.)/gi, type: 'res.send' },
165
+ // Setting HTML directly
166
+ { pattern: /\.html\s*\([^)]*(?:req\.|user\.|data\.)/gi, type: 'HTML response' },
167
+ // Template rendering without sanitization
168
+ { pattern: /res\.render\s*\([^)]*(?:req\.|user\.|data\.)/gi, type: 'template render' },
169
+ ];
170
+ for (let lineNum = 0; lineNum < lines.length; lineNum++) {
171
+ const line = lines[lineNum];
172
+ for (const { pattern, type } of outputPatterns) {
173
+ pattern.lastIndex = 0;
174
+ if (pattern.test(line)) {
175
+ // Check if there's encoding/sanitization
176
+ if (!hasOutputEncoding(line)) {
177
+ findings.push({
178
+ id: `owasp-a04-encoding-${findings.length + 1}`,
179
+ ruleId: 'owasp-a04-insecure-design',
180
+ severity: 'medium',
181
+ message: `${type} with user data may need output encoding`,
182
+ location: {
183
+ file: context.filePath,
184
+ startLine: lineNum + 1,
185
+ endLine: lineNum + 1,
186
+ startColumn: 0,
187
+ endColumn: line.length,
188
+ },
189
+ suggestion: {
190
+ description: 'Encode HTML entities in output',
191
+ example: `// Encode HTML entities:
192
+ const encode = require('he');
193
+ res.send(encode.encode(userInput));
194
+ // Or use a template engine with auto-escaping`,
195
+ },
196
+ });
197
+ }
198
+ break;
199
+ }
200
+ }
201
+ }
202
+ }
203
+ /**
204
+ * Check for insecure defaults
205
+ */
206
+ function checkInsecureDefaults(context, findings) {
207
+ const sourceCode = context.sourceCode;
208
+ const lines = sourceCode.split('\n');
209
+ const insecureDefaultPatterns = [
210
+ // Debug mode enabled
211
+ { pattern: /debug\s*[:=]\s*true/gi, issue: 'Debug mode enabled', severity: 'medium' },
212
+ // Trust proxy without validation
213
+ { pattern: /trust\s*proxy\s*[:=]\s*true/gi, issue: 'Trust proxy enabled globally', severity: 'low' },
214
+ // Session without secure flag
215
+ { pattern: /session\s*\(\s*\{[^}]*(?!secure\s*:\s*true)/gi, issue: 'Session without secure flag', severity: 'medium' },
216
+ // Cookie without httpOnly
217
+ { pattern: /cookie\s*[:=]\s*\{[^}]*(?!httpOnly)/gi, issue: 'Cookie without httpOnly flag', severity: 'medium' },
218
+ ];
219
+ for (let lineNum = 0; lineNum < lines.length; lineNum++) {
220
+ const line = lines[lineNum];
221
+ for (const { pattern, issue, severity } of insecureDefaultPatterns) {
222
+ pattern.lastIndex = 0;
223
+ if (pattern.test(line)) {
224
+ findings.push({
225
+ id: `owasp-a04-default-${findings.length + 1}`,
226
+ ruleId: 'owasp-a04-insecure-design',
227
+ severity,
228
+ message: `Insecure default: ${issue}`,
229
+ location: {
230
+ file: context.filePath,
231
+ startLine: lineNum + 1,
232
+ endLine: lineNum + 1,
233
+ startColumn: 0,
234
+ endColumn: line.length,
235
+ },
236
+ suggestion: {
237
+ description: 'Use secure defaults',
238
+ example: `// Use secure defaults:
239
+ app.use(session({
240
+ secret: process.env.SESSION_SECRET,
241
+ cookie: {
242
+ secure: true,
243
+ httpOnly: true,
244
+ sameSite: 'strict'
245
+ }
246
+ }));`,
247
+ },
248
+ });
249
+ break;
250
+ }
251
+ }
252
+ }
253
+ }
254
+ /**
255
+ * Check for missing security headers
256
+ */
257
+ function checkMissingSecurityHeaders(context, findings) {
258
+ const sourceCode = context.sourceCode;
259
+ // Check if helmet or manual security headers are set
260
+ const hasSecurityHeaders = /helmet|X-Content-Type-Options|X-Frame-Options|Content-Security-Policy|Strict-Transport-Security/i.test(sourceCode);
261
+ // Check if it's an Express app
262
+ const isExpressApp = /express\(\)|createServer|app\.use|app\.get|app\.post/i.test(sourceCode);
263
+ if (isExpressApp && !hasSecurityHeaders) {
264
+ findings.push({
265
+ id: `owasp-a04-headers-${findings.length + 1}`,
266
+ ruleId: 'owasp-a04-insecure-design',
267
+ severity: 'medium',
268
+ message: 'Express app without security headers (consider using Helmet)',
269
+ location: {
270
+ file: context.filePath,
271
+ startLine: 1,
272
+ endLine: 1,
273
+ startColumn: 0,
274
+ endColumn: 0,
275
+ },
276
+ suggestion: {
277
+ description: 'Add security headers with Helmet',
278
+ example: `// Add Helmet:
279
+ const helmet = require('helmet');
280
+ app.use(helmet());`,
281
+ },
282
+ });
283
+ }
284
+ // Check for CSRF protection
285
+ const hasCsrfProtection = /csrf|csurf|csrfToken/i.test(sourceCode);
286
+ const hasFormPost = /\.(post|put|patch)\s*\(/gi.test(sourceCode);
287
+ if (isExpressApp && hasFormPost && !hasCsrfProtection) {
288
+ findings.push({
289
+ id: `owasp-a04-csrf-${findings.length + 1}`,
290
+ ruleId: 'owasp-a04-insecure-design',
291
+ severity: 'medium',
292
+ message: 'POST/PUT endpoints without CSRF protection',
293
+ location: {
294
+ file: context.filePath,
295
+ startLine: 1,
296
+ endLine: 1,
297
+ startColumn: 0,
298
+ endColumn: 0,
299
+ },
300
+ suggestion: {
301
+ description: 'Add CSRF protection',
302
+ example: `// Add CSRF protection:
303
+ const csrf = require('csurf');
304
+ app.use(csrf({ cookie: true }));`,
305
+ },
306
+ });
307
+ }
308
+ }
309
+ /**
310
+ * Check for business logic flaws
311
+ */
312
+ function checkBusinessLogicFlaws(context, findings) {
313
+ const sourceCode = context.sourceCode;
314
+ const lines = sourceCode.split('\n');
315
+ const businessLogicPatterns = [
316
+ // Price/amount from client without validation
317
+ { pattern: /(?:price|amount|total|cost)\s*[:=]\s*(?:req\.body|req\.query)/gi, issue: 'Price/amount from client input', severity: 'high' },
318
+ // Discount without limit check
319
+ { pattern: /discount\s*[:=]\s*(?:req\.body|req\.query)[^;]*(?!.*(?:max|limit|check))/gi, issue: 'Discount without validation', severity: 'medium' },
320
+ // Quantity without bounds
321
+ { pattern: /quantity\s*[:=]\s*(?:req\.body|req\.query)[^;]*(?!.*(?:max|min|limit))/gi, issue: 'Quantity without bounds checking', severity: 'medium' },
322
+ ];
323
+ for (let lineNum = 0; lineNum < lines.length; lineNum++) {
324
+ const line = lines[lineNum];
325
+ for (const { pattern, issue, severity } of businessLogicPatterns) {
326
+ pattern.lastIndex = 0;
327
+ if (pattern.test(line)) {
328
+ // Check surrounding code for validation
329
+ const surroundingCode = lines.slice(lineNum, Math.min(lines.length, lineNum + 5)).join('\n');
330
+ if (!hasBusinessValidation(surroundingCode)) {
331
+ findings.push({
332
+ id: `owasp-a04-logic-${findings.length + 1}`,
333
+ ruleId: 'owasp-a04-insecure-design',
334
+ severity,
335
+ message: `Potential business logic flaw: ${issue}`,
336
+ location: {
337
+ file: context.filePath,
338
+ startLine: lineNum + 1,
339
+ endLine: lineNum + 1,
340
+ startColumn: 0,
341
+ endColumn: line.length,
342
+ },
343
+ suggestion: {
344
+ description: 'Add bounds checking and validation',
345
+ example: `// Add bounds checking:
346
+ const quantity = Math.min(Math.max(parseInt(req.body.quantity) || 0, 1), 100);
347
+ // Always calculate prices server-side
348
+ const price = await getProductPrice(productId);`,
349
+ },
350
+ });
351
+ }
352
+ break;
353
+ }
354
+ }
355
+ }
356
+ }
357
+ /**
358
+ * Check if code has input validation
359
+ */
360
+ function hasInputValidation(code) {
361
+ const validationPatterns = [
362
+ /validate/i,
363
+ /schema/i,
364
+ /parse/i,
365
+ /sanitize/i,
366
+ /check/i,
367
+ /assert/i,
368
+ /joi\./i,
369
+ /yup\./i,
370
+ /zod\./i,
371
+ ];
372
+ return validationPatterns.some(p => p.test(code));
373
+ }
374
+ /**
375
+ * Check if output has encoding
376
+ */
377
+ function hasOutputEncoding(code) {
378
+ const encodingPatterns = [
379
+ /encode/i,
380
+ /escape/i,
381
+ /sanitize/i,
382
+ /\.json\s*\(/i,
383
+ /DOMPurify/i,
384
+ ];
385
+ return encodingPatterns.some(p => p.test(code));
386
+ }
387
+ /**
388
+ * Check if code has business validation
389
+ */
390
+ function hasBusinessValidation(code) {
391
+ const validationPatterns = [
392
+ /Math\.(?:min|max)/i,
393
+ /Number\.(?:isFinite|isInteger)/i,
394
+ />=?\s*\d/,
395
+ /<=?\s*\d/,
396
+ /validate/i,
397
+ /check/i,
398
+ /throw/i,
399
+ ];
400
+ return validationPatterns.some(p => p.test(code));
401
+ }
402
+ export default owaspA04InsecureDesign;
403
+ //# sourceMappingURL=a04-insecure-design.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a04-insecure-design.js","sourceRoot":"","sources":["../../../src/rules/owasp/a04-insecure-design.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @fileoverview OWASP A05:2021 - Security Misconfiguration Rule
3
+ * @module @nahisaho/musubix-security/rules/owasp/a05-security-misconfiguration
4
+ * @trace TSK-RULE-003
5
+ *
6
+ * Detects:
7
+ * - Default credentials
8
+ * - Verbose error messages
9
+ * - Unnecessary features enabled
10
+ * - Missing security headers
11
+ * - Development settings in production
12
+ */
13
+ import type { SecurityRule } from '../types.js';
14
+ /**
15
+ * OWASP A05 - Security Misconfiguration
16
+ */
17
+ export declare const owaspA05SecurityMisconfiguration: SecurityRule;
18
+ export default owaspA05SecurityMisconfiguration;
19
+ //# sourceMappingURL=a05-security-misconfiguration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a05-security-misconfiguration.d.ts","sourceRoot":"","sources":["../../../src/rules/owasp/a05-security-misconfiguration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,YAAY,EAA4B,MAAM,aAAa,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,gCAAgC,EAAE,YAuC9C,CAAC;AAoWF,eAAe,gCAAgC,CAAC"}