@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,338 @@
1
+ /**
2
+ * @fileoverview Package JSON Parser for dependency extraction
3
+ * @module @nahisaho/musubix-security/cve/dependency-parser
4
+ *
5
+ * Parses package.json and package-lock.json to extract dependency
6
+ * information for vulnerability scanning.
7
+ *
8
+ * @requirement REQ-CVE-002 - Dependency extraction from package files
9
+ * @design DES-EPIC2-005 - Dependency Parser component
10
+ */
11
+ import * as fs from 'node:fs';
12
+ import * as path from 'node:path';
13
+ /**
14
+ * Dependency Parser for npm projects
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const parser = new DependencyParser();
19
+ *
20
+ * // Parse from directory
21
+ * const result = await parser.parseDirectory('./my-project');
22
+ *
23
+ * // Parse from package.json content
24
+ * const deps = parser.parsePackageJson(packageJsonContent);
25
+ *
26
+ * // Get all dependencies as flat list
27
+ * console.log(result.dependencies);
28
+ * ```
29
+ */
30
+ export class DependencyParser {
31
+ options;
32
+ constructor(options = {}) {
33
+ this.options = {
34
+ includeDevDependencies: options.includeDevDependencies ?? true,
35
+ includePeerDependencies: options.includePeerDependencies ?? false,
36
+ includeOptionalDependencies: options.includeOptionalDependencies ?? true,
37
+ maxDepth: options.maxDepth ?? Infinity,
38
+ };
39
+ }
40
+ /**
41
+ * Parse dependencies from a project directory
42
+ * @param dirPath - Path to project directory
43
+ * @returns Parsed dependencies
44
+ */
45
+ async parseDirectory(dirPath) {
46
+ const warnings = [];
47
+ // Read package.json
48
+ const packageJsonPath = path.join(dirPath, 'package.json');
49
+ if (!fs.existsSync(packageJsonPath)) {
50
+ throw new Error(`package.json not found at ${packageJsonPath}`);
51
+ }
52
+ const packageJsonContent = await fs.promises.readFile(packageJsonPath, 'utf-8');
53
+ const packageJson = JSON.parse(packageJsonContent);
54
+ // Try to read package-lock.json
55
+ let packageLock = null;
56
+ const packageLockPath = path.join(dirPath, 'package-lock.json');
57
+ if (fs.existsSync(packageLockPath)) {
58
+ try {
59
+ const lockContent = await fs.promises.readFile(packageLockPath, 'utf-8');
60
+ packageLock = JSON.parse(lockContent);
61
+ }
62
+ catch (error) {
63
+ warnings.push(`Failed to parse package-lock.json: ${error}`);
64
+ }
65
+ }
66
+ else {
67
+ warnings.push('package-lock.json not found, using version specifiers only');
68
+ }
69
+ return this.parsePackageJsonWithLock(packageJson, packageLock, warnings);
70
+ }
71
+ /**
72
+ * Parse package.json content directly
73
+ * @param content - package.json content as string
74
+ * @returns Direct dependencies (no transitive without lock file)
75
+ */
76
+ parsePackageJson(content) {
77
+ const packageJson = JSON.parse(content);
78
+ const dependencies = [];
79
+ this.extractDependencies(packageJson.dependencies, 'dependencies', true, dependencies);
80
+ if (this.options.includeDevDependencies) {
81
+ this.extractDependencies(packageJson.devDependencies, 'devDependencies', true, dependencies);
82
+ }
83
+ if (this.options.includePeerDependencies) {
84
+ this.extractDependencies(packageJson.peerDependencies, 'peerDependencies', true, dependencies);
85
+ }
86
+ if (this.options.includeOptionalDependencies) {
87
+ this.extractDependencies(packageJson.optionalDependencies, 'optionalDependencies', true, dependencies);
88
+ }
89
+ return dependencies;
90
+ }
91
+ /**
92
+ * Parse package-lock.json content directly
93
+ * @param content - package-lock.json content as string
94
+ * @returns All dependencies including transitive
95
+ */
96
+ parsePackageLock(content) {
97
+ const lockFile = JSON.parse(content);
98
+ return this.extractFromLockFile(lockFile);
99
+ }
100
+ /**
101
+ * Parse with both package.json and lock file
102
+ */
103
+ parsePackageJsonWithLock(packageJson, packageLock, warnings) {
104
+ const dependencies = [];
105
+ const directNames = new Set();
106
+ // Extract direct dependencies from package.json
107
+ const directDeps = this.parsePackageJson(JSON.stringify(packageJson));
108
+ for (const dep of directDeps) {
109
+ directNames.add(dep.name);
110
+ }
111
+ if (packageLock) {
112
+ // Use lock file for all dependencies
113
+ const allDeps = this.extractFromLockFile(packageLock);
114
+ // Mark direct dependencies
115
+ for (const dep of allDeps) {
116
+ dep.isDirect = directNames.has(dep.name);
117
+ // Find matching direct dep to get the type
118
+ if (dep.isDirect) {
119
+ const direct = directDeps.find(d => d.name === dep.name);
120
+ if (direct) {
121
+ dep.type = direct.type;
122
+ dep.versionSpecifier = direct.versionSpecifier;
123
+ }
124
+ }
125
+ dependencies.push(dep);
126
+ }
127
+ }
128
+ else {
129
+ // Without lock file, we only have direct dependencies
130
+ dependencies.push(...directDeps);
131
+ }
132
+ const directCount = dependencies.filter(d => d.isDirect).length;
133
+ const transitiveCount = dependencies.length - directCount;
134
+ return {
135
+ projectName: packageJson.name,
136
+ projectVersion: packageJson.version,
137
+ dependencies,
138
+ directCount,
139
+ transitiveCount,
140
+ warnings,
141
+ };
142
+ }
143
+ /**
144
+ * Extract dependencies from lock file
145
+ */
146
+ extractFromLockFile(lockFile) {
147
+ const dependencies = [];
148
+ const seen = new Set();
149
+ // Handle v2/v3 format (packages)
150
+ if (lockFile.packages) {
151
+ for (const [key, entry] of Object.entries(lockFile.packages)) {
152
+ // Skip root package
153
+ if (key === '')
154
+ continue;
155
+ // Extract package name from path (node_modules/pkg or node_modules/@scope/pkg)
156
+ const name = this.extractPackageNameFromPath(key);
157
+ if (!name || seen.has(name))
158
+ continue;
159
+ const type = this.determineDependencyType(entry);
160
+ if (!this.shouldIncludeType(type))
161
+ continue;
162
+ seen.add(name);
163
+ dependencies.push({
164
+ name,
165
+ versionSpecifier: entry.version ?? '*',
166
+ resolvedVersion: entry.version,
167
+ type,
168
+ isDirect: false, // Will be updated later
169
+ integrity: entry.integrity,
170
+ resolved: entry.resolved,
171
+ dependencies: entry.dependencies ? Object.keys(entry.dependencies) : undefined,
172
+ });
173
+ }
174
+ }
175
+ // Handle v1 format (dependencies)
176
+ if (lockFile.dependencies && dependencies.length === 0) {
177
+ this.extractFromLegacyLock(lockFile.dependencies, dependencies, seen, 0);
178
+ }
179
+ return dependencies;
180
+ }
181
+ /**
182
+ * Extract from v1 lock format (recursive)
183
+ */
184
+ extractFromLegacyLock(deps, result, seen, depth) {
185
+ if (depth > this.options.maxDepth)
186
+ return;
187
+ for (const [name, entry] of Object.entries(deps)) {
188
+ if (seen.has(name))
189
+ continue;
190
+ const type = entry.dev
191
+ ? 'devDependencies'
192
+ : entry.optional
193
+ ? 'optionalDependencies'
194
+ : 'dependencies';
195
+ if (!this.shouldIncludeType(type))
196
+ continue;
197
+ seen.add(name);
198
+ result.push({
199
+ name,
200
+ versionSpecifier: entry.version,
201
+ resolvedVersion: entry.version,
202
+ type,
203
+ isDirect: depth === 0,
204
+ integrity: entry.integrity,
205
+ resolved: entry.resolved,
206
+ dependencies: entry.requires ? Object.keys(entry.requires) : undefined,
207
+ });
208
+ // Recurse into nested dependencies
209
+ if (entry.dependencies) {
210
+ this.extractFromLegacyLock(entry.dependencies, result, seen, depth + 1);
211
+ }
212
+ }
213
+ }
214
+ /**
215
+ * Extract dependencies from package.json section
216
+ */
217
+ extractDependencies(deps, type, isDirect, result) {
218
+ if (!deps)
219
+ return;
220
+ for (const [name, version] of Object.entries(deps)) {
221
+ result.push({
222
+ name,
223
+ versionSpecifier: version,
224
+ type,
225
+ isDirect,
226
+ });
227
+ }
228
+ }
229
+ /**
230
+ * Determine dependency type from lock entry
231
+ */
232
+ determineDependencyType(entry) {
233
+ if (entry.dev)
234
+ return 'devDependencies';
235
+ if (entry.optional)
236
+ return 'optionalDependencies';
237
+ if (entry.peer)
238
+ return 'peerDependencies';
239
+ return 'dependencies';
240
+ }
241
+ /**
242
+ * Check if dependency type should be included
243
+ */
244
+ shouldIncludeType(type) {
245
+ switch (type) {
246
+ case 'dependencies':
247
+ return true;
248
+ case 'devDependencies':
249
+ return this.options.includeDevDependencies;
250
+ case 'peerDependencies':
251
+ return this.options.includePeerDependencies;
252
+ case 'optionalDependencies':
253
+ return this.options.includeOptionalDependencies;
254
+ default:
255
+ return true;
256
+ }
257
+ }
258
+ /**
259
+ * Extract package name from node_modules path
260
+ */
261
+ extractPackageNameFromPath(modulePath) {
262
+ // Handle paths like:
263
+ // node_modules/lodash
264
+ // node_modules/@scope/package
265
+ // node_modules/a/node_modules/b
266
+ const match = modulePath.match(/node_modules\/(@[^/]+\/[^/]+|[^/]+)$/);
267
+ return match ? match[1] : null;
268
+ }
269
+ }
270
+ /**
271
+ * Resolve version specifier to concrete version
272
+ * Handles npm version ranges
273
+ */
274
+ export function resolveVersionSpecifier(specifier) {
275
+ // Exact version
276
+ if (/^\d+\.\d+\.\d+/.test(specifier)) {
277
+ return { type: 'exact', version: specifier };
278
+ }
279
+ // URL or git
280
+ if (specifier.startsWith('http') || specifier.startsWith('git') || specifier.includes('github:')) {
281
+ if (specifier.startsWith('git') || specifier.includes('github:')) {
282
+ return { type: 'git' };
283
+ }
284
+ return { type: 'url' };
285
+ }
286
+ // Tag (latest, next, etc.)
287
+ if (/^[a-z]+$/i.test(specifier)) {
288
+ return { type: 'tag' };
289
+ }
290
+ // Range patterns
291
+ const rangeMatch = specifier.match(/^(?:>=?|<=?|~|\^)?(\d+(?:\.\d+(?:\.\d+)?)?)/);
292
+ if (rangeMatch) {
293
+ return {
294
+ type: 'range',
295
+ minVersion: rangeMatch[1],
296
+ };
297
+ }
298
+ return { type: 'range' };
299
+ }
300
+ /**
301
+ * Filter dependencies for security scanning
302
+ * Removes dev dependencies if not needed, etc.
303
+ */
304
+ export function filterDependenciesForScanning(dependencies, options = {}) {
305
+ // Set defaults - by default include everything
306
+ const includeDevDeps = options.includeDevDependencies ?? true;
307
+ const includeTransitive = options.includeTransitive ?? true;
308
+ const directOnly = options.directOnly ?? false;
309
+ return dependencies.filter((dep) => {
310
+ // directOnly takes precedence
311
+ if (directOnly && !dep.isDirect) {
312
+ return false;
313
+ }
314
+ // If not including transitive and this is transitive
315
+ if (!includeTransitive && !dep.isDirect) {
316
+ return false;
317
+ }
318
+ // If not including dev deps and this is a dev dep
319
+ if (!includeDevDeps && dep.type === 'devDependencies') {
320
+ return false;
321
+ }
322
+ return true;
323
+ });
324
+ }
325
+ /**
326
+ * Get unique packages (deduplicate by name)
327
+ */
328
+ export function getUniquePackages(dependencies) {
329
+ const seen = new Map();
330
+ for (const dep of dependencies) {
331
+ const existing = seen.get(dep.name);
332
+ if (!existing || dep.isDirect) {
333
+ seen.set(dep.name, dep);
334
+ }
335
+ }
336
+ return Array.from(seen.values());
337
+ }
338
+ //# sourceMappingURL=dependency-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-parser.js","sourceRoot":"","sources":["../../src/cve/dependency-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @fileoverview CVE module exports
3
+ * @module @nahisaho/musubix-security/cve
4
+ * @trace REQ-CVE-001
5
+ */
6
+ export { NVDClient, NVDAPIError, } from './nvd-client.js';
7
+ export type { NVDClientOptions, CVESearchResult, } from './nvd-client.js';
8
+ export { RateLimiter, RateLimiterPool, withRateLimit, } from './rate-limiter.js';
9
+ export type { RateLimiterOptions, RateLimitStatus, } from './rate-limiter.js';
10
+ export { CPEMatcher, createCPESearchQuery, extractPackageFromCPE, } from './cpe-matcher.js';
11
+ export type { CPEComponents, VersionRange, CPEMatch, VulnerabilityMatch, } from './cpe-matcher.js';
12
+ export { DependencyParser, resolveVersionSpecifier, filterDependenciesForScanning, getUniquePackages, } from './dependency-parser.js';
13
+ export type { DependencyType, ParsedDependency, PackageJson, PackageLockJson, PackageLockEntry, LegacyLockEntry, DependencyParserOptions, ParseResult, } from './dependency-parser.js';
14
+ export { VulnerabilityScanner, scanProjectForVulnerabilities, } from './vulnerability-scanner.js';
15
+ export type { VulnerabilityScannerOptions, ScanProgress, DetectedVulnerability, ScanResult, } from './vulnerability-scanner.js';
16
+ export { CVECache, createMemoryCache, getDefaultCache, closeDefaultCache, } from './cve-cache.js';
17
+ export type { CVECacheOptions, CacheEntry, CacheStats, } from './cve-cache.js';
18
+ export { ReportGenerator, generateReport, generateReportToFile, getFormatFromExtension, } from './report-generator.js';
19
+ export type { ReportFormat, ReportOptions, SARIFReport, } from './report-generator.js';
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cve/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,SAAS,EACT,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,gBAAgB,EAChB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,kBAAkB,EAClB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,UAAU,EACV,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EACV,2BAA2B,EAC3B,YAAY,EACZ,qBAAqB,EACrB,UAAU,GACX,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,eAAe,EACf,UAAU,EACV,UAAU,GACX,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @fileoverview CVE module exports
3
+ * @module @nahisaho/musubix-security/cve
4
+ * @trace REQ-CVE-001
5
+ */
6
+ export { NVDClient, NVDAPIError, } from './nvd-client.js';
7
+ export { RateLimiter, RateLimiterPool, withRateLimit, } from './rate-limiter.js';
8
+ export { CPEMatcher, createCPESearchQuery, extractPackageFromCPE, } from './cpe-matcher.js';
9
+ export { DependencyParser, resolveVersionSpecifier, filterDependenciesForScanning, getUniquePackages, } from './dependency-parser.js';
10
+ export { VulnerabilityScanner, scanProjectForVulnerabilities, } from './vulnerability-scanner.js';
11
+ export { CVECache, createMemoryCache, getDefaultCache, closeDefaultCache, } from './cve-cache.js';
12
+ export { ReportGenerator, generateReport, generateReportToFile, getFormatFromExtension, } from './report-generator.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cve/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,SAAS,EACT,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EACL,WAAW,EACX,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EACL,UAAU,EACV,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAahC,OAAO,EACL,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,4BAA4B,CAAC;AASpC,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAQxB,OAAO,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * @fileoverview NVD (National Vulnerability Database) API 2.0 Client
3
+ * @module @nahisaho/musubix-security/cve/nvd-client
4
+ * @trace REQ-CVE-001, DES-CVE-001
5
+ */
6
+ import type { CVE, CVESearchQuery } from '../types/cve.js';
7
+ /**
8
+ * NVD API client options
9
+ */
10
+ export interface NVDClientOptions {
11
+ /** NVD API key (optional, increases rate limit from 5 to 50 req/30s) */
12
+ apiKey?: string;
13
+ /** Base URL for NVD API */
14
+ baseUrl?: string;
15
+ /** Request timeout in milliseconds (default: 30000) */
16
+ timeout?: number;
17
+ /** Maximum retry attempts (default: 3) */
18
+ maxRetries?: number;
19
+ /** Initial retry delay in milliseconds (default: 1000) */
20
+ retryDelay?: number;
21
+ }
22
+ /**
23
+ * CVE search result with pagination
24
+ */
25
+ export interface CVESearchResult {
26
+ /** Total number of results */
27
+ totalResults: number;
28
+ /** Results per page */
29
+ resultsPerPage: number;
30
+ /** Start index */
31
+ startIndex: number;
32
+ /** CVE entries */
33
+ cves: CVE[];
34
+ /** Response timestamp */
35
+ timestamp: Date;
36
+ }
37
+ /**
38
+ * NVD API error
39
+ */
40
+ export declare class NVDAPIError extends Error {
41
+ readonly statusCode?: number | undefined;
42
+ readonly retryable: boolean;
43
+ constructor(message: string, statusCode?: number | undefined, retryable?: boolean);
44
+ }
45
+ /**
46
+ * NVD API 2.0 Client
47
+ * @see https://nvd.nist.gov/developers/vulnerabilities
48
+ * @trace REQ-CVE-001, DES-CVE-001
49
+ */
50
+ export declare class NVDClient {
51
+ private readonly baseUrl;
52
+ private readonly apiKey?;
53
+ private readonly timeout;
54
+ private readonly maxRetries;
55
+ private readonly retryDelay;
56
+ constructor(options?: NVDClientOptions);
57
+ /**
58
+ * Check if API key is configured
59
+ */
60
+ hasApiKey(): boolean;
61
+ /**
62
+ * Get a single CVE by ID
63
+ * @param cveId CVE identifier (e.g., "CVE-2021-44228")
64
+ */
65
+ getCVE(cveId: string): Promise<CVE | null>;
66
+ /**
67
+ * Search CVEs by keyword
68
+ * @param keyword Search keyword
69
+ * @param options Additional search options
70
+ */
71
+ searchByKeyword(keyword: string, options?: CVESearchQuery): Promise<CVESearchResult>;
72
+ /**
73
+ * Search CVEs by CPE (Common Platform Enumeration)
74
+ * @param cpe CPE 2.3 URI
75
+ * @param options Additional search options
76
+ */
77
+ searchByCPE(cpe: string, options?: CVESearchQuery): Promise<CVESearchResult>;
78
+ /**
79
+ * Search CVEs by CWE ID
80
+ * @param cweId CWE identifier (e.g., "CWE-79")
81
+ * @param options Additional search options
82
+ */
83
+ searchByCWE(cweId: string, options?: CVESearchQuery): Promise<CVESearchResult>;
84
+ /**
85
+ * Search CVEs by date range
86
+ * @param startDate Start date
87
+ * @param endDate End date
88
+ * @param options Additional search options
89
+ */
90
+ searchByDateRange(startDate: Date, endDate: Date, options?: CVESearchQuery): Promise<CVESearchResult>;
91
+ /**
92
+ * Search CVEs by CVSS score range
93
+ * @param minScore Minimum CVSS score
94
+ * @param maxScore Maximum CVSS score
95
+ * @param options Additional search options
96
+ */
97
+ searchByCVSSRange(minScore: number, maxScore: number, options?: CVESearchQuery): Promise<CVESearchResult>;
98
+ /**
99
+ * Get recently modified CVEs
100
+ * @param daysBack Number of days to look back (default: 7)
101
+ * @param options Additional search options
102
+ */
103
+ getRecentlyModified(daysBack?: number, options?: CVESearchQuery): Promise<CVESearchResult>;
104
+ /**
105
+ * Apply search options to URL
106
+ */
107
+ private applySearchOptions;
108
+ /**
109
+ * Execute search and return results
110
+ */
111
+ private executeSearch;
112
+ /**
113
+ * Make HTTP request with retry logic
114
+ */
115
+ private makeRequest;
116
+ /**
117
+ * Transform NVD API response to CVE type
118
+ */
119
+ private transformVulnerability;
120
+ /**
121
+ * Normalize CVE ID format
122
+ */
123
+ private normalizeCVEId;
124
+ /**
125
+ * Format date for NVD API
126
+ */
127
+ private formatDate;
128
+ /**
129
+ * Get CVSS severity string from score
130
+ */
131
+ private getSeverityFromScore;
132
+ /**
133
+ * Sleep for specified milliseconds
134
+ */
135
+ private sleep;
136
+ }
137
+ //# sourceMappingURL=nvd-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nvd-client.d.ts","sourceRoot":"","sources":["../../src/cve/nvd-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,GAAG,EACH,cAAc,EAQf,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,yBAAyB;IACzB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;aAGlB,UAAU,CAAC,EAAE,MAAM;aACnB,SAAS,EAAE,OAAO;gBAFlC,OAAO,EAAE,MAAM,EACC,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,SAAS,GAAE,OAAe;CAK7C;AAED;;;;GAIG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,GAAE,gBAAqB;IAQ1C;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;;OAGG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IAchD;;;;OAIG;IACG,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,eAAe,CAAC;IAQ3B;;;;OAIG;IACG,WAAW,CACf,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,eAAe,CAAC;IAQ3B;;;;OAIG;IACG,WAAW,CACf,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,eAAe,CAAC;IAU3B;;;;;OAKG;IACG,iBAAiB,CACrB,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,IAAI,EACb,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,eAAe,CAAC;IAS3B;;;;;OAKG;IACG,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,eAAe,CAAC;IAgB3B;;;;OAIG;IACG,mBAAmB,CACvB,QAAQ,GAAE,MAAU,EACpB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,eAAe,CAAC;IAa3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgC1B;;OAEG;YACW,aAAa;IAY3B;;OAEG;YACW,WAAW;IAuDzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA8E9B;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}