thuban 0.4.2 → 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.
- package/LICENSE +21 -21
- package/README.md +355 -122
- package/dist/LICENSE +21 -21
- package/dist/README.md +355 -122
- package/dist/cli.js +2 -1
- package/dist/package.json +62 -63
- package/dist/packages/crucible/.golden/golden-master.json +413 -413
- package/dist/packages/crucible/banner.js +1 -1
- package/dist/packages/crucible/rule-loader.js +1 -1
- package/dist/packages/crucible/rules/code-scanner-core.json +233 -129
- package/dist/packages/crucible/rules/command-injection.json +411 -411
- package/dist/packages/crucible/rules/crypto-misuse.json +35 -35
- package/dist/packages/crucible/rules/deserialization.json +152 -152
- package/dist/packages/crucible/rules/env-injection.json +46 -46
- package/dist/packages/crucible/rules/eval-abuse.json +104 -104
- package/dist/packages/crucible/rules/file-upload.json +46 -46
- package/dist/packages/crucible/rules/hallucination.json +22 -22
- package/dist/packages/crucible/rules/hardcoded-secret.json +397 -397
- package/dist/packages/crucible/rules/hardcoded-url.json +13 -13
- package/dist/packages/crucible/rules/insecure-crypto.json +302 -302
- package/dist/packages/crucible/rules/integer-overflow.json +35 -35
- package/dist/packages/crucible/rules/log-injection.json +33 -33
- package/dist/packages/crucible/rules/mass-assignment.json +112 -112
- package/dist/packages/crucible/rules/open-redirect.json +196 -196
- package/dist/packages/crucible/rules/path-traversal.json +422 -422
- package/dist/packages/crucible/rules/prototype-pollution.json +22 -22
- package/dist/packages/crucible/rules/sql-injection.json +619 -597
- package/dist/packages/crucible/rules/ssrf.json +557 -557
- package/dist/packages/crucible/rules/timing-attack.json +55 -55
- package/dist/packages/crucible/rules/unsafe-block.json +24 -24
- package/dist/packages/crucible/rules/xss.json +663 -641
- package/dist/packages/crucible/rules/xxe.json +66 -66
- package/dist/packages/crucible/rules/yaml-deserialization.json +22 -22
- package/dist/packages/crucible/rules/yaml-injection.json +22 -22
- package/dist/packages/crucible/seeds/csharp/seed-001.cs +28 -28
- package/dist/packages/crucible/seeds/csharp/seed-002.cs +24 -24
- package/dist/packages/crucible/seeds/csharp/seed-003.cs +30 -30
- package/dist/packages/crucible/seeds/csharp/seed-004.cs +31 -31
- package/dist/packages/crucible/seeds/csharp/seed-005.cs +28 -28
- package/dist/packages/crucible/seeds/csharp/seed-006.cs +25 -25
- package/dist/packages/crucible/seeds/csharp/seed-007.cs +34 -34
- package/dist/packages/crucible/seeds/csharp/seed-008.cs +23 -23
- package/dist/packages/crucible/seeds/csharp/seed-009.cs +27 -27
- package/dist/packages/crucible/seeds/csharp/seed-010.cs +29 -29
- package/dist/packages/crucible/seeds/csharp/seed-011.cs +32 -32
- package/dist/packages/crucible/seeds/csharp/seed-012.cs +27 -27
- package/dist/packages/crucible/seeds/csharp/seed-013.cs +27 -27
- package/dist/packages/crucible/seeds/csharp/seed-014.cs +26 -26
- package/dist/packages/crucible/seeds/csharp/seed-015.cs +33 -33
- package/dist/packages/crucible/seeds/csharp/seed-016.cs +25 -25
- package/dist/packages/crucible/seeds/csharp/seed-017.cs +22 -22
- package/dist/packages/crucible/seeds/csharp/seed-018.cs +26 -26
- package/dist/packages/crucible/seeds/csharp/seed-019.cs +25 -25
- package/dist/packages/crucible/seeds/csharp/seed-020.cs +22 -22
- package/dist/packages/crucible/seeds/csharp/seed-021.cs +28 -28
- package/dist/packages/crucible/seeds/csharp/seed-022.cs +25 -25
- package/dist/packages/crucible/seeds/csharp/seed-023.cs +33 -33
- package/dist/packages/crucible/seeds/csharp/seed-024.cs +31 -31
- package/dist/packages/crucible/seeds/csharp/seed-025.cs +31 -31
- package/dist/packages/crucible/seeds/csharp/seed-026.cs +25 -25
- package/dist/packages/crucible/seeds/csharp/seed-027.cs +29 -29
- package/dist/packages/crucible/seeds/csharp/seed-028.cs +25 -25
- package/dist/packages/crucible/seeds/csharp/seed-029.cs +27 -27
- package/dist/packages/crucible/seeds/csharp/seed-030.cs +27 -27
- package/dist/packages/crucible/seeds/csharp/seed-031.cs +28 -28
- package/dist/packages/crucible/seeds/csharp/seed-032.cs +30 -30
- package/dist/packages/crucible/seeds/csharp/seed-033.cs +27 -27
- package/dist/packages/crucible/seeds/csharp/seed-034.cs +25 -25
- package/dist/packages/crucible/seeds/csharp/seed-035.cs +32 -32
- package/dist/packages/crucible/seeds/csharp/seed-036.cs +28 -28
- package/dist/packages/crucible/seeds/csharp/seed-037.cs +29 -29
- package/dist/packages/crucible/seeds/csharp/seed-038.cs +28 -28
- package/dist/packages/crucible/seeds/csharp/seed-039.cs +29 -29
- package/dist/packages/crucible/seeds/csharp/seed-040.cs +28 -28
- package/dist/packages/crucible/seeds/csharp/seed-041.cs +33 -33
- package/dist/packages/crucible/seeds/csharp/seed-042.cs +27 -27
- package/dist/packages/crucible/seeds/csharp/seed-043.cs +27 -27
- package/dist/packages/crucible/seeds/csharp/seed-044.cs +25 -25
- package/dist/packages/crucible/seeds/csharp/seed-045.cs +30 -30
- package/dist/packages/crucible/seeds/csharp/seed-046.cs +29 -29
- package/dist/packages/crucible/seeds/csharp/seed-047.cs +26 -26
- package/dist/packages/crucible/seeds/csharp/seed-048.cs +31 -31
- package/dist/packages/crucible/seeds/csharp/seed-049.cs +27 -27
- package/dist/packages/crucible/seeds/csharp/seed-050.cs +30 -30
- package/dist/packages/crucible/seeds/csharp/seed-051.cs +34 -34
- package/dist/packages/crucible/seeds/csharp/seed-052.cs +36 -36
- package/dist/packages/crucible/seeds/go/seed-001.go +29 -29
- package/dist/packages/crucible/seeds/go/seed-002.go +27 -27
- package/dist/packages/crucible/seeds/go/seed-003.go +31 -31
- package/dist/packages/crucible/seeds/go/seed-004.go +27 -27
- package/dist/packages/crucible/seeds/go/seed-005.go +27 -27
- package/dist/packages/crucible/seeds/go/seed-006.go +29 -29
- package/dist/packages/crucible/seeds/go/seed-007.go +24 -24
- package/dist/packages/crucible/seeds/go/seed-008.go +25 -25
- package/dist/packages/crucible/seeds/go/seed-009.go +30 -30
- package/dist/packages/crucible/seeds/go/seed-010.go +35 -35
- package/dist/packages/crucible/seeds/go/seed-011.go +24 -24
- package/dist/packages/crucible/seeds/go/seed-012.go +24 -24
- package/dist/packages/crucible/seeds/go/seed-013.go +31 -31
- package/dist/packages/crucible/seeds/go/seed-014.go +35 -35
- package/dist/packages/crucible/seeds/go/seed-015.go +25 -25
- package/dist/packages/crucible/seeds/go/seed-016.go +19 -19
- package/dist/packages/crucible/seeds/go/seed-017.go +23 -23
- package/dist/packages/crucible/seeds/go/seed-018.go +23 -23
- package/dist/packages/crucible/seeds/go/seed-019.go +22 -22
- package/dist/packages/crucible/seeds/go/seed-020.go +31 -31
- package/dist/packages/crucible/seeds/go/seed-021.go +22 -22
- package/dist/packages/crucible/seeds/go/seed-022.go +29 -29
- package/dist/packages/crucible/seeds/go/seed-023.go +26 -26
- package/dist/packages/crucible/seeds/go/seed-024.go +27 -27
- package/dist/packages/crucible/seeds/go/seed-025.go +23 -23
- package/dist/packages/crucible/seeds/go/seed-026.go +29 -29
- package/dist/packages/crucible/seeds/go/seed-027.go +26 -26
- package/dist/packages/crucible/seeds/go/seed-028.go +23 -23
- package/dist/packages/crucible/seeds/go/seed-029.go +28 -28
- package/dist/packages/crucible/seeds/go/seed-030.go +27 -27
- package/dist/packages/crucible/seeds/go/seed-031.go +28 -28
- package/dist/packages/crucible/seeds/go/seed-032.go +27 -27
- package/dist/packages/crucible/seeds/go/seed-033.go +29 -29
- package/dist/packages/crucible/seeds/go/seed-034.go +22 -22
- package/dist/packages/crucible/seeds/go/seed-035.go +32 -32
- package/dist/packages/crucible/seeds/go/seed-036.go +27 -27
- package/dist/packages/crucible/seeds/go/seed-037.go +27 -27
- package/dist/packages/crucible/seeds/go/seed-038.go +27 -27
- package/dist/packages/crucible/seeds/go/seed-039.go +26 -26
- package/dist/packages/crucible/seeds/go/seed-040.go +37 -37
- package/dist/packages/crucible/seeds/go/seed-041.go +23 -23
- package/dist/packages/crucible/seeds/go/seed-042.go +32 -32
- package/dist/packages/crucible/seeds/go/seed-043.go +35 -35
- package/dist/packages/crucible/seeds/go/seed-044.go +25 -25
- package/dist/packages/crucible/seeds/go/seed-045.go +26 -26
- package/dist/packages/crucible/seeds/go/seed-046.go +34 -34
- package/dist/packages/crucible/seeds/go/seed-047.go +26 -26
- package/dist/packages/crucible/seeds/go/seed-048.go +29 -29
- package/dist/packages/crucible/seeds/go/seed-049.go +24 -24
- package/dist/packages/crucible/seeds/go/seed-050.go +27 -27
- package/dist/packages/crucible/seeds/go/seed-051.go +38 -38
- package/dist/packages/crucible/seeds/go/seed-052.go +27 -27
- package/dist/packages/crucible/seeds/java/seed-001.java +23 -23
- package/dist/packages/crucible/seeds/java/seed-002.java +22 -22
- package/dist/packages/crucible/seeds/java/seed-003.java +28 -28
- package/dist/packages/crucible/seeds/java/seed-004.java +26 -26
- package/dist/packages/crucible/seeds/java/seed-005.java +33 -33
- package/dist/packages/crucible/seeds/java/seed-006.java +22 -22
- package/dist/packages/crucible/seeds/java/seed-007.java +21 -21
- package/dist/packages/crucible/seeds/java/seed-008.java +29 -29
- package/dist/packages/crucible/seeds/java/seed-009.java +24 -24
- package/dist/packages/crucible/seeds/java/seed-010.java +30 -30
- package/dist/packages/crucible/seeds/java/seed-011.java +25 -25
- package/dist/packages/crucible/seeds/java/seed-012.java +20 -20
- package/dist/packages/crucible/seeds/java/seed-013.java +26 -26
- package/dist/packages/crucible/seeds/java/seed-014.java +23 -23
- package/dist/packages/crucible/seeds/java/seed-015.java +25 -25
- package/dist/packages/crucible/seeds/java/seed-016.java +22 -22
- package/dist/packages/crucible/seeds/java/seed-017.java +24 -24
- package/dist/packages/crucible/seeds/java/seed-018.java +24 -24
- package/dist/packages/crucible/seeds/java/seed-019.java +38 -38
- package/dist/packages/crucible/seeds/java/seed-020.java +24 -24
- package/dist/packages/crucible/seeds/java/seed-021.java +22 -22
- package/dist/packages/crucible/seeds/java/seed-022.java +22 -22
- package/dist/packages/crucible/seeds/java/seed-023.java +22 -22
- package/dist/packages/crucible/seeds/java/seed-024.java +25 -25
- package/dist/packages/crucible/seeds/java/seed-025.java +27 -27
- package/dist/packages/crucible/seeds/java/seed-026.java +25 -25
- package/dist/packages/crucible/seeds/java/seed-027.java +22 -22
- package/dist/packages/crucible/seeds/java/seed-028.java +21 -21
- package/dist/packages/crucible/seeds/java/seed-029.java +28 -28
- package/dist/packages/crucible/seeds/java/seed-030.java +27 -27
- package/dist/packages/crucible/seeds/java/seed-031.java +23 -23
- package/dist/packages/crucible/seeds/java/seed-032.java +22 -22
- package/dist/packages/crucible/seeds/java/seed-033.java +24 -24
- package/dist/packages/crucible/seeds/java/seed-034.java +24 -24
- package/dist/packages/crucible/seeds/java/seed-035.java +29 -29
- package/dist/packages/crucible/seeds/java/seed-036.java +25 -25
- package/dist/packages/crucible/seeds/java/seed-037.java +30 -30
- package/dist/packages/crucible/seeds/java/seed-038.java +29 -29
- package/dist/packages/crucible/seeds/java/seed-039.java +26 -26
- package/dist/packages/crucible/seeds/java/seed-040.java +31 -31
- package/dist/packages/crucible/seeds/java/seed-041.java +20 -20
- package/dist/packages/crucible/seeds/java/seed-042.java +26 -26
- package/dist/packages/crucible/seeds/java/seed-043.java +31 -31
- package/dist/packages/crucible/seeds/java/seed-044.java +22 -22
- package/dist/packages/crucible/seeds/java/seed-045.java +25 -25
- package/dist/packages/crucible/seeds/java/seed-046.java +22 -22
- package/dist/packages/crucible/seeds/java/seed-047.java +26 -26
- package/dist/packages/crucible/seeds/java/seed-048.java +24 -24
- package/dist/packages/crucible/seeds/java/seed-049.java +28 -28
- package/dist/packages/crucible/seeds/java/seed-050.java +29 -29
- package/dist/packages/crucible/seeds/java/seed-051.java +25 -25
- package/dist/packages/crucible/seeds/java/seed-052.java +32 -32
- package/dist/packages/crucible/seeds/js/seed-001.js +27 -27
- package/dist/packages/crucible/seeds/js/seed-002.js +28 -28
- package/dist/packages/crucible/seeds/js/seed-003.js +30 -30
- package/dist/packages/crucible/seeds/js/seed-004.js +28 -28
- package/dist/packages/crucible/seeds/js/seed-005.js +31 -31
- package/dist/packages/crucible/seeds/js/seed-006.js +28 -28
- package/dist/packages/crucible/seeds/js/seed-007.js +26 -26
- package/dist/packages/crucible/seeds/js/seed-008.js +30 -30
- package/dist/packages/crucible/seeds/js/seed-009.js +30 -30
- package/dist/packages/crucible/seeds/js/seed-010.js +29 -29
- package/dist/packages/crucible/seeds/js/seed-011.js +34 -34
- package/dist/packages/crucible/seeds/js/seed-012.js +32 -32
- package/dist/packages/crucible/seeds/js/seed-013.js +29 -29
- package/dist/packages/crucible/seeds/js/seed-014.js +29 -29
- package/dist/packages/crucible/seeds/js/seed-015.js +31 -31
- package/dist/packages/crucible/seeds/js/seed-016.js +31 -31
- package/dist/packages/crucible/seeds/js/seed-017.js +30 -30
- package/dist/packages/crucible/seeds/js/seed-018.js +29 -29
- package/dist/packages/crucible/seeds/js/seed-019.js +32 -32
- package/dist/packages/crucible/seeds/js/seed-020.js +29 -29
- package/dist/packages/crucible/seeds/js/seed-021.js +31 -31
- package/dist/packages/crucible/seeds/js/seed-022.js +31 -31
- package/dist/packages/crucible/seeds/js/seed-023.js +29 -29
- package/dist/packages/crucible/seeds/js/seed-024.js +29 -29
- package/dist/packages/crucible/seeds/js/seed-025.js +34 -34
- package/dist/packages/crucible/seeds/js/seed-026.js +31 -31
- package/dist/packages/crucible/seeds/js/seed-027.js +31 -31
- package/dist/packages/crucible/seeds/js/seed-028.js +33 -33
- package/dist/packages/crucible/seeds/js/seed-029.js +33 -33
- package/dist/packages/crucible/seeds/js/seed-030.js +30 -30
- package/dist/packages/crucible/seeds/js/seed-031.js +31 -31
- package/dist/packages/crucible/seeds/js/seed-032.js +34 -34
- package/dist/packages/crucible/seeds/js/seed-033.js +33 -33
- package/dist/packages/crucible/seeds/js/seed-034.js +33 -33
- package/dist/packages/crucible/seeds/js/seed-035.js +30 -30
- package/dist/packages/crucible/seeds/js/seed-036.js +30 -30
- package/dist/packages/crucible/seeds/js/seed-037.js +29 -29
- package/dist/packages/crucible/seeds/js/seed-038.js +31 -31
- package/dist/packages/crucible/seeds/js/seed-039.js +34 -34
- package/dist/packages/crucible/seeds/js/seed-040.js +35 -35
- package/dist/packages/crucible/seeds/js/seed-041.js +32 -32
- package/dist/packages/crucible/seeds/js/seed-042.js +32 -32
- package/dist/packages/crucible/seeds/js/seed-043.js +27 -27
- package/dist/packages/crucible/seeds/js/seed-044.js +29 -29
- package/dist/packages/crucible/seeds/js/seed-045.js +33 -33
- package/dist/packages/crucible/seeds/js/seed-046.js +33 -33
- package/dist/packages/crucible/seeds/js/seed-047.js +29 -29
- package/dist/packages/crucible/seeds/js/seed-048.js +29 -29
- package/dist/packages/crucible/seeds/js/seed-049.js +34 -34
- package/dist/packages/crucible/seeds/js/seed-050.js +34 -34
- package/dist/packages/crucible/seeds/js/seed-051.js +30 -30
- package/dist/packages/crucible/seeds/js/seed-052.js +30 -30
- package/dist/packages/crucible/seeds/js/seed-053.js +26 -26
- package/dist/packages/crucible/seeds/js/seed-054.js +35 -35
- package/dist/packages/crucible/seeds/js/seed-055.js +33 -33
- package/dist/packages/crucible/seeds/kotlin/seed-001.kt +24 -24
- package/dist/packages/crucible/seeds/kotlin/seed-002.kt +27 -27
- package/dist/packages/crucible/seeds/kotlin/seed-003.kt +29 -29
- package/dist/packages/crucible/seeds/kotlin/seed-004.kt +24 -24
- package/dist/packages/crucible/seeds/kotlin/seed-005.kt +29 -29
- package/dist/packages/crucible/seeds/kotlin/seed-006.kt +21 -21
- package/dist/packages/crucible/seeds/kotlin/seed-007.kt +23 -23
- package/dist/packages/crucible/seeds/kotlin/seed-008.kt +25 -25
- package/dist/packages/crucible/seeds/kotlin/seed-009.kt +21 -21
- package/dist/packages/crucible/seeds/kotlin/seed-010.kt +28 -28
- package/dist/packages/crucible/seeds/kotlin/seed-011.kt +22 -22
- package/dist/packages/crucible/seeds/kotlin/seed-012.kt +25 -25
- package/dist/packages/crucible/seeds/kotlin/seed-013.kt +30 -30
- package/dist/packages/crucible/seeds/kotlin/seed-014.kt +27 -27
- package/dist/packages/crucible/seeds/kotlin/seed-015.kt +24 -24
- package/dist/packages/crucible/seeds/kotlin/seed-016.kt +28 -28
- package/dist/packages/crucible/seeds/kotlin/seed-017.kt +33 -33
- package/dist/packages/crucible/seeds/kotlin/seed-018.kt +31 -31
- package/dist/packages/crucible/seeds/kotlin/seed-019.kt +28 -28
- package/dist/packages/crucible/seeds/kotlin/seed-020.kt +31 -31
- package/dist/packages/crucible/seeds/kotlin/seed-021.kt +34 -34
- package/dist/packages/crucible/seeds/kotlin/seed-022.kt +29 -29
- package/dist/packages/crucible/seeds/kotlin/seed-023.kt +20 -20
- package/dist/packages/crucible/seeds/kotlin/seed-024.kt +23 -23
- package/dist/packages/crucible/seeds/kotlin/seed-025.kt +23 -23
- package/dist/packages/crucible/seeds/kotlin/seed-026.kt +26 -26
- package/dist/packages/crucible/seeds/kotlin/seed-027.kt +29 -29
- package/dist/packages/crucible/seeds/kotlin/seed-028.kt +24 -24
- package/dist/packages/crucible/seeds/kotlin/seed-029.kt +27 -27
- package/dist/packages/crucible/seeds/kotlin/seed-030.kt +26 -26
- package/dist/packages/crucible/seeds/kotlin/seed-031.kt +28 -28
- package/dist/packages/crucible/seeds/kotlin/seed-032.kt +29 -29
- package/dist/packages/crucible/seeds/kotlin/seed-033.kt +30 -30
- package/dist/packages/crucible/seeds/kotlin/seed-034.kt +26 -26
- package/dist/packages/crucible/seeds/kotlin/seed-035.kt +33 -33
- package/dist/packages/crucible/seeds/kotlin/seed-036.kt +25 -25
- package/dist/packages/crucible/seeds/kotlin/seed-037.kt +26 -26
- package/dist/packages/crucible/seeds/kotlin/seed-038.kt +25 -25
- package/dist/packages/crucible/seeds/kotlin/seed-039.kt +29 -29
- package/dist/packages/crucible/seeds/kotlin/seed-040.kt +28 -28
- package/dist/packages/crucible/seeds/kotlin/seed-041.kt +31 -31
- package/dist/packages/crucible/seeds/kotlin/seed-042.kt +27 -27
- package/dist/packages/crucible/seeds/kotlin/seed-043.kt +26 -26
- package/dist/packages/crucible/seeds/kotlin/seed-044.kt +27 -27
- package/dist/packages/crucible/seeds/kotlin/seed-045.kt +27 -27
- package/dist/packages/crucible/seeds/kotlin/seed-046.kt +33 -33
- package/dist/packages/crucible/seeds/kotlin/seed-047.kt +32 -32
- package/dist/packages/crucible/seeds/kotlin/seed-048.kt +20 -20
- package/dist/packages/crucible/seeds/kotlin/seed-049.kt +23 -23
- package/dist/packages/crucible/seeds/kotlin/seed-050.kt +19 -19
- package/dist/packages/crucible/seeds/php/seed-001.php +23 -23
- package/dist/packages/crucible/seeds/php/seed-002.php +18 -18
- package/dist/packages/crucible/seeds/php/seed-003.php +25 -25
- package/dist/packages/crucible/seeds/php/seed-004.php +21 -21
- package/dist/packages/crucible/seeds/php/seed-005.php +21 -21
- package/dist/packages/crucible/seeds/php/seed-006.php +21 -21
- package/dist/packages/crucible/seeds/php/seed-007.php +18 -18
- package/dist/packages/crucible/seeds/php/seed-008.php +19 -19
- package/dist/packages/crucible/seeds/php/seed-009.php +24 -24
- package/dist/packages/crucible/seeds/php/seed-010.php +24 -24
- package/dist/packages/crucible/seeds/php/seed-011.php +18 -18
- package/dist/packages/crucible/seeds/php/seed-012.php +24 -24
- package/dist/packages/crucible/seeds/php/seed-013.php +23 -23
- package/dist/packages/crucible/seeds/php/seed-014.php +20 -20
- package/dist/packages/crucible/seeds/php/seed-015.php +18 -18
- package/dist/packages/crucible/seeds/php/seed-016.php +18 -18
- package/dist/packages/crucible/seeds/php/seed-017.php +18 -18
- package/dist/packages/crucible/seeds/php/seed-018.php +17 -17
- package/dist/packages/crucible/seeds/php/seed-019.php +24 -24
- package/dist/packages/crucible/seeds/php/seed-020.php +19 -19
- package/dist/packages/crucible/seeds/php/seed-021.php +22 -22
- package/dist/packages/crucible/seeds/php/seed-022.php +15 -15
- package/dist/packages/crucible/seeds/php/seed-023.php +24 -24
- package/dist/packages/crucible/seeds/php/seed-024.php +22 -22
- package/dist/packages/crucible/seeds/php/seed-025.php +20 -20
- package/dist/packages/crucible/seeds/php/seed-026.php +22 -22
- package/dist/packages/crucible/seeds/php/seed-027.php +15 -15
- package/dist/packages/crucible/seeds/php/seed-028.php +15 -15
- package/dist/packages/crucible/seeds/php/seed-029.php +21 -21
- package/dist/packages/crucible/seeds/php/seed-030.php +21 -21
- package/dist/packages/crucible/seeds/php/seed-031.php +23 -23
- package/dist/packages/crucible/seeds/php/seed-032.php +18 -18
- package/dist/packages/crucible/seeds/php/seed-033.php +18 -18
- package/dist/packages/crucible/seeds/php/seed-034.php +24 -24
- package/dist/packages/crucible/seeds/php/seed-035.php +22 -22
- package/dist/packages/crucible/seeds/php/seed-036.php +17 -17
- package/dist/packages/crucible/seeds/php/seed-037.php +19 -19
- package/dist/packages/crucible/seeds/php/seed-038.php +20 -20
- package/dist/packages/crucible/seeds/php/seed-039.php +15 -15
- package/dist/packages/crucible/seeds/php/seed-040.php +21 -21
- package/dist/packages/crucible/seeds/php/seed-041.php +20 -20
- package/dist/packages/crucible/seeds/php/seed-042.php +21 -21
- package/dist/packages/crucible/seeds/php/seed-043.php +21 -21
- package/dist/packages/crucible/seeds/php/seed-044.php +25 -25
- package/dist/packages/crucible/seeds/php/seed-045.php +25 -25
- package/dist/packages/crucible/seeds/php/seed-046.php +20 -20
- package/dist/packages/crucible/seeds/php/seed-047.php +21 -21
- package/dist/packages/crucible/seeds/php/seed-048.php +19 -19
- package/dist/packages/crucible/seeds/php/seed-049.php +18 -18
- package/dist/packages/crucible/seeds/php/seed-050.php +20 -20
- package/dist/packages/crucible/seeds/python/seed-001.py +33 -33
- package/dist/packages/crucible/seeds/python/seed-002.py +39 -39
- package/dist/packages/crucible/seeds/python/seed-003.py +31 -31
- package/dist/packages/crucible/seeds/python/seed-004.py +33 -33
- package/dist/packages/crucible/seeds/python/seed-005.py +33 -33
- package/dist/packages/crucible/seeds/python/seed-006.py +34 -34
- package/dist/packages/crucible/seeds/python/seed-007.py +33 -33
- package/dist/packages/crucible/seeds/python/seed-008.py +38 -38
- package/dist/packages/crucible/seeds/python/seed-009.py +38 -38
- package/dist/packages/crucible/seeds/python/seed-010.py +42 -42
- package/dist/packages/crucible/seeds/python/seed-011.py +30 -30
- package/dist/packages/crucible/seeds/python/seed-012.py +35 -35
- package/dist/packages/crucible/seeds/python/seed-013.py +33 -33
- package/dist/packages/crucible/seeds/python/seed-014.py +40 -40
- package/dist/packages/crucible/seeds/python/seed-015.py +33 -33
- package/dist/packages/crucible/seeds/python/seed-016.py +34 -34
- package/dist/packages/crucible/seeds/python/seed-017.py +34 -34
- package/dist/packages/crucible/seeds/python/seed-018.py +30 -30
- package/dist/packages/crucible/seeds/python/seed-019.py +33 -33
- package/dist/packages/crucible/seeds/python/seed-020.py +37 -37
- package/dist/packages/crucible/seeds/python/seed-021 2.py +37 -37
- package/dist/packages/crucible/seeds/python/seed-021.py +37 -37
- package/dist/packages/crucible/seeds/python/seed-022 2.py +34 -34
- package/dist/packages/crucible/seeds/python/seed-022.py +34 -34
- package/dist/packages/crucible/seeds/python/seed-023 2.py +37 -37
- package/dist/packages/crucible/seeds/python/seed-023.py +37 -37
- package/dist/packages/crucible/seeds/python/seed-024 2.py +38 -38
- package/dist/packages/crucible/seeds/python/seed-024.py +38 -38
- package/dist/packages/crucible/seeds/python/seed-025 2.py +40 -40
- package/dist/packages/crucible/seeds/python/seed-025.py +40 -40
- package/dist/packages/crucible/seeds/python/seed-026 2.py +35 -35
- package/dist/packages/crucible/seeds/python/seed-026.py +35 -35
- package/dist/packages/crucible/seeds/python/seed-027 2.py +35 -35
- package/dist/packages/crucible/seeds/python/seed-027.py +35 -35
- package/dist/packages/crucible/seeds/python/seed-028 2.py +42 -42
- package/dist/packages/crucible/seeds/python/seed-028.py +42 -42
- package/dist/packages/crucible/seeds/python/seed-029.py +42 -42
- package/dist/packages/crucible/seeds/python/seed-030 2.py +37 -37
- package/dist/packages/crucible/seeds/python/seed-030.py +37 -37
- package/dist/packages/crucible/seeds/python/seed-031 2.py +34 -34
- package/dist/packages/crucible/seeds/python/seed-031.py +34 -34
- package/dist/packages/crucible/seeds/python/seed-032.py +33 -33
- package/dist/packages/crucible/seeds/python/seed-033.py +32 -32
- package/dist/packages/crucible/seeds/python/seed-034.py +38 -38
- package/dist/packages/crucible/seeds/python/seed-035.py +35 -35
- package/dist/packages/crucible/seeds/python/seed-036 2.py +33 -33
- package/dist/packages/crucible/seeds/python/seed-036.py +33 -33
- package/dist/packages/crucible/seeds/python/seed-037 2.py +41 -41
- package/dist/packages/crucible/seeds/python/seed-037.py +41 -41
- package/dist/packages/crucible/seeds/python/seed-038 2.py +33 -33
- package/dist/packages/crucible/seeds/python/seed-038.py +33 -33
- package/dist/packages/crucible/seeds/python/seed-039 2.py +39 -39
- package/dist/packages/crucible/seeds/python/seed-039.py +39 -39
- package/dist/packages/crucible/seeds/python/seed-040 2.py +39 -39
- package/dist/packages/crucible/seeds/python/seed-040.py +39 -39
- package/dist/packages/crucible/seeds/python/seed-041 2.py +37 -37
- package/dist/packages/crucible/seeds/python/seed-041.py +37 -37
- package/dist/packages/crucible/seeds/python/seed-042 2.py +38 -38
- package/dist/packages/crucible/seeds/python/seed-042.py +38 -38
- package/dist/packages/crucible/seeds/python/seed-043 2.py +32 -32
- package/dist/packages/crucible/seeds/python/seed-043.py +32 -32
- package/dist/packages/crucible/seeds/python/seed-044 2.py +38 -38
- package/dist/packages/crucible/seeds/python/seed-044.py +38 -38
- package/dist/packages/crucible/seeds/python/seed-045 2.py +36 -36
- package/dist/packages/crucible/seeds/python/seed-045.py +36 -36
- package/dist/packages/crucible/seeds/python/seed-046 2.py +33 -33
- package/dist/packages/crucible/seeds/python/seed-046.py +33 -33
- package/dist/packages/crucible/seeds/python/seed-047 2.py +44 -44
- package/dist/packages/crucible/seeds/python/seed-047.py +44 -44
- package/dist/packages/crucible/seeds/python/seed-048 2.py +35 -35
- package/dist/packages/crucible/seeds/python/seed-048.py +35 -35
- package/dist/packages/crucible/seeds/python/seed-049 2.py +39 -39
- package/dist/packages/crucible/seeds/python/seed-049.py +39 -39
- package/dist/packages/crucible/seeds/python/seed-050 2.py +39 -39
- package/dist/packages/crucible/seeds/python/seed-050.py +39 -39
- package/dist/packages/crucible/seeds/python/seed-051 2.py +38 -38
- package/dist/packages/crucible/seeds/python/seed-051.py +38 -38
- package/dist/packages/crucible/seeds/python/seed-052 2.py +41 -41
- package/dist/packages/crucible/seeds/python/seed-052.py +41 -41
- package/dist/packages/crucible/seeds/ruby/seed-001 2.rb +15 -15
- package/dist/packages/crucible/seeds/ruby/seed-001.rb +15 -15
- package/dist/packages/crucible/seeds/ruby/seed-002 2.rb +22 -22
- package/dist/packages/crucible/seeds/ruby/seed-002.rb +22 -22
- package/dist/packages/crucible/seeds/ruby/seed-003 2.rb +25 -25
- package/dist/packages/crucible/seeds/ruby/seed-003.rb +25 -25
- package/dist/packages/crucible/seeds/ruby/seed-004 2.rb +17 -17
- package/dist/packages/crucible/seeds/ruby/seed-004.rb +17 -17
- package/dist/packages/crucible/seeds/ruby/seed-005 2.rb +21 -21
- package/dist/packages/crucible/seeds/ruby/seed-005.rb +21 -21
- package/dist/packages/crucible/seeds/ruby/seed-006 2.rb +17 -17
- package/dist/packages/crucible/seeds/ruby/seed-006.rb +17 -17
- package/dist/packages/crucible/seeds/ruby/seed-007 2.rb +16 -16
- package/dist/packages/crucible/seeds/ruby/seed-007.rb +16 -16
- package/dist/packages/crucible/seeds/ruby/seed-008 2.rb +18 -18
- package/dist/packages/crucible/seeds/ruby/seed-008.rb +18 -18
- package/dist/packages/crucible/seeds/ruby/seed-009 2.rb +20 -20
- package/dist/packages/crucible/seeds/ruby/seed-009.rb +20 -20
- package/dist/packages/crucible/seeds/ruby/seed-010 2.rb +24 -24
- package/dist/packages/crucible/seeds/ruby/seed-010.rb +24 -24
- package/dist/packages/crucible/seeds/ruby/seed-011 2.rb +21 -21
- package/dist/packages/crucible/seeds/ruby/seed-011.rb +21 -21
- package/dist/packages/crucible/seeds/ruby/seed-012 2.rb +22 -22
- package/dist/packages/crucible/seeds/ruby/seed-012.rb +22 -22
- package/dist/packages/crucible/seeds/ruby/seed-013 2.rb +21 -21
- package/dist/packages/crucible/seeds/ruby/seed-013.rb +21 -21
- package/dist/packages/crucible/seeds/ruby/seed-014 2.rb +16 -16
- package/dist/packages/crucible/seeds/ruby/seed-014.rb +16 -16
- package/dist/packages/crucible/seeds/ruby/seed-015 2.rb +18 -18
- package/dist/packages/crucible/seeds/ruby/seed-015.rb +18 -18
- package/dist/packages/crucible/seeds/ruby/seed-016 2.rb +17 -17
- package/dist/packages/crucible/seeds/ruby/seed-016.rb +17 -17
- package/dist/packages/crucible/seeds/ruby/seed-017 2.rb +25 -25
- package/dist/packages/crucible/seeds/ruby/seed-017.rb +25 -25
- package/dist/packages/crucible/seeds/ruby/seed-018 2.rb +23 -23
- package/dist/packages/crucible/seeds/ruby/seed-018.rb +23 -23
- package/dist/packages/crucible/seeds/ruby/seed-019 2.rb +20 -20
- package/dist/packages/crucible/seeds/ruby/seed-019.rb +20 -20
- package/dist/packages/crucible/seeds/ruby/seed-020 2.rb +17 -17
- package/dist/packages/crucible/seeds/ruby/seed-020.rb +17 -17
- package/dist/packages/crucible/seeds/ruby/seed-021 2.rb +20 -20
- package/dist/packages/crucible/seeds/ruby/seed-021.rb +20 -20
- package/dist/packages/crucible/seeds/ruby/seed-022 2.rb +21 -21
- package/dist/packages/crucible/seeds/ruby/seed-022.rb +21 -21
- package/dist/packages/crucible/seeds/ruby/seed-023 2.rb +19 -19
- package/dist/packages/crucible/seeds/ruby/seed-023.rb +19 -19
- package/dist/packages/crucible/seeds/ruby/seed-024 2.rb +17 -17
- package/dist/packages/crucible/seeds/ruby/seed-024.rb +17 -17
- package/dist/packages/crucible/seeds/ruby/seed-025 2.rb +17 -17
- package/dist/packages/crucible/seeds/ruby/seed-025.rb +17 -17
- package/dist/packages/crucible/seeds/ruby/seed-026 2.rb +18 -18
- package/dist/packages/crucible/seeds/ruby/seed-026.rb +18 -18
- package/dist/packages/crucible/seeds/ruby/seed-027 2.rb +21 -21
- package/dist/packages/crucible/seeds/ruby/seed-027.rb +21 -21
- package/dist/packages/crucible/seeds/ruby/seed-028 2.rb +22 -22
- package/dist/packages/crucible/seeds/ruby/seed-028.rb +22 -22
- package/dist/packages/crucible/seeds/ruby/seed-029 2.rb +19 -19
- package/dist/packages/crucible/seeds/ruby/seed-029.rb +19 -19
- package/dist/packages/crucible/seeds/ruby/seed-030 2.rb +20 -20
- package/dist/packages/crucible/seeds/ruby/seed-030.rb +20 -20
- package/dist/packages/crucible/seeds/ruby/seed-031 2.rb +17 -17
- package/dist/packages/crucible/seeds/ruby/seed-031.rb +17 -17
- package/dist/packages/crucible/seeds/ruby/seed-032 2.rb +22 -22
- package/dist/packages/crucible/seeds/ruby/seed-032.rb +22 -22
- package/dist/packages/crucible/seeds/ruby/seed-033 2.rb +18 -18
- package/dist/packages/crucible/seeds/ruby/seed-033.rb +18 -18
- package/dist/packages/crucible/seeds/ruby/seed-034 2.rb +19 -19
- package/dist/packages/crucible/seeds/ruby/seed-034.rb +19 -19
- package/dist/packages/crucible/seeds/ruby/seed-035 2.rb +19 -19
- package/dist/packages/crucible/seeds/ruby/seed-035.rb +19 -19
- package/dist/packages/crucible/seeds/ruby/seed-036 2.rb +18 -18
- package/dist/packages/crucible/seeds/ruby/seed-036.rb +18 -18
- package/dist/packages/crucible/seeds/ruby/seed-037 2.rb +21 -21
- package/dist/packages/crucible/seeds/ruby/seed-037.rb +21 -21
- package/dist/packages/crucible/seeds/ruby/seed-038 2.rb +24 -24
- package/dist/packages/crucible/seeds/ruby/seed-038.rb +24 -24
- package/dist/packages/crucible/seeds/ruby/seed-039 2.rb +24 -24
- package/dist/packages/crucible/seeds/ruby/seed-039.rb +24 -24
- package/dist/packages/crucible/seeds/ruby/seed-040 2.rb +22 -22
- package/dist/packages/crucible/seeds/ruby/seed-040.rb +22 -22
- package/dist/packages/crucible/seeds/ruby/seed-041 2.rb +23 -23
- package/dist/packages/crucible/seeds/ruby/seed-041.rb +23 -23
- package/dist/packages/crucible/seeds/ruby/seed-042 2.rb +25 -25
- package/dist/packages/crucible/seeds/ruby/seed-042.rb +25 -25
- package/dist/packages/crucible/seeds/ruby/seed-043 2.rb +23 -23
- package/dist/packages/crucible/seeds/ruby/seed-043.rb +23 -23
- package/dist/packages/crucible/seeds/ruby/seed-044 2.rb +16 -16
- package/dist/packages/crucible/seeds/ruby/seed-044.rb +16 -16
- package/dist/packages/crucible/seeds/ruby/seed-045 2.rb +22 -22
- package/dist/packages/crucible/seeds/ruby/seed-045.rb +22 -22
- package/dist/packages/crucible/seeds/ruby/seed-046 2.rb +27 -27
- package/dist/packages/crucible/seeds/ruby/seed-046.rb +27 -27
- package/dist/packages/crucible/seeds/ruby/seed-047 2.rb +26 -26
- package/dist/packages/crucible/seeds/ruby/seed-047.rb +26 -26
- package/dist/packages/crucible/seeds/ruby/seed-048 2.rb +24 -24
- package/dist/packages/crucible/seeds/ruby/seed-048.rb +24 -24
- package/dist/packages/crucible/seeds/ruby/seed-049 2.rb +20 -20
- package/dist/packages/crucible/seeds/ruby/seed-049.rb +20 -20
- package/dist/packages/crucible/seeds/ruby/seed-050 2.rb +27 -27
- package/dist/packages/crucible/seeds/ruby/seed-050.rb +27 -27
- package/dist/packages/crucible/seeds/rust/seed-001 2.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-001.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-002 2.rs +20 -20
- package/dist/packages/crucible/seeds/rust/seed-002.rs +20 -20
- package/dist/packages/crucible/seeds/rust/seed-003 2.rs +23 -23
- package/dist/packages/crucible/seeds/rust/seed-003.rs +23 -23
- package/dist/packages/crucible/seeds/rust/seed-004 2.rs +21 -21
- package/dist/packages/crucible/seeds/rust/seed-004.rs +21 -21
- package/dist/packages/crucible/seeds/rust/seed-005 2.rs +21 -21
- package/dist/packages/crucible/seeds/rust/seed-005.rs +21 -21
- package/dist/packages/crucible/seeds/rust/seed-006 2.rs +24 -24
- package/dist/packages/crucible/seeds/rust/seed-006.rs +24 -24
- package/dist/packages/crucible/seeds/rust/seed-007 2.rs +20 -20
- package/dist/packages/crucible/seeds/rust/seed-007.rs +20 -20
- package/dist/packages/crucible/seeds/rust/seed-008 2.rs +19 -19
- package/dist/packages/crucible/seeds/rust/seed-008.rs +19 -19
- package/dist/packages/crucible/seeds/rust/seed-009 2.rs +28 -28
- package/dist/packages/crucible/seeds/rust/seed-009.rs +28 -28
- package/dist/packages/crucible/seeds/rust/seed-010 2.rs +28 -28
- package/dist/packages/crucible/seeds/rust/seed-010.rs +28 -28
- package/dist/packages/crucible/seeds/rust/seed-011 2.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-011.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-012 2.rs +31 -31
- package/dist/packages/crucible/seeds/rust/seed-012.rs +31 -31
- package/dist/packages/crucible/seeds/rust/seed-013 2.rs +27 -27
- package/dist/packages/crucible/seeds/rust/seed-013.rs +27 -27
- package/dist/packages/crucible/seeds/rust/seed-014 2.rs +30 -30
- package/dist/packages/crucible/seeds/rust/seed-014.rs +30 -30
- package/dist/packages/crucible/seeds/rust/seed-015 2.rs +33 -33
- package/dist/packages/crucible/seeds/rust/seed-015.rs +33 -33
- package/dist/packages/crucible/seeds/rust/seed-016 2.rs +22 -22
- package/dist/packages/crucible/seeds/rust/seed-016.rs +22 -22
- package/dist/packages/crucible/seeds/rust/seed-017 2.rs +28 -28
- package/dist/packages/crucible/seeds/rust/seed-017.rs +28 -28
- package/dist/packages/crucible/seeds/rust/seed-018 2.rs +21 -21
- package/dist/packages/crucible/seeds/rust/seed-018.rs +21 -21
- package/dist/packages/crucible/seeds/rust/seed-019 2.rs +36 -36
- package/dist/packages/crucible/seeds/rust/seed-019.rs +36 -36
- package/dist/packages/crucible/seeds/rust/seed-020 2.rs +27 -27
- package/dist/packages/crucible/seeds/rust/seed-020.rs +27 -27
- package/dist/packages/crucible/seeds/rust/seed-021 2.rs +26 -26
- package/dist/packages/crucible/seeds/rust/seed-021.rs +26 -26
- package/dist/packages/crucible/seeds/rust/seed-022 2.rs +23 -23
- package/dist/packages/crucible/seeds/rust/seed-022.rs +23 -23
- package/dist/packages/crucible/seeds/rust/seed-023 2.rs +22 -22
- package/dist/packages/crucible/seeds/rust/seed-023.rs +22 -22
- package/dist/packages/crucible/seeds/rust/seed-024 2.rs +24 -24
- package/dist/packages/crucible/seeds/rust/seed-024.rs +24 -24
- package/dist/packages/crucible/seeds/rust/seed-025 2.rs +29 -29
- package/dist/packages/crucible/seeds/rust/seed-025.rs +29 -29
- package/dist/packages/crucible/seeds/rust/seed-026 2.rs +23 -23
- package/dist/packages/crucible/seeds/rust/seed-026.rs +23 -23
- package/dist/packages/crucible/seeds/rust/seed-027 2.rs +24 -24
- package/dist/packages/crucible/seeds/rust/seed-027.rs +24 -24
- package/dist/packages/crucible/seeds/rust/seed-028 2.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-028.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-029 2.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-029.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-030 2.rs +30 -30
- package/dist/packages/crucible/seeds/rust/seed-030.rs +30 -30
- package/dist/packages/crucible/seeds/rust/seed-031 2.rs +22 -22
- package/dist/packages/crucible/seeds/rust/seed-031.rs +22 -22
- package/dist/packages/crucible/seeds/rust/seed-032 2.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-032.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-033 2.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-033.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-034 2.rs +20 -20
- package/dist/packages/crucible/seeds/rust/seed-034.rs +20 -20
- package/dist/packages/crucible/seeds/rust/seed-035 2.rs +28 -28
- package/dist/packages/crucible/seeds/rust/seed-035.rs +28 -28
- package/dist/packages/crucible/seeds/rust/seed-036 2.rs +26 -26
- package/dist/packages/crucible/seeds/rust/seed-036.rs +26 -26
- package/dist/packages/crucible/seeds/rust/seed-037 2.rs +31 -31
- package/dist/packages/crucible/seeds/rust/seed-037.rs +31 -31
- package/dist/packages/crucible/seeds/rust/seed-038 2.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-038.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-039 2.rs +28 -28
- package/dist/packages/crucible/seeds/rust/seed-039.rs +28 -28
- package/dist/packages/crucible/seeds/rust/seed-040 2.rs +27 -27
- package/dist/packages/crucible/seeds/rust/seed-040.rs +27 -27
- package/dist/packages/crucible/seeds/rust/seed-041 2.rs +32 -32
- package/dist/packages/crucible/seeds/rust/seed-041.rs +32 -32
- package/dist/packages/crucible/seeds/rust/seed-042 2.rs +27 -27
- package/dist/packages/crucible/seeds/rust/seed-042.rs +27 -27
- package/dist/packages/crucible/seeds/rust/seed-043 2.rs +29 -29
- package/dist/packages/crucible/seeds/rust/seed-043.rs +29 -29
- package/dist/packages/crucible/seeds/rust/seed-044 2.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-044.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-045 2.rs +28 -28
- package/dist/packages/crucible/seeds/rust/seed-045.rs +28 -28
- package/dist/packages/crucible/seeds/rust/seed-046 2.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-046.rs +25 -25
- package/dist/packages/crucible/seeds/rust/seed-047 2.rs +34 -34
- package/dist/packages/crucible/seeds/rust/seed-047.rs +34 -34
- package/dist/packages/crucible/seeds/rust/seed-048 2.rs +21 -21
- package/dist/packages/crucible/seeds/rust/seed-048.rs +21 -21
- package/dist/packages/crucible/seeds/rust/seed-049 2.rs +26 -26
- package/dist/packages/crucible/seeds/rust/seed-049.rs +26 -26
- package/dist/packages/crucible/seeds/rust/seed-050 2.rs +23 -23
- package/dist/packages/crucible/seeds/rust/seed-050.rs +23 -23
- package/dist/packages/crucible/seeds/ts/seed-001 2.ts +32 -32
- package/dist/packages/crucible/seeds/ts/seed-001.ts +32 -32
- package/dist/packages/crucible/seeds/ts/seed-002 2.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-002.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-003 2.ts +28 -28
- package/dist/packages/crucible/seeds/ts/seed-003.ts +28 -28
- package/dist/packages/crucible/seeds/ts/seed-004 2.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-004.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-005 2.ts +32 -32
- package/dist/packages/crucible/seeds/ts/seed-005.ts +32 -32
- package/dist/packages/crucible/seeds/ts/seed-006 2.ts +31 -31
- package/dist/packages/crucible/seeds/ts/seed-006.ts +31 -31
- package/dist/packages/crucible/seeds/ts/seed-007 2.ts +28 -28
- package/dist/packages/crucible/seeds/ts/seed-007.ts +28 -28
- package/dist/packages/crucible/seeds/ts/seed-008 2.ts +40 -40
- package/dist/packages/crucible/seeds/ts/seed-008.ts +40 -40
- package/dist/packages/crucible/seeds/ts/seed-009 2.ts +31 -31
- package/dist/packages/crucible/seeds/ts/seed-009.ts +31 -31
- package/dist/packages/crucible/seeds/ts/seed-010 2.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-010.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-011 2.ts +29 -29
- package/dist/packages/crucible/seeds/ts/seed-011.ts +29 -29
- package/dist/packages/crucible/seeds/ts/seed-012 2.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-012.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-013 2.ts +31 -31
- package/dist/packages/crucible/seeds/ts/seed-013.ts +31 -31
- package/dist/packages/crucible/seeds/ts/seed-014 2.ts +36 -36
- package/dist/packages/crucible/seeds/ts/seed-014.ts +36 -36
- package/dist/packages/crucible/seeds/ts/seed-015 2.ts +31 -31
- package/dist/packages/crucible/seeds/ts/seed-015.ts +31 -31
- package/dist/packages/crucible/seeds/ts/seed-016 2.ts +37 -37
- package/dist/packages/crucible/seeds/ts/seed-016.ts +37 -37
- package/dist/packages/crucible/seeds/ts/seed-017 2.ts +44 -44
- package/dist/packages/crucible/seeds/ts/seed-017.ts +44 -44
- package/dist/packages/crucible/seeds/ts/seed-018 2.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-018.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-019 2.ts +32 -32
- package/dist/packages/crucible/seeds/ts/seed-019.ts +32 -32
- package/dist/packages/crucible/seeds/ts/seed-020 2.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-020.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-021 2.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-021.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-022 2.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-022.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-023 2.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-023.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-024 2.ts +35 -35
- package/dist/packages/crucible/seeds/ts/seed-024.ts +35 -35
- package/dist/packages/crucible/seeds/ts/seed-025 2.ts +29 -29
- package/dist/packages/crucible/seeds/ts/seed-025.ts +29 -29
- package/dist/packages/crucible/seeds/ts/seed-026 2.ts +36 -36
- package/dist/packages/crucible/seeds/ts/seed-026.ts +36 -36
- package/dist/packages/crucible/seeds/ts/seed-027 2.ts +30 -30
- package/dist/packages/crucible/seeds/ts/seed-027.ts +30 -30
- package/dist/packages/crucible/seeds/ts/seed-028 2.ts +32 -32
- package/dist/packages/crucible/seeds/ts/seed-028.ts +32 -32
- package/dist/packages/crucible/seeds/ts/seed-029 2.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-029.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-030 2.ts +37 -37
- package/dist/packages/crucible/seeds/ts/seed-030.ts +37 -37
- package/dist/packages/crucible/seeds/ts/seed-031 2.ts +31 -31
- package/dist/packages/crucible/seeds/ts/seed-031.ts +31 -31
- package/dist/packages/crucible/seeds/ts/seed-032 2.ts +32 -32
- package/dist/packages/crucible/seeds/ts/seed-032.ts +32 -32
- package/dist/packages/crucible/seeds/ts/seed-033 2.ts +32 -32
- package/dist/packages/crucible/seeds/ts/seed-033.ts +32 -32
- package/dist/packages/crucible/seeds/ts/seed-034 2.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-034.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-035 2.ts +29 -29
- package/dist/packages/crucible/seeds/ts/seed-035.ts +29 -29
- package/dist/packages/crucible/seeds/ts/seed-036 2.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-036.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-037 2.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-037.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-038 2.ts +29 -29
- package/dist/packages/crucible/seeds/ts/seed-038.ts +29 -29
- package/dist/packages/crucible/seeds/ts/seed-039 2.ts +35 -35
- package/dist/packages/crucible/seeds/ts/seed-039.ts +35 -35
- package/dist/packages/crucible/seeds/ts/seed-040 2.ts +31 -31
- package/dist/packages/crucible/seeds/ts/seed-040.ts +31 -31
- package/dist/packages/crucible/seeds/ts/seed-041 2.ts +29 -29
- package/dist/packages/crucible/seeds/ts/seed-041.ts +29 -29
- package/dist/packages/crucible/seeds/ts/seed-042 2.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-042.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-043 2.ts +32 -32
- package/dist/packages/crucible/seeds/ts/seed-043.ts +32 -32
- package/dist/packages/crucible/seeds/ts/seed-044 2.ts +36 -36
- package/dist/packages/crucible/seeds/ts/seed-044.ts +36 -36
- package/dist/packages/crucible/seeds/ts/seed-045 2.ts +39 -39
- package/dist/packages/crucible/seeds/ts/seed-045.ts +39 -39
- package/dist/packages/crucible/seeds/ts/seed-046 2.ts +41 -41
- package/dist/packages/crucible/seeds/ts/seed-046.ts +41 -41
- package/dist/packages/crucible/seeds/ts/seed-047 2.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-047.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-048 2.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-048.ts +33 -33
- package/dist/packages/crucible/seeds/ts/seed-049 2.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-049.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-050 2.ts +41 -41
- package/dist/packages/crucible/seeds/ts/seed-050.ts +41 -41
- package/dist/packages/crucible/seeds/ts/seed-051 2.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-051.ts +34 -34
- package/dist/packages/crucible/seeds/ts/seed-052 2.ts +36 -36
- package/dist/packages/crucible/seeds/ts/seed-052.ts +36 -36
- package/dist/packages/scanner/ai-confidence-scorer.js +1 -1
- package/dist/packages/scanner/baseline-manager.js +1 -1
- package/dist/packages/scanner/code-scanner.js +1 -1
- package/dist/packages/scanner/copy-paste-detector.js +1 -1
- package/dist/packages/scanner/drift-detector.js +1 -1
- package/dist/packages/scanner/export-verifier.js +1 -1
- package/dist/packages/scanner/ghost-code-detector.js +1 -1
- package/dist/packages/scanner/hallucination-detector.js +1 -1
- package/dist/packages/scanner/license-manager.js +1 -1
- package/dist/packages/scanner/monitor-service.js +1 -1
- package/dist/packages/scanner/taint-tracker.js +1 -1
- 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
|
+
}
|