thuban 0.4.3 → 0.4.5

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 (737) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +355 -122
  3. package/dist/LICENSE +21 -21
  4. package/dist/README.md +355 -122
  5. package/dist/cli.js +1 -0
  6. package/dist/package.json +62 -63
  7. package/dist/packages/crucible/.golden/golden-master.json +413 -413
  8. package/dist/packages/crucible/rule-loader.js +1 -1
  9. package/dist/packages/crucible/rules/code-scanner-core.json +233 -147
  10. package/dist/packages/crucible/rules/command-injection.json +411 -411
  11. package/dist/packages/crucible/rules/crypto-misuse.json +35 -35
  12. package/dist/packages/crucible/rules/deserialization.json +152 -152
  13. package/dist/packages/crucible/rules/env-injection.json +46 -46
  14. package/dist/packages/crucible/rules/eval-abuse.json +104 -104
  15. package/dist/packages/crucible/rules/file-upload.json +46 -46
  16. package/dist/packages/crucible/rules/hallucination.json +22 -22
  17. package/dist/packages/crucible/rules/hardcoded-secret.json +397 -397
  18. package/dist/packages/crucible/rules/hardcoded-url.json +13 -13
  19. package/dist/packages/crucible/rules/insecure-crypto.json +302 -302
  20. package/dist/packages/crucible/rules/integer-overflow.json +35 -35
  21. package/dist/packages/crucible/rules/log-injection.json +33 -33
  22. package/dist/packages/crucible/rules/mass-assignment.json +112 -112
  23. package/dist/packages/crucible/rules/open-redirect.json +196 -196
  24. package/dist/packages/crucible/rules/path-traversal.json +422 -422
  25. package/dist/packages/crucible/rules/prototype-pollution.json +22 -22
  26. package/dist/packages/crucible/rules/sql-injection.json +619 -619
  27. package/dist/packages/crucible/rules/ssrf.json +557 -557
  28. package/dist/packages/crucible/rules/timing-attack.json +55 -55
  29. package/dist/packages/crucible/rules/unsafe-block.json +24 -24
  30. package/dist/packages/crucible/rules/xss.json +663 -663
  31. package/dist/packages/crucible/rules/xxe.json +66 -66
  32. package/dist/packages/crucible/rules/yaml-deserialization.json +22 -22
  33. package/dist/packages/crucible/rules/yaml-injection.json +22 -22
  34. package/dist/packages/crucible/seeds/csharp/seed-001.cs +28 -28
  35. package/dist/packages/crucible/seeds/csharp/seed-002.cs +24 -24
  36. package/dist/packages/crucible/seeds/csharp/seed-003.cs +30 -30
  37. package/dist/packages/crucible/seeds/csharp/seed-004.cs +31 -31
  38. package/dist/packages/crucible/seeds/csharp/seed-005.cs +28 -28
  39. package/dist/packages/crucible/seeds/csharp/seed-006.cs +25 -25
  40. package/dist/packages/crucible/seeds/csharp/seed-007.cs +34 -34
  41. package/dist/packages/crucible/seeds/csharp/seed-008.cs +23 -23
  42. package/dist/packages/crucible/seeds/csharp/seed-009.cs +27 -27
  43. package/dist/packages/crucible/seeds/csharp/seed-010.cs +29 -29
  44. package/dist/packages/crucible/seeds/csharp/seed-011.cs +32 -32
  45. package/dist/packages/crucible/seeds/csharp/seed-012.cs +27 -27
  46. package/dist/packages/crucible/seeds/csharp/seed-013.cs +27 -27
  47. package/dist/packages/crucible/seeds/csharp/seed-014.cs +26 -26
  48. package/dist/packages/crucible/seeds/csharp/seed-015.cs +33 -33
  49. package/dist/packages/crucible/seeds/csharp/seed-016.cs +25 -25
  50. package/dist/packages/crucible/seeds/csharp/seed-017.cs +22 -22
  51. package/dist/packages/crucible/seeds/csharp/seed-018.cs +26 -26
  52. package/dist/packages/crucible/seeds/csharp/seed-019.cs +25 -25
  53. package/dist/packages/crucible/seeds/csharp/seed-020.cs +22 -22
  54. package/dist/packages/crucible/seeds/csharp/seed-021.cs +28 -28
  55. package/dist/packages/crucible/seeds/csharp/seed-022.cs +25 -25
  56. package/dist/packages/crucible/seeds/csharp/seed-023.cs +33 -33
  57. package/dist/packages/crucible/seeds/csharp/seed-024.cs +31 -31
  58. package/dist/packages/crucible/seeds/csharp/seed-025.cs +31 -31
  59. package/dist/packages/crucible/seeds/csharp/seed-026.cs +25 -25
  60. package/dist/packages/crucible/seeds/csharp/seed-027.cs +29 -29
  61. package/dist/packages/crucible/seeds/csharp/seed-028.cs +25 -25
  62. package/dist/packages/crucible/seeds/csharp/seed-029.cs +27 -27
  63. package/dist/packages/crucible/seeds/csharp/seed-030.cs +27 -27
  64. package/dist/packages/crucible/seeds/csharp/seed-031.cs +28 -28
  65. package/dist/packages/crucible/seeds/csharp/seed-032.cs +30 -30
  66. package/dist/packages/crucible/seeds/csharp/seed-033.cs +27 -27
  67. package/dist/packages/crucible/seeds/csharp/seed-034.cs +25 -25
  68. package/dist/packages/crucible/seeds/csharp/seed-035.cs +32 -32
  69. package/dist/packages/crucible/seeds/csharp/seed-036.cs +28 -28
  70. package/dist/packages/crucible/seeds/csharp/seed-037.cs +29 -29
  71. package/dist/packages/crucible/seeds/csharp/seed-038.cs +28 -28
  72. package/dist/packages/crucible/seeds/csharp/seed-039.cs +29 -29
  73. package/dist/packages/crucible/seeds/csharp/seed-040.cs +28 -28
  74. package/dist/packages/crucible/seeds/csharp/seed-041.cs +33 -33
  75. package/dist/packages/crucible/seeds/csharp/seed-042.cs +27 -27
  76. package/dist/packages/crucible/seeds/csharp/seed-043.cs +27 -27
  77. package/dist/packages/crucible/seeds/csharp/seed-044.cs +25 -25
  78. package/dist/packages/crucible/seeds/csharp/seed-045.cs +30 -30
  79. package/dist/packages/crucible/seeds/csharp/seed-046.cs +29 -29
  80. package/dist/packages/crucible/seeds/csharp/seed-047.cs +26 -26
  81. package/dist/packages/crucible/seeds/csharp/seed-048.cs +31 -31
  82. package/dist/packages/crucible/seeds/csharp/seed-049.cs +27 -27
  83. package/dist/packages/crucible/seeds/csharp/seed-050.cs +30 -30
  84. package/dist/packages/crucible/seeds/csharp/seed-051.cs +34 -34
  85. package/dist/packages/crucible/seeds/csharp/seed-052.cs +36 -36
  86. package/dist/packages/crucible/seeds/go/seed-001.go +29 -29
  87. package/dist/packages/crucible/seeds/go/seed-002.go +27 -27
  88. package/dist/packages/crucible/seeds/go/seed-003.go +31 -31
  89. package/dist/packages/crucible/seeds/go/seed-004.go +27 -27
  90. package/dist/packages/crucible/seeds/go/seed-005.go +27 -27
  91. package/dist/packages/crucible/seeds/go/seed-006.go +29 -29
  92. package/dist/packages/crucible/seeds/go/seed-007.go +24 -24
  93. package/dist/packages/crucible/seeds/go/seed-008.go +25 -25
  94. package/dist/packages/crucible/seeds/go/seed-009.go +30 -30
  95. package/dist/packages/crucible/seeds/go/seed-010.go +35 -35
  96. package/dist/packages/crucible/seeds/go/seed-011.go +24 -24
  97. package/dist/packages/crucible/seeds/go/seed-012.go +24 -24
  98. package/dist/packages/crucible/seeds/go/seed-013.go +31 -31
  99. package/dist/packages/crucible/seeds/go/seed-014.go +35 -35
  100. package/dist/packages/crucible/seeds/go/seed-015.go +25 -25
  101. package/dist/packages/crucible/seeds/go/seed-016.go +19 -19
  102. package/dist/packages/crucible/seeds/go/seed-017.go +23 -23
  103. package/dist/packages/crucible/seeds/go/seed-018.go +23 -23
  104. package/dist/packages/crucible/seeds/go/seed-019.go +22 -22
  105. package/dist/packages/crucible/seeds/go/seed-020.go +31 -31
  106. package/dist/packages/crucible/seeds/go/seed-021.go +22 -22
  107. package/dist/packages/crucible/seeds/go/seed-022.go +29 -29
  108. package/dist/packages/crucible/seeds/go/seed-023.go +26 -26
  109. package/dist/packages/crucible/seeds/go/seed-024.go +27 -27
  110. package/dist/packages/crucible/seeds/go/seed-025.go +23 -23
  111. package/dist/packages/crucible/seeds/go/seed-026.go +29 -29
  112. package/dist/packages/crucible/seeds/go/seed-027.go +26 -26
  113. package/dist/packages/crucible/seeds/go/seed-028.go +23 -23
  114. package/dist/packages/crucible/seeds/go/seed-029.go +28 -28
  115. package/dist/packages/crucible/seeds/go/seed-030.go +27 -27
  116. package/dist/packages/crucible/seeds/go/seed-031.go +28 -28
  117. package/dist/packages/crucible/seeds/go/seed-032.go +27 -27
  118. package/dist/packages/crucible/seeds/go/seed-033.go +29 -29
  119. package/dist/packages/crucible/seeds/go/seed-034.go +22 -22
  120. package/dist/packages/crucible/seeds/go/seed-035.go +32 -32
  121. package/dist/packages/crucible/seeds/go/seed-036.go +27 -27
  122. package/dist/packages/crucible/seeds/go/seed-037.go +27 -27
  123. package/dist/packages/crucible/seeds/go/seed-038.go +27 -27
  124. package/dist/packages/crucible/seeds/go/seed-039.go +26 -26
  125. package/dist/packages/crucible/seeds/go/seed-040.go +37 -37
  126. package/dist/packages/crucible/seeds/go/seed-041.go +23 -23
  127. package/dist/packages/crucible/seeds/go/seed-042.go +32 -32
  128. package/dist/packages/crucible/seeds/go/seed-043.go +35 -35
  129. package/dist/packages/crucible/seeds/go/seed-044.go +25 -25
  130. package/dist/packages/crucible/seeds/go/seed-045.go +26 -26
  131. package/dist/packages/crucible/seeds/go/seed-046.go +34 -34
  132. package/dist/packages/crucible/seeds/go/seed-047.go +26 -26
  133. package/dist/packages/crucible/seeds/go/seed-048.go +29 -29
  134. package/dist/packages/crucible/seeds/go/seed-049.go +24 -24
  135. package/dist/packages/crucible/seeds/go/seed-050.go +27 -27
  136. package/dist/packages/crucible/seeds/go/seed-051.go +38 -38
  137. package/dist/packages/crucible/seeds/go/seed-052.go +27 -27
  138. package/dist/packages/crucible/seeds/java/seed-001.java +23 -23
  139. package/dist/packages/crucible/seeds/java/seed-002.java +22 -22
  140. package/dist/packages/crucible/seeds/java/seed-003.java +28 -28
  141. package/dist/packages/crucible/seeds/java/seed-004.java +26 -26
  142. package/dist/packages/crucible/seeds/java/seed-005.java +33 -33
  143. package/dist/packages/crucible/seeds/java/seed-006.java +22 -22
  144. package/dist/packages/crucible/seeds/java/seed-007.java +21 -21
  145. package/dist/packages/crucible/seeds/java/seed-008.java +29 -29
  146. package/dist/packages/crucible/seeds/java/seed-009.java +24 -24
  147. package/dist/packages/crucible/seeds/java/seed-010.java +30 -30
  148. package/dist/packages/crucible/seeds/java/seed-011.java +25 -25
  149. package/dist/packages/crucible/seeds/java/seed-012.java +20 -20
  150. package/dist/packages/crucible/seeds/java/seed-013.java +26 -26
  151. package/dist/packages/crucible/seeds/java/seed-014.java +23 -23
  152. package/dist/packages/crucible/seeds/java/seed-015.java +25 -25
  153. package/dist/packages/crucible/seeds/java/seed-016.java +22 -22
  154. package/dist/packages/crucible/seeds/java/seed-017.java +24 -24
  155. package/dist/packages/crucible/seeds/java/seed-018.java +24 -24
  156. package/dist/packages/crucible/seeds/java/seed-019.java +38 -38
  157. package/dist/packages/crucible/seeds/java/seed-020.java +24 -24
  158. package/dist/packages/crucible/seeds/java/seed-021.java +22 -22
  159. package/dist/packages/crucible/seeds/java/seed-022.java +22 -22
  160. package/dist/packages/crucible/seeds/java/seed-023.java +22 -22
  161. package/dist/packages/crucible/seeds/java/seed-024.java +25 -25
  162. package/dist/packages/crucible/seeds/java/seed-025.java +27 -27
  163. package/dist/packages/crucible/seeds/java/seed-026.java +25 -25
  164. package/dist/packages/crucible/seeds/java/seed-027.java +22 -22
  165. package/dist/packages/crucible/seeds/java/seed-028.java +21 -21
  166. package/dist/packages/crucible/seeds/java/seed-029.java +28 -28
  167. package/dist/packages/crucible/seeds/java/seed-030.java +27 -27
  168. package/dist/packages/crucible/seeds/java/seed-031.java +23 -23
  169. package/dist/packages/crucible/seeds/java/seed-032.java +22 -22
  170. package/dist/packages/crucible/seeds/java/seed-033.java +24 -24
  171. package/dist/packages/crucible/seeds/java/seed-034.java +24 -24
  172. package/dist/packages/crucible/seeds/java/seed-035.java +29 -29
  173. package/dist/packages/crucible/seeds/java/seed-036.java +25 -25
  174. package/dist/packages/crucible/seeds/java/seed-037.java +30 -30
  175. package/dist/packages/crucible/seeds/java/seed-038.java +29 -29
  176. package/dist/packages/crucible/seeds/java/seed-039.java +26 -26
  177. package/dist/packages/crucible/seeds/java/seed-040.java +31 -31
  178. package/dist/packages/crucible/seeds/java/seed-041.java +20 -20
  179. package/dist/packages/crucible/seeds/java/seed-042.java +26 -26
  180. package/dist/packages/crucible/seeds/java/seed-043.java +31 -31
  181. package/dist/packages/crucible/seeds/java/seed-044.java +22 -22
  182. package/dist/packages/crucible/seeds/java/seed-045.java +25 -25
  183. package/dist/packages/crucible/seeds/java/seed-046.java +22 -22
  184. package/dist/packages/crucible/seeds/java/seed-047.java +26 -26
  185. package/dist/packages/crucible/seeds/java/seed-048.java +24 -24
  186. package/dist/packages/crucible/seeds/java/seed-049.java +28 -28
  187. package/dist/packages/crucible/seeds/java/seed-050.java +29 -29
  188. package/dist/packages/crucible/seeds/java/seed-051.java +25 -25
  189. package/dist/packages/crucible/seeds/java/seed-052.java +32 -32
  190. package/dist/packages/crucible/seeds/js/seed-001.js +27 -27
  191. package/dist/packages/crucible/seeds/js/seed-002.js +28 -28
  192. package/dist/packages/crucible/seeds/js/seed-003.js +30 -30
  193. package/dist/packages/crucible/seeds/js/seed-004.js +28 -28
  194. package/dist/packages/crucible/seeds/js/seed-005.js +31 -31
  195. package/dist/packages/crucible/seeds/js/seed-006.js +28 -28
  196. package/dist/packages/crucible/seeds/js/seed-007.js +26 -26
  197. package/dist/packages/crucible/seeds/js/seed-008.js +30 -30
  198. package/dist/packages/crucible/seeds/js/seed-009.js +30 -30
  199. package/dist/packages/crucible/seeds/js/seed-010.js +29 -29
  200. package/dist/packages/crucible/seeds/js/seed-011.js +34 -34
  201. package/dist/packages/crucible/seeds/js/seed-012.js +32 -32
  202. package/dist/packages/crucible/seeds/js/seed-013.js +29 -29
  203. package/dist/packages/crucible/seeds/js/seed-014.js +29 -29
  204. package/dist/packages/crucible/seeds/js/seed-015.js +31 -31
  205. package/dist/packages/crucible/seeds/js/seed-016.js +31 -31
  206. package/dist/packages/crucible/seeds/js/seed-017.js +30 -30
  207. package/dist/packages/crucible/seeds/js/seed-018.js +29 -29
  208. package/dist/packages/crucible/seeds/js/seed-019.js +32 -32
  209. package/dist/packages/crucible/seeds/js/seed-020.js +29 -29
  210. package/dist/packages/crucible/seeds/js/seed-021.js +31 -31
  211. package/dist/packages/crucible/seeds/js/seed-022.js +31 -31
  212. package/dist/packages/crucible/seeds/js/seed-023.js +29 -29
  213. package/dist/packages/crucible/seeds/js/seed-024.js +29 -29
  214. package/dist/packages/crucible/seeds/js/seed-025.js +34 -34
  215. package/dist/packages/crucible/seeds/js/seed-026.js +31 -31
  216. package/dist/packages/crucible/seeds/js/seed-027.js +31 -31
  217. package/dist/packages/crucible/seeds/js/seed-028.js +33 -33
  218. package/dist/packages/crucible/seeds/js/seed-029.js +33 -33
  219. package/dist/packages/crucible/seeds/js/seed-030.js +30 -30
  220. package/dist/packages/crucible/seeds/js/seed-031.js +31 -31
  221. package/dist/packages/crucible/seeds/js/seed-032.js +34 -34
  222. package/dist/packages/crucible/seeds/js/seed-033.js +33 -33
  223. package/dist/packages/crucible/seeds/js/seed-034.js +33 -33
  224. package/dist/packages/crucible/seeds/js/seed-035.js +30 -30
  225. package/dist/packages/crucible/seeds/js/seed-036.js +30 -30
  226. package/dist/packages/crucible/seeds/js/seed-037.js +29 -29
  227. package/dist/packages/crucible/seeds/js/seed-038.js +31 -31
  228. package/dist/packages/crucible/seeds/js/seed-039.js +34 -34
  229. package/dist/packages/crucible/seeds/js/seed-040.js +35 -35
  230. package/dist/packages/crucible/seeds/js/seed-041.js +32 -32
  231. package/dist/packages/crucible/seeds/js/seed-042.js +32 -32
  232. package/dist/packages/crucible/seeds/js/seed-043.js +27 -27
  233. package/dist/packages/crucible/seeds/js/seed-044.js +29 -29
  234. package/dist/packages/crucible/seeds/js/seed-045.js +33 -33
  235. package/dist/packages/crucible/seeds/js/seed-046.js +33 -33
  236. package/dist/packages/crucible/seeds/js/seed-047.js +29 -29
  237. package/dist/packages/crucible/seeds/js/seed-048.js +29 -29
  238. package/dist/packages/crucible/seeds/js/seed-049.js +34 -34
  239. package/dist/packages/crucible/seeds/js/seed-050.js +34 -34
  240. package/dist/packages/crucible/seeds/js/seed-051.js +30 -30
  241. package/dist/packages/crucible/seeds/js/seed-052.js +30 -30
  242. package/dist/packages/crucible/seeds/js/seed-053.js +26 -26
  243. package/dist/packages/crucible/seeds/js/seed-054.js +35 -35
  244. package/dist/packages/crucible/seeds/js/seed-055.js +33 -33
  245. package/dist/packages/crucible/seeds/kotlin/seed-001.kt +24 -24
  246. package/dist/packages/crucible/seeds/kotlin/seed-002.kt +27 -27
  247. package/dist/packages/crucible/seeds/kotlin/seed-003.kt +29 -29
  248. package/dist/packages/crucible/seeds/kotlin/seed-004.kt +24 -24
  249. package/dist/packages/crucible/seeds/kotlin/seed-005.kt +29 -29
  250. package/dist/packages/crucible/seeds/kotlin/seed-006.kt +21 -21
  251. package/dist/packages/crucible/seeds/kotlin/seed-007.kt +23 -23
  252. package/dist/packages/crucible/seeds/kotlin/seed-008.kt +25 -25
  253. package/dist/packages/crucible/seeds/kotlin/seed-009.kt +21 -21
  254. package/dist/packages/crucible/seeds/kotlin/seed-010.kt +28 -28
  255. package/dist/packages/crucible/seeds/kotlin/seed-011.kt +22 -22
  256. package/dist/packages/crucible/seeds/kotlin/seed-012.kt +25 -25
  257. package/dist/packages/crucible/seeds/kotlin/seed-013.kt +30 -30
  258. package/dist/packages/crucible/seeds/kotlin/seed-014.kt +27 -27
  259. package/dist/packages/crucible/seeds/kotlin/seed-015.kt +24 -24
  260. package/dist/packages/crucible/seeds/kotlin/seed-016.kt +28 -28
  261. package/dist/packages/crucible/seeds/kotlin/seed-017.kt +33 -33
  262. package/dist/packages/crucible/seeds/kotlin/seed-018.kt +31 -31
  263. package/dist/packages/crucible/seeds/kotlin/seed-019.kt +28 -28
  264. package/dist/packages/crucible/seeds/kotlin/seed-020.kt +31 -31
  265. package/dist/packages/crucible/seeds/kotlin/seed-021.kt +34 -34
  266. package/dist/packages/crucible/seeds/kotlin/seed-022.kt +29 -29
  267. package/dist/packages/crucible/seeds/kotlin/seed-023.kt +20 -20
  268. package/dist/packages/crucible/seeds/kotlin/seed-024.kt +23 -23
  269. package/dist/packages/crucible/seeds/kotlin/seed-025.kt +23 -23
  270. package/dist/packages/crucible/seeds/kotlin/seed-026.kt +26 -26
  271. package/dist/packages/crucible/seeds/kotlin/seed-027.kt +29 -29
  272. package/dist/packages/crucible/seeds/kotlin/seed-028.kt +24 -24
  273. package/dist/packages/crucible/seeds/kotlin/seed-029.kt +27 -27
  274. package/dist/packages/crucible/seeds/kotlin/seed-030.kt +26 -26
  275. package/dist/packages/crucible/seeds/kotlin/seed-031.kt +28 -28
  276. package/dist/packages/crucible/seeds/kotlin/seed-032.kt +29 -29
  277. package/dist/packages/crucible/seeds/kotlin/seed-033.kt +30 -30
  278. package/dist/packages/crucible/seeds/kotlin/seed-034.kt +26 -26
  279. package/dist/packages/crucible/seeds/kotlin/seed-035.kt +33 -33
  280. package/dist/packages/crucible/seeds/kotlin/seed-036.kt +25 -25
  281. package/dist/packages/crucible/seeds/kotlin/seed-037.kt +26 -26
  282. package/dist/packages/crucible/seeds/kotlin/seed-038.kt +25 -25
  283. package/dist/packages/crucible/seeds/kotlin/seed-039.kt +29 -29
  284. package/dist/packages/crucible/seeds/kotlin/seed-040.kt +28 -28
  285. package/dist/packages/crucible/seeds/kotlin/seed-041.kt +31 -31
  286. package/dist/packages/crucible/seeds/kotlin/seed-042.kt +27 -27
  287. package/dist/packages/crucible/seeds/kotlin/seed-043.kt +26 -26
  288. package/dist/packages/crucible/seeds/kotlin/seed-044.kt +27 -27
  289. package/dist/packages/crucible/seeds/kotlin/seed-045.kt +27 -27
  290. package/dist/packages/crucible/seeds/kotlin/seed-046.kt +33 -33
  291. package/dist/packages/crucible/seeds/kotlin/seed-047.kt +32 -32
  292. package/dist/packages/crucible/seeds/kotlin/seed-048.kt +20 -20
  293. package/dist/packages/crucible/seeds/kotlin/seed-049.kt +23 -23
  294. package/dist/packages/crucible/seeds/kotlin/seed-050.kt +19 -19
  295. package/dist/packages/crucible/seeds/php/seed-001.php +23 -23
  296. package/dist/packages/crucible/seeds/php/seed-002.php +18 -18
  297. package/dist/packages/crucible/seeds/php/seed-003.php +25 -25
  298. package/dist/packages/crucible/seeds/php/seed-004.php +21 -21
  299. package/dist/packages/crucible/seeds/php/seed-005.php +21 -21
  300. package/dist/packages/crucible/seeds/php/seed-006.php +21 -21
  301. package/dist/packages/crucible/seeds/php/seed-007.php +18 -18
  302. package/dist/packages/crucible/seeds/php/seed-008.php +19 -19
  303. package/dist/packages/crucible/seeds/php/seed-009.php +24 -24
  304. package/dist/packages/crucible/seeds/php/seed-010.php +24 -24
  305. package/dist/packages/crucible/seeds/php/seed-011.php +18 -18
  306. package/dist/packages/crucible/seeds/php/seed-012.php +24 -24
  307. package/dist/packages/crucible/seeds/php/seed-013.php +23 -23
  308. package/dist/packages/crucible/seeds/php/seed-014.php +20 -20
  309. package/dist/packages/crucible/seeds/php/seed-015.php +18 -18
  310. package/dist/packages/crucible/seeds/php/seed-016.php +18 -18
  311. package/dist/packages/crucible/seeds/php/seed-017.php +18 -18
  312. package/dist/packages/crucible/seeds/php/seed-018.php +17 -17
  313. package/dist/packages/crucible/seeds/php/seed-019.php +24 -24
  314. package/dist/packages/crucible/seeds/php/seed-020.php +19 -19
  315. package/dist/packages/crucible/seeds/php/seed-021.php +22 -22
  316. package/dist/packages/crucible/seeds/php/seed-022.php +15 -15
  317. package/dist/packages/crucible/seeds/php/seed-023.php +24 -24
  318. package/dist/packages/crucible/seeds/php/seed-024.php +22 -22
  319. package/dist/packages/crucible/seeds/php/seed-025.php +20 -20
  320. package/dist/packages/crucible/seeds/php/seed-026.php +22 -22
  321. package/dist/packages/crucible/seeds/php/seed-027.php +15 -15
  322. package/dist/packages/crucible/seeds/php/seed-028.php +15 -15
  323. package/dist/packages/crucible/seeds/php/seed-029.php +21 -21
  324. package/dist/packages/crucible/seeds/php/seed-030.php +21 -21
  325. package/dist/packages/crucible/seeds/php/seed-031.php +23 -23
  326. package/dist/packages/crucible/seeds/php/seed-032.php +18 -18
  327. package/dist/packages/crucible/seeds/php/seed-033.php +18 -18
  328. package/dist/packages/crucible/seeds/php/seed-034.php +24 -24
  329. package/dist/packages/crucible/seeds/php/seed-035.php +22 -22
  330. package/dist/packages/crucible/seeds/php/seed-036.php +17 -17
  331. package/dist/packages/crucible/seeds/php/seed-037.php +19 -19
  332. package/dist/packages/crucible/seeds/php/seed-038.php +20 -20
  333. package/dist/packages/crucible/seeds/php/seed-039.php +15 -15
  334. package/dist/packages/crucible/seeds/php/seed-040.php +21 -21
  335. package/dist/packages/crucible/seeds/php/seed-041.php +20 -20
  336. package/dist/packages/crucible/seeds/php/seed-042.php +21 -21
  337. package/dist/packages/crucible/seeds/php/seed-043.php +21 -21
  338. package/dist/packages/crucible/seeds/php/seed-044.php +25 -25
  339. package/dist/packages/crucible/seeds/php/seed-045.php +25 -25
  340. package/dist/packages/crucible/seeds/php/seed-046.php +20 -20
  341. package/dist/packages/crucible/seeds/php/seed-047.php +21 -21
  342. package/dist/packages/crucible/seeds/php/seed-048.php +19 -19
  343. package/dist/packages/crucible/seeds/php/seed-049.php +18 -18
  344. package/dist/packages/crucible/seeds/php/seed-050.php +20 -20
  345. package/dist/packages/crucible/seeds/python/seed-001.py +33 -33
  346. package/dist/packages/crucible/seeds/python/seed-002.py +39 -39
  347. package/dist/packages/crucible/seeds/python/seed-003.py +31 -31
  348. package/dist/packages/crucible/seeds/python/seed-004.py +33 -33
  349. package/dist/packages/crucible/seeds/python/seed-005.py +33 -33
  350. package/dist/packages/crucible/seeds/python/seed-006.py +34 -34
  351. package/dist/packages/crucible/seeds/python/seed-007.py +33 -33
  352. package/dist/packages/crucible/seeds/python/seed-008.py +38 -38
  353. package/dist/packages/crucible/seeds/python/seed-009.py +38 -38
  354. package/dist/packages/crucible/seeds/python/seed-010.py +42 -42
  355. package/dist/packages/crucible/seeds/python/seed-011.py +30 -30
  356. package/dist/packages/crucible/seeds/python/seed-012.py +35 -35
  357. package/dist/packages/crucible/seeds/python/seed-013.py +33 -33
  358. package/dist/packages/crucible/seeds/python/seed-014.py +40 -40
  359. package/dist/packages/crucible/seeds/python/seed-015.py +33 -33
  360. package/dist/packages/crucible/seeds/python/seed-016.py +34 -34
  361. package/dist/packages/crucible/seeds/python/seed-017.py +34 -34
  362. package/dist/packages/crucible/seeds/python/seed-018.py +30 -30
  363. package/dist/packages/crucible/seeds/python/seed-019.py +33 -33
  364. package/dist/packages/crucible/seeds/python/seed-020.py +37 -37
  365. package/dist/packages/crucible/seeds/python/seed-021 2.py +37 -37
  366. package/dist/packages/crucible/seeds/python/seed-021.py +37 -37
  367. package/dist/packages/crucible/seeds/python/seed-022 2.py +34 -34
  368. package/dist/packages/crucible/seeds/python/seed-022.py +34 -34
  369. package/dist/packages/crucible/seeds/python/seed-023 2.py +37 -37
  370. package/dist/packages/crucible/seeds/python/seed-023.py +37 -37
  371. package/dist/packages/crucible/seeds/python/seed-024 2.py +38 -38
  372. package/dist/packages/crucible/seeds/python/seed-024.py +38 -38
  373. package/dist/packages/crucible/seeds/python/seed-025 2.py +40 -40
  374. package/dist/packages/crucible/seeds/python/seed-025.py +40 -40
  375. package/dist/packages/crucible/seeds/python/seed-026 2.py +35 -35
  376. package/dist/packages/crucible/seeds/python/seed-026.py +35 -35
  377. package/dist/packages/crucible/seeds/python/seed-027 2.py +35 -35
  378. package/dist/packages/crucible/seeds/python/seed-027.py +35 -35
  379. package/dist/packages/crucible/seeds/python/seed-028 2.py +42 -42
  380. package/dist/packages/crucible/seeds/python/seed-028.py +42 -42
  381. package/dist/packages/crucible/seeds/python/seed-029.py +42 -42
  382. package/dist/packages/crucible/seeds/python/seed-030 2.py +37 -37
  383. package/dist/packages/crucible/seeds/python/seed-030.py +37 -37
  384. package/dist/packages/crucible/seeds/python/seed-031 2.py +34 -34
  385. package/dist/packages/crucible/seeds/python/seed-031.py +34 -34
  386. package/dist/packages/crucible/seeds/python/seed-032.py +33 -33
  387. package/dist/packages/crucible/seeds/python/seed-033.py +32 -32
  388. package/dist/packages/crucible/seeds/python/seed-034.py +38 -38
  389. package/dist/packages/crucible/seeds/python/seed-035.py +35 -35
  390. package/dist/packages/crucible/seeds/python/seed-036 2.py +33 -33
  391. package/dist/packages/crucible/seeds/python/seed-036.py +33 -33
  392. package/dist/packages/crucible/seeds/python/seed-037 2.py +41 -41
  393. package/dist/packages/crucible/seeds/python/seed-037.py +41 -41
  394. package/dist/packages/crucible/seeds/python/seed-038 2.py +33 -33
  395. package/dist/packages/crucible/seeds/python/seed-038.py +33 -33
  396. package/dist/packages/crucible/seeds/python/seed-039 2.py +39 -39
  397. package/dist/packages/crucible/seeds/python/seed-039.py +39 -39
  398. package/dist/packages/crucible/seeds/python/seed-040 2.py +39 -39
  399. package/dist/packages/crucible/seeds/python/seed-040.py +39 -39
  400. package/dist/packages/crucible/seeds/python/seed-041 2.py +37 -37
  401. package/dist/packages/crucible/seeds/python/seed-041.py +37 -37
  402. package/dist/packages/crucible/seeds/python/seed-042 2.py +38 -38
  403. package/dist/packages/crucible/seeds/python/seed-042.py +38 -38
  404. package/dist/packages/crucible/seeds/python/seed-043 2.py +32 -32
  405. package/dist/packages/crucible/seeds/python/seed-043.py +32 -32
  406. package/dist/packages/crucible/seeds/python/seed-044 2.py +38 -38
  407. package/dist/packages/crucible/seeds/python/seed-044.py +38 -38
  408. package/dist/packages/crucible/seeds/python/seed-045 2.py +36 -36
  409. package/dist/packages/crucible/seeds/python/seed-045.py +36 -36
  410. package/dist/packages/crucible/seeds/python/seed-046 2.py +33 -33
  411. package/dist/packages/crucible/seeds/python/seed-046.py +33 -33
  412. package/dist/packages/crucible/seeds/python/seed-047 2.py +44 -44
  413. package/dist/packages/crucible/seeds/python/seed-047.py +44 -44
  414. package/dist/packages/crucible/seeds/python/seed-048 2.py +35 -35
  415. package/dist/packages/crucible/seeds/python/seed-048.py +35 -35
  416. package/dist/packages/crucible/seeds/python/seed-049 2.py +39 -39
  417. package/dist/packages/crucible/seeds/python/seed-049.py +39 -39
  418. package/dist/packages/crucible/seeds/python/seed-050 2.py +39 -39
  419. package/dist/packages/crucible/seeds/python/seed-050.py +39 -39
  420. package/dist/packages/crucible/seeds/python/seed-051 2.py +38 -38
  421. package/dist/packages/crucible/seeds/python/seed-051.py +38 -38
  422. package/dist/packages/crucible/seeds/python/seed-052 2.py +41 -41
  423. package/dist/packages/crucible/seeds/python/seed-052.py +41 -41
  424. package/dist/packages/crucible/seeds/ruby/seed-001 2.rb +15 -15
  425. package/dist/packages/crucible/seeds/ruby/seed-001.rb +15 -15
  426. package/dist/packages/crucible/seeds/ruby/seed-002 2.rb +22 -22
  427. package/dist/packages/crucible/seeds/ruby/seed-002.rb +22 -22
  428. package/dist/packages/crucible/seeds/ruby/seed-003 2.rb +25 -25
  429. package/dist/packages/crucible/seeds/ruby/seed-003.rb +25 -25
  430. package/dist/packages/crucible/seeds/ruby/seed-004 2.rb +17 -17
  431. package/dist/packages/crucible/seeds/ruby/seed-004.rb +17 -17
  432. package/dist/packages/crucible/seeds/ruby/seed-005 2.rb +21 -21
  433. package/dist/packages/crucible/seeds/ruby/seed-005.rb +21 -21
  434. package/dist/packages/crucible/seeds/ruby/seed-006 2.rb +17 -17
  435. package/dist/packages/crucible/seeds/ruby/seed-006.rb +17 -17
  436. package/dist/packages/crucible/seeds/ruby/seed-007 2.rb +16 -16
  437. package/dist/packages/crucible/seeds/ruby/seed-007.rb +16 -16
  438. package/dist/packages/crucible/seeds/ruby/seed-008 2.rb +18 -18
  439. package/dist/packages/crucible/seeds/ruby/seed-008.rb +18 -18
  440. package/dist/packages/crucible/seeds/ruby/seed-009 2.rb +20 -20
  441. package/dist/packages/crucible/seeds/ruby/seed-009.rb +20 -20
  442. package/dist/packages/crucible/seeds/ruby/seed-010 2.rb +24 -24
  443. package/dist/packages/crucible/seeds/ruby/seed-010.rb +24 -24
  444. package/dist/packages/crucible/seeds/ruby/seed-011 2.rb +21 -21
  445. package/dist/packages/crucible/seeds/ruby/seed-011.rb +21 -21
  446. package/dist/packages/crucible/seeds/ruby/seed-012 2.rb +22 -22
  447. package/dist/packages/crucible/seeds/ruby/seed-012.rb +22 -22
  448. package/dist/packages/crucible/seeds/ruby/seed-013 2.rb +21 -21
  449. package/dist/packages/crucible/seeds/ruby/seed-013.rb +21 -21
  450. package/dist/packages/crucible/seeds/ruby/seed-014 2.rb +16 -16
  451. package/dist/packages/crucible/seeds/ruby/seed-014.rb +16 -16
  452. package/dist/packages/crucible/seeds/ruby/seed-015 2.rb +18 -18
  453. package/dist/packages/crucible/seeds/ruby/seed-015.rb +18 -18
  454. package/dist/packages/crucible/seeds/ruby/seed-016 2.rb +17 -17
  455. package/dist/packages/crucible/seeds/ruby/seed-016.rb +17 -17
  456. package/dist/packages/crucible/seeds/ruby/seed-017 2.rb +25 -25
  457. package/dist/packages/crucible/seeds/ruby/seed-017.rb +25 -25
  458. package/dist/packages/crucible/seeds/ruby/seed-018 2.rb +23 -23
  459. package/dist/packages/crucible/seeds/ruby/seed-018.rb +23 -23
  460. package/dist/packages/crucible/seeds/ruby/seed-019 2.rb +20 -20
  461. package/dist/packages/crucible/seeds/ruby/seed-019.rb +20 -20
  462. package/dist/packages/crucible/seeds/ruby/seed-020 2.rb +17 -17
  463. package/dist/packages/crucible/seeds/ruby/seed-020.rb +17 -17
  464. package/dist/packages/crucible/seeds/ruby/seed-021 2.rb +20 -20
  465. package/dist/packages/crucible/seeds/ruby/seed-021.rb +20 -20
  466. package/dist/packages/crucible/seeds/ruby/seed-022 2.rb +21 -21
  467. package/dist/packages/crucible/seeds/ruby/seed-022.rb +21 -21
  468. package/dist/packages/crucible/seeds/ruby/seed-023 2.rb +19 -19
  469. package/dist/packages/crucible/seeds/ruby/seed-023.rb +19 -19
  470. package/dist/packages/crucible/seeds/ruby/seed-024 2.rb +17 -17
  471. package/dist/packages/crucible/seeds/ruby/seed-024.rb +17 -17
  472. package/dist/packages/crucible/seeds/ruby/seed-025 2.rb +17 -17
  473. package/dist/packages/crucible/seeds/ruby/seed-025.rb +17 -17
  474. package/dist/packages/crucible/seeds/ruby/seed-026 2.rb +18 -18
  475. package/dist/packages/crucible/seeds/ruby/seed-026.rb +18 -18
  476. package/dist/packages/crucible/seeds/ruby/seed-027 2.rb +21 -21
  477. package/dist/packages/crucible/seeds/ruby/seed-027.rb +21 -21
  478. package/dist/packages/crucible/seeds/ruby/seed-028 2.rb +22 -22
  479. package/dist/packages/crucible/seeds/ruby/seed-028.rb +22 -22
  480. package/dist/packages/crucible/seeds/ruby/seed-029 2.rb +19 -19
  481. package/dist/packages/crucible/seeds/ruby/seed-029.rb +19 -19
  482. package/dist/packages/crucible/seeds/ruby/seed-030 2.rb +20 -20
  483. package/dist/packages/crucible/seeds/ruby/seed-030.rb +20 -20
  484. package/dist/packages/crucible/seeds/ruby/seed-031 2.rb +17 -17
  485. package/dist/packages/crucible/seeds/ruby/seed-031.rb +17 -17
  486. package/dist/packages/crucible/seeds/ruby/seed-032 2.rb +22 -22
  487. package/dist/packages/crucible/seeds/ruby/seed-032.rb +22 -22
  488. package/dist/packages/crucible/seeds/ruby/seed-033 2.rb +18 -18
  489. package/dist/packages/crucible/seeds/ruby/seed-033.rb +18 -18
  490. package/dist/packages/crucible/seeds/ruby/seed-034 2.rb +19 -19
  491. package/dist/packages/crucible/seeds/ruby/seed-034.rb +19 -19
  492. package/dist/packages/crucible/seeds/ruby/seed-035 2.rb +19 -19
  493. package/dist/packages/crucible/seeds/ruby/seed-035.rb +19 -19
  494. package/dist/packages/crucible/seeds/ruby/seed-036 2.rb +18 -18
  495. package/dist/packages/crucible/seeds/ruby/seed-036.rb +18 -18
  496. package/dist/packages/crucible/seeds/ruby/seed-037 2.rb +21 -21
  497. package/dist/packages/crucible/seeds/ruby/seed-037.rb +21 -21
  498. package/dist/packages/crucible/seeds/ruby/seed-038 2.rb +24 -24
  499. package/dist/packages/crucible/seeds/ruby/seed-038.rb +24 -24
  500. package/dist/packages/crucible/seeds/ruby/seed-039 2.rb +24 -24
  501. package/dist/packages/crucible/seeds/ruby/seed-039.rb +24 -24
  502. package/dist/packages/crucible/seeds/ruby/seed-040 2.rb +22 -22
  503. package/dist/packages/crucible/seeds/ruby/seed-040.rb +22 -22
  504. package/dist/packages/crucible/seeds/ruby/seed-041 2.rb +23 -23
  505. package/dist/packages/crucible/seeds/ruby/seed-041.rb +23 -23
  506. package/dist/packages/crucible/seeds/ruby/seed-042 2.rb +25 -25
  507. package/dist/packages/crucible/seeds/ruby/seed-042.rb +25 -25
  508. package/dist/packages/crucible/seeds/ruby/seed-043 2.rb +23 -23
  509. package/dist/packages/crucible/seeds/ruby/seed-043.rb +23 -23
  510. package/dist/packages/crucible/seeds/ruby/seed-044 2.rb +16 -16
  511. package/dist/packages/crucible/seeds/ruby/seed-044.rb +16 -16
  512. package/dist/packages/crucible/seeds/ruby/seed-045 2.rb +22 -22
  513. package/dist/packages/crucible/seeds/ruby/seed-045.rb +22 -22
  514. package/dist/packages/crucible/seeds/ruby/seed-046 2.rb +27 -27
  515. package/dist/packages/crucible/seeds/ruby/seed-046.rb +27 -27
  516. package/dist/packages/crucible/seeds/ruby/seed-047 2.rb +26 -26
  517. package/dist/packages/crucible/seeds/ruby/seed-047.rb +26 -26
  518. package/dist/packages/crucible/seeds/ruby/seed-048 2.rb +24 -24
  519. package/dist/packages/crucible/seeds/ruby/seed-048.rb +24 -24
  520. package/dist/packages/crucible/seeds/ruby/seed-049 2.rb +20 -20
  521. package/dist/packages/crucible/seeds/ruby/seed-049.rb +20 -20
  522. package/dist/packages/crucible/seeds/ruby/seed-050 2.rb +27 -27
  523. package/dist/packages/crucible/seeds/ruby/seed-050.rb +27 -27
  524. package/dist/packages/crucible/seeds/rust/seed-001 2.rs +25 -25
  525. package/dist/packages/crucible/seeds/rust/seed-001.rs +25 -25
  526. package/dist/packages/crucible/seeds/rust/seed-002 2.rs +20 -20
  527. package/dist/packages/crucible/seeds/rust/seed-002.rs +20 -20
  528. package/dist/packages/crucible/seeds/rust/seed-003 2.rs +23 -23
  529. package/dist/packages/crucible/seeds/rust/seed-003.rs +23 -23
  530. package/dist/packages/crucible/seeds/rust/seed-004 2.rs +21 -21
  531. package/dist/packages/crucible/seeds/rust/seed-004.rs +21 -21
  532. package/dist/packages/crucible/seeds/rust/seed-005 2.rs +21 -21
  533. package/dist/packages/crucible/seeds/rust/seed-005.rs +21 -21
  534. package/dist/packages/crucible/seeds/rust/seed-006 2.rs +24 -24
  535. package/dist/packages/crucible/seeds/rust/seed-006.rs +24 -24
  536. package/dist/packages/crucible/seeds/rust/seed-007 2.rs +20 -20
  537. package/dist/packages/crucible/seeds/rust/seed-007.rs +20 -20
  538. package/dist/packages/crucible/seeds/rust/seed-008 2.rs +19 -19
  539. package/dist/packages/crucible/seeds/rust/seed-008.rs +19 -19
  540. package/dist/packages/crucible/seeds/rust/seed-009 2.rs +28 -28
  541. package/dist/packages/crucible/seeds/rust/seed-009.rs +28 -28
  542. package/dist/packages/crucible/seeds/rust/seed-010 2.rs +28 -28
  543. package/dist/packages/crucible/seeds/rust/seed-010.rs +28 -28
  544. package/dist/packages/crucible/seeds/rust/seed-011 2.rs +25 -25
  545. package/dist/packages/crucible/seeds/rust/seed-011.rs +25 -25
  546. package/dist/packages/crucible/seeds/rust/seed-012 2.rs +31 -31
  547. package/dist/packages/crucible/seeds/rust/seed-012.rs +31 -31
  548. package/dist/packages/crucible/seeds/rust/seed-013 2.rs +27 -27
  549. package/dist/packages/crucible/seeds/rust/seed-013.rs +27 -27
  550. package/dist/packages/crucible/seeds/rust/seed-014 2.rs +30 -30
  551. package/dist/packages/crucible/seeds/rust/seed-014.rs +30 -30
  552. package/dist/packages/crucible/seeds/rust/seed-015 2.rs +33 -33
  553. package/dist/packages/crucible/seeds/rust/seed-015.rs +33 -33
  554. package/dist/packages/crucible/seeds/rust/seed-016 2.rs +22 -22
  555. package/dist/packages/crucible/seeds/rust/seed-016.rs +22 -22
  556. package/dist/packages/crucible/seeds/rust/seed-017 2.rs +28 -28
  557. package/dist/packages/crucible/seeds/rust/seed-017.rs +28 -28
  558. package/dist/packages/crucible/seeds/rust/seed-018 2.rs +21 -21
  559. package/dist/packages/crucible/seeds/rust/seed-018.rs +21 -21
  560. package/dist/packages/crucible/seeds/rust/seed-019 2.rs +36 -36
  561. package/dist/packages/crucible/seeds/rust/seed-019.rs +36 -36
  562. package/dist/packages/crucible/seeds/rust/seed-020 2.rs +27 -27
  563. package/dist/packages/crucible/seeds/rust/seed-020.rs +27 -27
  564. package/dist/packages/crucible/seeds/rust/seed-021 2.rs +26 -26
  565. package/dist/packages/crucible/seeds/rust/seed-021.rs +26 -26
  566. package/dist/packages/crucible/seeds/rust/seed-022 2.rs +23 -23
  567. package/dist/packages/crucible/seeds/rust/seed-022.rs +23 -23
  568. package/dist/packages/crucible/seeds/rust/seed-023 2.rs +22 -22
  569. package/dist/packages/crucible/seeds/rust/seed-023.rs +22 -22
  570. package/dist/packages/crucible/seeds/rust/seed-024 2.rs +24 -24
  571. package/dist/packages/crucible/seeds/rust/seed-024.rs +24 -24
  572. package/dist/packages/crucible/seeds/rust/seed-025 2.rs +29 -29
  573. package/dist/packages/crucible/seeds/rust/seed-025.rs +29 -29
  574. package/dist/packages/crucible/seeds/rust/seed-026 2.rs +23 -23
  575. package/dist/packages/crucible/seeds/rust/seed-026.rs +23 -23
  576. package/dist/packages/crucible/seeds/rust/seed-027 2.rs +24 -24
  577. package/dist/packages/crucible/seeds/rust/seed-027.rs +24 -24
  578. package/dist/packages/crucible/seeds/rust/seed-028 2.rs +25 -25
  579. package/dist/packages/crucible/seeds/rust/seed-028.rs +25 -25
  580. package/dist/packages/crucible/seeds/rust/seed-029 2.rs +25 -25
  581. package/dist/packages/crucible/seeds/rust/seed-029.rs +25 -25
  582. package/dist/packages/crucible/seeds/rust/seed-030 2.rs +30 -30
  583. package/dist/packages/crucible/seeds/rust/seed-030.rs +30 -30
  584. package/dist/packages/crucible/seeds/rust/seed-031 2.rs +22 -22
  585. package/dist/packages/crucible/seeds/rust/seed-031.rs +22 -22
  586. package/dist/packages/crucible/seeds/rust/seed-032 2.rs +25 -25
  587. package/dist/packages/crucible/seeds/rust/seed-032.rs +25 -25
  588. package/dist/packages/crucible/seeds/rust/seed-033 2.rs +25 -25
  589. package/dist/packages/crucible/seeds/rust/seed-033.rs +25 -25
  590. package/dist/packages/crucible/seeds/rust/seed-034 2.rs +20 -20
  591. package/dist/packages/crucible/seeds/rust/seed-034.rs +20 -20
  592. package/dist/packages/crucible/seeds/rust/seed-035 2.rs +28 -28
  593. package/dist/packages/crucible/seeds/rust/seed-035.rs +28 -28
  594. package/dist/packages/crucible/seeds/rust/seed-036 2.rs +26 -26
  595. package/dist/packages/crucible/seeds/rust/seed-036.rs +26 -26
  596. package/dist/packages/crucible/seeds/rust/seed-037 2.rs +31 -31
  597. package/dist/packages/crucible/seeds/rust/seed-037.rs +31 -31
  598. package/dist/packages/crucible/seeds/rust/seed-038 2.rs +25 -25
  599. package/dist/packages/crucible/seeds/rust/seed-038.rs +25 -25
  600. package/dist/packages/crucible/seeds/rust/seed-039 2.rs +28 -28
  601. package/dist/packages/crucible/seeds/rust/seed-039.rs +28 -28
  602. package/dist/packages/crucible/seeds/rust/seed-040 2.rs +27 -27
  603. package/dist/packages/crucible/seeds/rust/seed-040.rs +27 -27
  604. package/dist/packages/crucible/seeds/rust/seed-041 2.rs +32 -32
  605. package/dist/packages/crucible/seeds/rust/seed-041.rs +32 -32
  606. package/dist/packages/crucible/seeds/rust/seed-042 2.rs +27 -27
  607. package/dist/packages/crucible/seeds/rust/seed-042.rs +27 -27
  608. package/dist/packages/crucible/seeds/rust/seed-043 2.rs +29 -29
  609. package/dist/packages/crucible/seeds/rust/seed-043.rs +29 -29
  610. package/dist/packages/crucible/seeds/rust/seed-044 2.rs +25 -25
  611. package/dist/packages/crucible/seeds/rust/seed-044.rs +25 -25
  612. package/dist/packages/crucible/seeds/rust/seed-045 2.rs +28 -28
  613. package/dist/packages/crucible/seeds/rust/seed-045.rs +28 -28
  614. package/dist/packages/crucible/seeds/rust/seed-046 2.rs +25 -25
  615. package/dist/packages/crucible/seeds/rust/seed-046.rs +25 -25
  616. package/dist/packages/crucible/seeds/rust/seed-047 2.rs +34 -34
  617. package/dist/packages/crucible/seeds/rust/seed-047.rs +34 -34
  618. package/dist/packages/crucible/seeds/rust/seed-048 2.rs +21 -21
  619. package/dist/packages/crucible/seeds/rust/seed-048.rs +21 -21
  620. package/dist/packages/crucible/seeds/rust/seed-049 2.rs +26 -26
  621. package/dist/packages/crucible/seeds/rust/seed-049.rs +26 -26
  622. package/dist/packages/crucible/seeds/rust/seed-050 2.rs +23 -23
  623. package/dist/packages/crucible/seeds/rust/seed-050.rs +23 -23
  624. package/dist/packages/crucible/seeds/ts/seed-001 2.ts +32 -32
  625. package/dist/packages/crucible/seeds/ts/seed-001.ts +32 -32
  626. package/dist/packages/crucible/seeds/ts/seed-002 2.ts +34 -34
  627. package/dist/packages/crucible/seeds/ts/seed-002.ts +34 -34
  628. package/dist/packages/crucible/seeds/ts/seed-003 2.ts +28 -28
  629. package/dist/packages/crucible/seeds/ts/seed-003.ts +28 -28
  630. package/dist/packages/crucible/seeds/ts/seed-004 2.ts +34 -34
  631. package/dist/packages/crucible/seeds/ts/seed-004.ts +34 -34
  632. package/dist/packages/crucible/seeds/ts/seed-005 2.ts +32 -32
  633. package/dist/packages/crucible/seeds/ts/seed-005.ts +32 -32
  634. package/dist/packages/crucible/seeds/ts/seed-006 2.ts +31 -31
  635. package/dist/packages/crucible/seeds/ts/seed-006.ts +31 -31
  636. package/dist/packages/crucible/seeds/ts/seed-007 2.ts +28 -28
  637. package/dist/packages/crucible/seeds/ts/seed-007.ts +28 -28
  638. package/dist/packages/crucible/seeds/ts/seed-008 2.ts +40 -40
  639. package/dist/packages/crucible/seeds/ts/seed-008.ts +40 -40
  640. package/dist/packages/crucible/seeds/ts/seed-009 2.ts +31 -31
  641. package/dist/packages/crucible/seeds/ts/seed-009.ts +31 -31
  642. package/dist/packages/crucible/seeds/ts/seed-010 2.ts +33 -33
  643. package/dist/packages/crucible/seeds/ts/seed-010.ts +33 -33
  644. package/dist/packages/crucible/seeds/ts/seed-011 2.ts +29 -29
  645. package/dist/packages/crucible/seeds/ts/seed-011.ts +29 -29
  646. package/dist/packages/crucible/seeds/ts/seed-012 2.ts +34 -34
  647. package/dist/packages/crucible/seeds/ts/seed-012.ts +34 -34
  648. package/dist/packages/crucible/seeds/ts/seed-013 2.ts +31 -31
  649. package/dist/packages/crucible/seeds/ts/seed-013.ts +31 -31
  650. package/dist/packages/crucible/seeds/ts/seed-014 2.ts +36 -36
  651. package/dist/packages/crucible/seeds/ts/seed-014.ts +36 -36
  652. package/dist/packages/crucible/seeds/ts/seed-015 2.ts +31 -31
  653. package/dist/packages/crucible/seeds/ts/seed-015.ts +31 -31
  654. package/dist/packages/crucible/seeds/ts/seed-016 2.ts +37 -37
  655. package/dist/packages/crucible/seeds/ts/seed-016.ts +37 -37
  656. package/dist/packages/crucible/seeds/ts/seed-017 2.ts +44 -44
  657. package/dist/packages/crucible/seeds/ts/seed-017.ts +44 -44
  658. package/dist/packages/crucible/seeds/ts/seed-018 2.ts +33 -33
  659. package/dist/packages/crucible/seeds/ts/seed-018.ts +33 -33
  660. package/dist/packages/crucible/seeds/ts/seed-019 2.ts +32 -32
  661. package/dist/packages/crucible/seeds/ts/seed-019.ts +32 -32
  662. package/dist/packages/crucible/seeds/ts/seed-020 2.ts +33 -33
  663. package/dist/packages/crucible/seeds/ts/seed-020.ts +33 -33
  664. package/dist/packages/crucible/seeds/ts/seed-021 2.ts +33 -33
  665. package/dist/packages/crucible/seeds/ts/seed-021.ts +33 -33
  666. package/dist/packages/crucible/seeds/ts/seed-022 2.ts +34 -34
  667. package/dist/packages/crucible/seeds/ts/seed-022.ts +34 -34
  668. package/dist/packages/crucible/seeds/ts/seed-023 2.ts +33 -33
  669. package/dist/packages/crucible/seeds/ts/seed-023.ts +33 -33
  670. package/dist/packages/crucible/seeds/ts/seed-024 2.ts +35 -35
  671. package/dist/packages/crucible/seeds/ts/seed-024.ts +35 -35
  672. package/dist/packages/crucible/seeds/ts/seed-025 2.ts +29 -29
  673. package/dist/packages/crucible/seeds/ts/seed-025.ts +29 -29
  674. package/dist/packages/crucible/seeds/ts/seed-026 2.ts +36 -36
  675. package/dist/packages/crucible/seeds/ts/seed-026.ts +36 -36
  676. package/dist/packages/crucible/seeds/ts/seed-027 2.ts +30 -30
  677. package/dist/packages/crucible/seeds/ts/seed-027.ts +30 -30
  678. package/dist/packages/crucible/seeds/ts/seed-028 2.ts +32 -32
  679. package/dist/packages/crucible/seeds/ts/seed-028.ts +32 -32
  680. package/dist/packages/crucible/seeds/ts/seed-029 2.ts +34 -34
  681. package/dist/packages/crucible/seeds/ts/seed-029.ts +34 -34
  682. package/dist/packages/crucible/seeds/ts/seed-030 2.ts +37 -37
  683. package/dist/packages/crucible/seeds/ts/seed-030.ts +37 -37
  684. package/dist/packages/crucible/seeds/ts/seed-031 2.ts +31 -31
  685. package/dist/packages/crucible/seeds/ts/seed-031.ts +31 -31
  686. package/dist/packages/crucible/seeds/ts/seed-032 2.ts +32 -32
  687. package/dist/packages/crucible/seeds/ts/seed-032.ts +32 -32
  688. package/dist/packages/crucible/seeds/ts/seed-033 2.ts +32 -32
  689. package/dist/packages/crucible/seeds/ts/seed-033.ts +32 -32
  690. package/dist/packages/crucible/seeds/ts/seed-034 2.ts +34 -34
  691. package/dist/packages/crucible/seeds/ts/seed-034.ts +34 -34
  692. package/dist/packages/crucible/seeds/ts/seed-035 2.ts +29 -29
  693. package/dist/packages/crucible/seeds/ts/seed-035.ts +29 -29
  694. package/dist/packages/crucible/seeds/ts/seed-036 2.ts +34 -34
  695. package/dist/packages/crucible/seeds/ts/seed-036.ts +34 -34
  696. package/dist/packages/crucible/seeds/ts/seed-037 2.ts +33 -33
  697. package/dist/packages/crucible/seeds/ts/seed-037.ts +33 -33
  698. package/dist/packages/crucible/seeds/ts/seed-038 2.ts +29 -29
  699. package/dist/packages/crucible/seeds/ts/seed-038.ts +29 -29
  700. package/dist/packages/crucible/seeds/ts/seed-039 2.ts +35 -35
  701. package/dist/packages/crucible/seeds/ts/seed-039.ts +35 -35
  702. package/dist/packages/crucible/seeds/ts/seed-040 2.ts +31 -31
  703. package/dist/packages/crucible/seeds/ts/seed-040.ts +31 -31
  704. package/dist/packages/crucible/seeds/ts/seed-041 2.ts +29 -29
  705. package/dist/packages/crucible/seeds/ts/seed-041.ts +29 -29
  706. package/dist/packages/crucible/seeds/ts/seed-042 2.ts +33 -33
  707. package/dist/packages/crucible/seeds/ts/seed-042.ts +33 -33
  708. package/dist/packages/crucible/seeds/ts/seed-043 2.ts +32 -32
  709. package/dist/packages/crucible/seeds/ts/seed-043.ts +32 -32
  710. package/dist/packages/crucible/seeds/ts/seed-044 2.ts +36 -36
  711. package/dist/packages/crucible/seeds/ts/seed-044.ts +36 -36
  712. package/dist/packages/crucible/seeds/ts/seed-045 2.ts +39 -39
  713. package/dist/packages/crucible/seeds/ts/seed-045.ts +39 -39
  714. package/dist/packages/crucible/seeds/ts/seed-046 2.ts +41 -41
  715. package/dist/packages/crucible/seeds/ts/seed-046.ts +41 -41
  716. package/dist/packages/crucible/seeds/ts/seed-047 2.ts +33 -33
  717. package/dist/packages/crucible/seeds/ts/seed-047.ts +33 -33
  718. package/dist/packages/crucible/seeds/ts/seed-048 2.ts +33 -33
  719. package/dist/packages/crucible/seeds/ts/seed-048.ts +33 -33
  720. package/dist/packages/crucible/seeds/ts/seed-049 2.ts +34 -34
  721. package/dist/packages/crucible/seeds/ts/seed-049.ts +34 -34
  722. package/dist/packages/crucible/seeds/ts/seed-050 2.ts +41 -41
  723. package/dist/packages/crucible/seeds/ts/seed-050.ts +41 -41
  724. package/dist/packages/crucible/seeds/ts/seed-051 2.ts +34 -34
  725. package/dist/packages/crucible/seeds/ts/seed-051.ts +34 -34
  726. package/dist/packages/crucible/seeds/ts/seed-052 2.ts +36 -36
  727. package/dist/packages/crucible/seeds/ts/seed-052.ts +36 -36
  728. package/dist/packages/scanner/ai-confidence-scorer.js +1 -1
  729. package/dist/packages/scanner/baseline-manager.js +1 -1
  730. package/dist/packages/scanner/code-scanner.js +1 -1
  731. package/dist/packages/scanner/copy-paste-detector.js +1 -1
  732. package/dist/packages/scanner/drift-detector.js +1 -1
  733. package/dist/packages/scanner/export-verifier.js +1 -1
  734. package/dist/packages/scanner/ghost-code-detector.js +1 -1
  735. package/dist/packages/scanner/hallucination-detector.js +1 -1
  736. package/dist/packages/scanner/license-manager.js +1 -1
  737. package/package.json +62 -63
@@ -1,28 +1,28 @@
1
- // [CRUCIBLE-SEED]
2
- // category: path_traversal
3
- // severity: high
4
- // language: csharp
5
- // expected: Path traversal via FileStream opened from user-supplied config name
6
-
7
- using System.IO;
8
- using Microsoft.AspNetCore.Mvc;
9
-
10
- namespace App.Controllers
11
- {
12
- [ApiController]
13
- [Route("api/[controller]")]
14
- public class ConfigController : ControllerBase
15
- {
16
- private const string ConfigDir = "/etc/appservice/configs/";
17
-
18
- [HttpGet("{configName}")]
19
- public IActionResult GetConfig(string configName)
20
- {
21
- // Vulnerable: configName not validated; ../../etc/shadow possible
22
- string filePath = ConfigDir + configName + ".json";
23
- using var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
24
- using var reader = new StreamReader(fs);
25
- return Ok(reader.ReadToEnd());
26
- }
27
- }
28
- }
1
+ // [CRUCIBLE-SEED]
2
+ // category: path_traversal
3
+ // severity: high
4
+ // language: csharp
5
+ // expected: Path traversal via FileStream opened from user-supplied config name
6
+
7
+ using System.IO;
8
+ using Microsoft.AspNetCore.Mvc;
9
+
10
+ namespace App.Controllers
11
+ {
12
+ [ApiController]
13
+ [Route("api/[controller]")]
14
+ public class ConfigController : ControllerBase
15
+ {
16
+ private const string ConfigDir = "/etc/appservice/configs/";
17
+
18
+ [HttpGet("{configName}")]
19
+ public IActionResult GetConfig(string configName)
20
+ {
21
+ // Vulnerable: configName not validated; ../../etc/shadow possible
22
+ string filePath = ConfigDir + configName + ".json";
23
+ using var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
24
+ using var reader = new StreamReader(fs);
25
+ return Ok(reader.ReadToEnd());
26
+ }
27
+ }
28
+ }
@@ -1,30 +1,30 @@
1
- // [CRUCIBLE-SEED]
2
- // category: path_traversal
3
- // severity: high
4
- // language: csharp
5
- // expected: Path traversal in file delete via Directory.Delete with user-controlled path
6
-
7
- using System.IO;
8
- using Microsoft.AspNetCore.Mvc;
9
-
10
- namespace App.Controllers
11
- {
12
- [ApiController]
13
- [Route("api/[controller]")]
14
- public class CleanupController : ControllerBase
15
- {
16
- private const string UploadRoot = "/var/uploads/";
17
-
18
- [HttpDelete]
19
- public IActionResult DeleteFile([FromQuery] string relativePath)
20
- {
21
- // Vulnerable: relativePath with ../ can delete files outside UploadRoot
22
- string fullPath = Path.Combine(UploadRoot, relativePath);
23
- if (Directory.Exists(fullPath))
24
- Directory.Delete(fullPath, recursive: true);
25
- else if (File.Exists(fullPath))
26
- File.Delete(fullPath);
27
- return Ok("Deleted");
28
- }
29
- }
30
- }
1
+ // [CRUCIBLE-SEED]
2
+ // category: path_traversal
3
+ // severity: high
4
+ // language: csharp
5
+ // expected: Path traversal in file delete via Directory.Delete with user-controlled path
6
+
7
+ using System.IO;
8
+ using Microsoft.AspNetCore.Mvc;
9
+
10
+ namespace App.Controllers
11
+ {
12
+ [ApiController]
13
+ [Route("api/[controller]")]
14
+ public class CleanupController : ControllerBase
15
+ {
16
+ private const string UploadRoot = "/var/uploads/";
17
+
18
+ [HttpDelete]
19
+ public IActionResult DeleteFile([FromQuery] string relativePath)
20
+ {
21
+ // Vulnerable: relativePath with ../ can delete files outside UploadRoot
22
+ string fullPath = Path.Combine(UploadRoot, relativePath);
23
+ if (Directory.Exists(fullPath))
24
+ Directory.Delete(fullPath, recursive: true);
25
+ else if (File.Exists(fullPath))
26
+ File.Delete(fullPath);
27
+ return Ok("Deleted");
28
+ }
29
+ }
30
+ }
@@ -1,27 +1,27 @@
1
- // [CRUCIBLE-SEED]
2
- // category: path_traversal
3
- // severity: high
4
- // language: csharp
5
- // expected: Path traversal in file write with user-supplied report name enabling overwrite of arbitrary files
6
-
7
- using System.IO;
8
- using Microsoft.AspNetCore.Mvc;
9
-
10
- namespace App.Controllers
11
- {
12
- [ApiController]
13
- [Route("api/[controller]")]
14
- public class ReportController : ControllerBase
15
- {
16
- private const string ReportBase = "/var/reports/";
17
-
18
- [HttpPost]
19
- public IActionResult SaveReport([FromQuery] string reportName, [FromBody] string content)
20
- {
21
- // Vulnerable: reportName can traverse directory (../../etc/cron.d/evil)
22
- string outputPath = ReportBase + reportName + ".txt";
23
- File.WriteAllText(outputPath, content);
24
- return Ok($"Saved to {outputPath}");
25
- }
26
- }
27
- }
1
+ // [CRUCIBLE-SEED]
2
+ // category: path_traversal
3
+ // severity: high
4
+ // language: csharp
5
+ // expected: Path traversal in file write with user-supplied report name enabling overwrite of arbitrary files
6
+
7
+ using System.IO;
8
+ using Microsoft.AspNetCore.Mvc;
9
+
10
+ namespace App.Controllers
11
+ {
12
+ [ApiController]
13
+ [Route("api/[controller]")]
14
+ public class ReportController : ControllerBase
15
+ {
16
+ private const string ReportBase = "/var/reports/";
17
+
18
+ [HttpPost]
19
+ public IActionResult SaveReport([FromQuery] string reportName, [FromBody] string content)
20
+ {
21
+ // Vulnerable: reportName can traverse directory (../../etc/cron.d/evil)
22
+ string outputPath = ReportBase + reportName + ".txt";
23
+ File.WriteAllText(outputPath, content);
24
+ return Ok($"Saved to {outputPath}");
25
+ }
26
+ }
27
+ }
@@ -1,25 +1,25 @@
1
- // [CRUCIBLE-SEED]
2
- // category: insecure_crypto
3
- // severity: high
4
- // language: csharp
5
- // expected: MD5 used for password hashing via MD5.Create()
6
-
7
- using System.Security.Cryptography;
8
- using System.Text;
9
-
10
- namespace App.Security
11
- {
12
- public class PasswordHasher
13
- {
14
- // Vulnerable: MD5 is cryptographically broken and unsalted
15
- public static string HashPassword(string password)
16
- {
17
- using var md5 = MD5.Create();
18
- byte[] hash = md5.ComputeHash(Encoding.UTF8.GetBytes(password));
19
- return BitConverter.ToString(hash).Replace("-", "").ToLower();
20
- }
21
-
22
- public static bool Verify(string password, string storedHash)
23
- => HashPassword(password) == storedHash;
24
- }
25
- }
1
+ // [CRUCIBLE-SEED]
2
+ // category: insecure_crypto
3
+ // severity: high
4
+ // language: csharp
5
+ // expected: MD5 used for password hashing via MD5.Create()
6
+
7
+ using System.Security.Cryptography;
8
+ using System.Text;
9
+
10
+ namespace App.Security
11
+ {
12
+ public class PasswordHasher
13
+ {
14
+ // Vulnerable: MD5 is cryptographically broken and unsalted
15
+ public static string HashPassword(string password)
16
+ {
17
+ using var md5 = MD5.Create();
18
+ byte[] hash = md5.ComputeHash(Encoding.UTF8.GetBytes(password));
19
+ return BitConverter.ToString(hash).Replace("-", "").ToLower();
20
+ }
21
+
22
+ public static bool Verify(string password, string storedHash)
23
+ => HashPassword(password) == storedHash;
24
+ }
25
+ }
@@ -1,32 +1,32 @@
1
- // [CRUCIBLE-SEED]
2
- // category: insecure_crypto
3
- // severity: critical
4
- // language: csharp
5
- // expected: DES encryption used for sensitive data (56-bit key, broken algorithm)
6
-
7
- using System.IO;
8
- using System.Security.Cryptography;
9
- using System.Text;
10
-
11
- namespace App.Security
12
- {
13
- public class LegacyEncryptor
14
- {
15
- private static readonly byte[] Key = Encoding.ASCII.GetBytes("8ByteKey");
16
- private static readonly byte[] IV = Encoding.ASCII.GetBytes("InitVec!");
17
-
18
- // Vulnerable: DES is broken — 56-bit key susceptible to brute force
19
- public static byte[] Encrypt(string plaintext)
20
- {
21
- using var des = DES.Create();
22
- des.Key = Key;
23
- des.IV = IV;
24
- using var ms = new MemoryStream();
25
- using var cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
26
- byte[] data = Encoding.UTF8.GetBytes(plaintext);
27
- cs.Write(data, 0, data.Length);
28
- cs.FlushFinalBlock();
29
- return ms.ToArray();
30
- }
31
- }
32
- }
1
+ // [CRUCIBLE-SEED]
2
+ // category: insecure_crypto
3
+ // severity: critical
4
+ // language: csharp
5
+ // expected: DES encryption used for sensitive data (56-bit key, broken algorithm)
6
+
7
+ using System.IO;
8
+ using System.Security.Cryptography;
9
+ using System.Text;
10
+
11
+ namespace App.Security
12
+ {
13
+ public class LegacyEncryptor
14
+ {
15
+ private static readonly byte[] Key = Encoding.ASCII.GetBytes("8ByteKey");
16
+ private static readonly byte[] IV = Encoding.ASCII.GetBytes("InitVec!");
17
+
18
+ // Vulnerable: DES is broken — 56-bit key susceptible to brute force
19
+ public static byte[] Encrypt(string plaintext)
20
+ {
21
+ using var des = DES.Create();
22
+ des.Key = Key;
23
+ des.IV = IV;
24
+ using var ms = new MemoryStream();
25
+ using var cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
26
+ byte[] data = Encoding.UTF8.GetBytes(plaintext);
27
+ cs.Write(data, 0, data.Length);
28
+ cs.FlushFinalBlock();
29
+ return ms.ToArray();
30
+ }
31
+ }
32
+ }
@@ -1,28 +1,28 @@
1
- // [CRUCIBLE-SEED]
2
- // category: insecure_crypto
3
- // severity: high
4
- // language: csharp
5
- // expected: System.Random used instead of RNGCryptoServiceProvider for token generation
6
-
7
- using System;
8
-
9
- namespace App.Security
10
- {
11
- public class TokenService
12
- {
13
- // Vulnerable: System.Random is not cryptographically secure
14
- private static readonly Random Rng = new Random();
15
- private const string Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
16
-
17
- public static string GenerateToken(int length = 32)
18
- {
19
- var sb = new System.Text.StringBuilder(length);
20
- for (int i = 0; i < length; i++)
21
- sb.Append(Alphabet[Rng.Next(Alphabet.Length)]);
22
- return sb.ToString();
23
- }
24
-
25
- public static string GenerateCsrfToken() => GenerateToken(24);
26
- public static string GeneratePasswordReset() => GenerateToken(40);
27
- }
28
- }
1
+ // [CRUCIBLE-SEED]
2
+ // category: insecure_crypto
3
+ // severity: high
4
+ // language: csharp
5
+ // expected: System.Random used instead of RNGCryptoServiceProvider for token generation
6
+
7
+ using System;
8
+
9
+ namespace App.Security
10
+ {
11
+ public class TokenService
12
+ {
13
+ // Vulnerable: System.Random is not cryptographically secure
14
+ private static readonly Random Rng = new Random();
15
+ private const string Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
16
+
17
+ public static string GenerateToken(int length = 32)
18
+ {
19
+ var sb = new System.Text.StringBuilder(length);
20
+ for (int i = 0; i < length; i++)
21
+ sb.Append(Alphabet[Rng.Next(Alphabet.Length)]);
22
+ return sb.ToString();
23
+ }
24
+
25
+ public static string GenerateCsrfToken() => GenerateToken(24);
26
+ public static string GeneratePasswordReset() => GenerateToken(40);
27
+ }
28
+ }
@@ -1,29 +1,29 @@
1
- // [CRUCIBLE-SEED]
2
- // category: insecure_crypto
3
- // severity: high
4
- // language: csharp
5
- // expected: SHA1 used for HMAC signing instead of SHA256 or higher
6
-
7
- using System.Security.Cryptography;
8
- using System.Text;
9
-
10
- namespace App.Security
11
- {
12
- public class SignatureService
13
- {
14
- // Vulnerable: HMACSHA1 is weak for new applications
15
- public static string Sign(string data, string key)
16
- {
17
- using var hmac = new HMACSHA1(Encoding.UTF8.GetBytes(key));
18
- byte[] hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(data));
19
- return Convert.ToBase64String(hash);
20
- }
21
-
22
- // Vulnerable: MD5 used for payload integrity
23
- public static string ComputeMd5(byte[] data)
24
- {
25
- using var md5 = MD5.Create();
26
- return BitConverter.ToString(md5.ComputeHash(data)).Replace("-", "");
27
- }
28
- }
29
- }
1
+ // [CRUCIBLE-SEED]
2
+ // category: insecure_crypto
3
+ // severity: high
4
+ // language: csharp
5
+ // expected: SHA1 used for HMAC signing instead of SHA256 or higher
6
+
7
+ using System.Security.Cryptography;
8
+ using System.Text;
9
+
10
+ namespace App.Security
11
+ {
12
+ public class SignatureService
13
+ {
14
+ // Vulnerable: HMACSHA1 is weak for new applications
15
+ public static string Sign(string data, string key)
16
+ {
17
+ using var hmac = new HMACSHA1(Encoding.UTF8.GetBytes(key));
18
+ byte[] hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(data));
19
+ return Convert.ToBase64String(hash);
20
+ }
21
+
22
+ // Vulnerable: MD5 used for payload integrity
23
+ public static string ComputeMd5(byte[] data)
24
+ {
25
+ using var md5 = MD5.Create();
26
+ return BitConverter.ToString(md5.ComputeHash(data)).Replace("-", "");
27
+ }
28
+ }
29
+ }
@@ -1,28 +1,28 @@
1
- // [CRUCIBLE-SEED]
2
- // category: insecure_crypto
3
- // severity: high
4
- // language: csharp
5
- // expected: AES-ECB mode used for encryption (no IV, leaks data patterns)
6
-
7
- using System.IO;
8
- using System.Security.Cryptography;
9
- using System.Text;
10
-
11
- namespace App.Security
12
- {
13
- public class AesEcbEncryptor
14
- {
15
- private static readonly byte[] Key = Encoding.ASCII.GetBytes("1234567890abcdef");
16
-
17
- // Vulnerable: AES in ECB mode — identical plaintext blocks produce identical ciphertext
18
- public static byte[] Encrypt(byte[] data)
19
- {
20
- using var aes = Aes.Create();
21
- aes.Key = Key;
22
- aes.Mode = CipherMode.ECB;
23
- aes.Padding = PaddingMode.PKCS7;
24
- using var encryptor = aes.CreateEncryptor();
25
- return encryptor.TransformFinalBlock(data, 0, data.Length);
26
- }
27
- }
28
- }
1
+ // [CRUCIBLE-SEED]
2
+ // category: insecure_crypto
3
+ // severity: high
4
+ // language: csharp
5
+ // expected: AES-ECB mode used for encryption (no IV, leaks data patterns)
6
+
7
+ using System.IO;
8
+ using System.Security.Cryptography;
9
+ using System.Text;
10
+
11
+ namespace App.Security
12
+ {
13
+ public class AesEcbEncryptor
14
+ {
15
+ private static readonly byte[] Key = Encoding.ASCII.GetBytes("1234567890abcdef");
16
+
17
+ // Vulnerable: AES in ECB mode — identical plaintext blocks produce identical ciphertext
18
+ public static byte[] Encrypt(byte[] data)
19
+ {
20
+ using var aes = Aes.Create();
21
+ aes.Key = Key;
22
+ aes.Mode = CipherMode.ECB;
23
+ aes.Padding = PaddingMode.PKCS7;
24
+ using var encryptor = aes.CreateEncryptor();
25
+ return encryptor.TransformFinalBlock(data, 0, data.Length);
26
+ }
27
+ }
28
+ }
@@ -1,29 +1,29 @@
1
- // [CRUCIBLE-SEED]
2
- // category: deserialization
3
- // severity: critical
4
- // language: csharp
5
- // expected: Unsafe deserialization via BinaryFormatter.Deserialize on untrusted stream
6
-
7
- using System.IO;
8
- using System.Runtime.Serialization.Formatters.Binary;
9
- using Microsoft.AspNetCore.Mvc;
10
-
11
- namespace App.Controllers
12
- {
13
- [ApiController]
14
- [Route("api/[controller]")]
15
- public class SessionController : ControllerBase
16
- {
17
- [HttpPost("restore")]
18
- public IActionResult RestoreSession()
19
- {
20
- // Vulnerable: BinaryFormatter can execute arbitrary code via gadget chains
21
- var formatter = new BinaryFormatter();
22
- #pragma warning disable SYSLIB0011
23
- object data = formatter.Deserialize(Request.Body);
24
- #pragma warning restore SYSLIB0011
25
- HttpContext.Session.SetString("data", data.ToString());
26
- return Ok("Session restored");
27
- }
28
- }
29
- }
1
+ // [CRUCIBLE-SEED]
2
+ // category: deserialization
3
+ // severity: critical
4
+ // language: csharp
5
+ // expected: Unsafe deserialization via BinaryFormatter.Deserialize on untrusted stream
6
+
7
+ using System.IO;
8
+ using System.Runtime.Serialization.Formatters.Binary;
9
+ using Microsoft.AspNetCore.Mvc;
10
+
11
+ namespace App.Controllers
12
+ {
13
+ [ApiController]
14
+ [Route("api/[controller]")]
15
+ public class SessionController : ControllerBase
16
+ {
17
+ [HttpPost("restore")]
18
+ public IActionResult RestoreSession()
19
+ {
20
+ // Vulnerable: BinaryFormatter can execute arbitrary code via gadget chains
21
+ var formatter = new BinaryFormatter();
22
+ #pragma warning disable SYSLIB0011
23
+ object data = formatter.Deserialize(Request.Body);
24
+ #pragma warning restore SYSLIB0011
25
+ HttpContext.Session.SetString("data", data.ToString());
26
+ return Ok("Session restored");
27
+ }
28
+ }
29
+ }
@@ -1,28 +1,28 @@
1
- // [CRUCIBLE-SEED]
2
- // category: deserialization
3
- // severity: critical
4
- // language: csharp
5
- // expected: Unsafe deserialization via JsonConvert with TypeNameHandling.All on user input
6
-
7
- using Newtonsoft.Json;
8
- using Microsoft.AspNetCore.Mvc;
9
-
10
- namespace App.Controllers
11
- {
12
- [ApiController]
13
- [Route("api/[controller]")]
14
- public class DataController : ControllerBase
15
- {
16
- [HttpPost("load")]
17
- public IActionResult Load([FromBody] string json)
18
- {
19
- // Vulnerable: TypeNameHandling.All allows attacker to specify arbitrary type
20
- var settings = new JsonSerializerSettings
21
- {
22
- TypeNameHandling = TypeNameHandling.All
23
- };
24
- object result = JsonConvert.DeserializeObject(json, settings);
25
- return Ok(result?.GetType().Name);
26
- }
27
- }
28
- }
1
+ // [CRUCIBLE-SEED]
2
+ // category: deserialization
3
+ // severity: critical
4
+ // language: csharp
5
+ // expected: Unsafe deserialization via JsonConvert with TypeNameHandling.All on user input
6
+
7
+ using Newtonsoft.Json;
8
+ using Microsoft.AspNetCore.Mvc;
9
+
10
+ namespace App.Controllers
11
+ {
12
+ [ApiController]
13
+ [Route("api/[controller]")]
14
+ public class DataController : ControllerBase
15
+ {
16
+ [HttpPost("load")]
17
+ public IActionResult Load([FromBody] string json)
18
+ {
19
+ // Vulnerable: TypeNameHandling.All allows attacker to specify arbitrary type
20
+ var settings = new JsonSerializerSettings
21
+ {
22
+ TypeNameHandling = TypeNameHandling.All
23
+ };
24
+ object result = JsonConvert.DeserializeObject(json, settings);
25
+ return Ok(result?.GetType().Name);
26
+ }
27
+ }
28
+ }
@@ -1,33 +1,33 @@
1
- // [CRUCIBLE-SEED]
2
- // category: deserialization
3
- // severity: critical
4
- // language: csharp
5
- // expected: Unsafe deserialization via BinaryFormatter on Base64-decoded cookie value
6
-
7
- using System;
8
- using System.IO;
9
- using System.Runtime.Serialization.Formatters.Binary;
10
- using Microsoft.AspNetCore.Mvc;
11
-
12
- namespace App.Controllers
13
- {
14
- [ApiController]
15
- [Route("api/[controller]")]
16
- public class AuthController : ControllerBase
17
- {
18
- [HttpGet("me")]
19
- public IActionResult GetCurrentUser()
20
- {
21
- string cookie = Request.Cookies["session"];
22
- if (cookie == null) return Unauthorized();
23
-
24
- byte[] data = Convert.FromBase64String(cookie);
25
- // Vulnerable: attacker-crafted cookie triggers gadget chain
26
- var formatter = new BinaryFormatter();
27
- #pragma warning disable SYSLIB0011
28
- object principal = formatter.Deserialize(new MemoryStream(data));
29
- #pragma warning restore SYSLIB0011
30
- return Ok(principal.ToString());
31
- }
32
- }
33
- }
1
+ // [CRUCIBLE-SEED]
2
+ // category: deserialization
3
+ // severity: critical
4
+ // language: csharp
5
+ // expected: Unsafe deserialization via BinaryFormatter on Base64-decoded cookie value
6
+
7
+ using System;
8
+ using System.IO;
9
+ using System.Runtime.Serialization.Formatters.Binary;
10
+ using Microsoft.AspNetCore.Mvc;
11
+
12
+ namespace App.Controllers
13
+ {
14
+ [ApiController]
15
+ [Route("api/[controller]")]
16
+ public class AuthController : ControllerBase
17
+ {
18
+ [HttpGet("me")]
19
+ public IActionResult GetCurrentUser()
20
+ {
21
+ string cookie = Request.Cookies["session"];
22
+ if (cookie == null) return Unauthorized();
23
+
24
+ byte[] data = Convert.FromBase64String(cookie);
25
+ // Vulnerable: attacker-crafted cookie triggers gadget chain
26
+ var formatter = new BinaryFormatter();
27
+ #pragma warning disable SYSLIB0011
28
+ object principal = formatter.Deserialize(new MemoryStream(data));
29
+ #pragma warning restore SYSLIB0011
30
+ return Ok(principal.ToString());
31
+ }
32
+ }
33
+ }