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,27 +1,27 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: deserialization
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: Unsafe deserialization via DataContractSerializer reading from request body
|
|
6
|
-
|
|
7
|
-
using System.Runtime.Serialization;
|
|
8
|
-
using System.Xml;
|
|
9
|
-
using Microsoft.AspNetCore.Mvc;
|
|
10
|
-
|
|
11
|
-
namespace App.Controllers
|
|
12
|
-
{
|
|
13
|
-
[ApiController]
|
|
14
|
-
[Route("api/[controller]")]
|
|
15
|
-
public class OrderController : ControllerBase
|
|
16
|
-
{
|
|
17
|
-
[HttpPost("import")]
|
|
18
|
-
public IActionResult Import()
|
|
19
|
-
{
|
|
20
|
-
// Vulnerable: DataContractSerializer resolves types from XML — SSRF/RCE risk
|
|
21
|
-
var serializer = new DataContractSerializer(typeof(object));
|
|
22
|
-
using var reader = XmlReader.Create(Request.Body);
|
|
23
|
-
object order = serializer.ReadObject(reader);
|
|
24
|
-
return Ok("Imported: " + order?.GetType().Name);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: deserialization
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: Unsafe deserialization via DataContractSerializer reading from request body
|
|
6
|
+
|
|
7
|
+
using System.Runtime.Serialization;
|
|
8
|
+
using System.Xml;
|
|
9
|
+
using Microsoft.AspNetCore.Mvc;
|
|
10
|
+
|
|
11
|
+
namespace App.Controllers
|
|
12
|
+
{
|
|
13
|
+
[ApiController]
|
|
14
|
+
[Route("api/[controller]")]
|
|
15
|
+
public class OrderController : ControllerBase
|
|
16
|
+
{
|
|
17
|
+
[HttpPost("import")]
|
|
18
|
+
public IActionResult Import()
|
|
19
|
+
{
|
|
20
|
+
// Vulnerable: DataContractSerializer resolves types from XML — SSRF/RCE risk
|
|
21
|
+
var serializer = new DataContractSerializer(typeof(object));
|
|
22
|
+
using var reader = XmlReader.Create(Request.Body);
|
|
23
|
+
object order = serializer.ReadObject(reader);
|
|
24
|
+
return Ok("Imported: " + order?.GetType().Name);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: deserialization
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: Unsafe deserialization via LosFormatter (ViewState) with user-controlled input
|
|
6
|
-
|
|
7
|
-
using System.IO;
|
|
8
|
-
using System.Web.UI;
|
|
9
|
-
using Microsoft.AspNetCore.Mvc;
|
|
10
|
-
|
|
11
|
-
namespace App.Controllers
|
|
12
|
-
{
|
|
13
|
-
[ApiController]
|
|
14
|
-
[Route("api/[controller]")]
|
|
15
|
-
public class ViewStateController : ControllerBase
|
|
16
|
-
{
|
|
17
|
-
[HttpPost("restore")]
|
|
18
|
-
public IActionResult Restore([FromQuery] string viewState)
|
|
19
|
-
{
|
|
20
|
-
// Vulnerable: LosFormatter deserializes attacker-controlled ViewState bytes
|
|
21
|
-
var formatter = new LosFormatter();
|
|
22
|
-
byte[] data = Convert.FromBase64String(viewState);
|
|
23
|
-
object result = formatter.Deserialize(Convert.ToBase64String(data));
|
|
24
|
-
return Ok(result?.ToString());
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: deserialization
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: Unsafe deserialization via LosFormatter (ViewState) with user-controlled input
|
|
6
|
+
|
|
7
|
+
using System.IO;
|
|
8
|
+
using System.Web.UI;
|
|
9
|
+
using Microsoft.AspNetCore.Mvc;
|
|
10
|
+
|
|
11
|
+
namespace App.Controllers
|
|
12
|
+
{
|
|
13
|
+
[ApiController]
|
|
14
|
+
[Route("api/[controller]")]
|
|
15
|
+
public class ViewStateController : ControllerBase
|
|
16
|
+
{
|
|
17
|
+
[HttpPost("restore")]
|
|
18
|
+
public IActionResult Restore([FromQuery] string viewState)
|
|
19
|
+
{
|
|
20
|
+
// Vulnerable: LosFormatter deserializes attacker-controlled ViewState bytes
|
|
21
|
+
var formatter = new LosFormatter();
|
|
22
|
+
byte[] data = Convert.FromBase64String(viewState);
|
|
23
|
+
object result = formatter.Deserialize(Convert.ToBase64String(data));
|
|
24
|
+
return Ok(result?.ToString());
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: ssrf
|
|
3
|
-
// severity: high
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: SSRF via WebClient.DownloadString with user-supplied URL
|
|
6
|
-
|
|
7
|
-
using System.Net;
|
|
8
|
-
using Microsoft.AspNetCore.Mvc;
|
|
9
|
-
|
|
10
|
-
namespace App.Controllers
|
|
11
|
-
{
|
|
12
|
-
[ApiController]
|
|
13
|
-
[Route("api/[controller]")]
|
|
14
|
-
public class ProxyController : ControllerBase
|
|
15
|
-
{
|
|
16
|
-
[HttpGet]
|
|
17
|
-
public IActionResult Fetch([FromQuery] string url)
|
|
18
|
-
{
|
|
19
|
-
// Vulnerable: fetches arbitrary URL including internal services
|
|
20
|
-
using var client = new WebClient();
|
|
21
|
-
string content = client.DownloadString(url);
|
|
22
|
-
return Content(content, "text/plain");
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: ssrf
|
|
3
|
+
// severity: high
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: SSRF via WebClient.DownloadString with user-supplied URL
|
|
6
|
+
|
|
7
|
+
using System.Net;
|
|
8
|
+
using Microsoft.AspNetCore.Mvc;
|
|
9
|
+
|
|
10
|
+
namespace App.Controllers
|
|
11
|
+
{
|
|
12
|
+
[ApiController]
|
|
13
|
+
[Route("api/[controller]")]
|
|
14
|
+
public class ProxyController : ControllerBase
|
|
15
|
+
{
|
|
16
|
+
[HttpGet]
|
|
17
|
+
public IActionResult Fetch([FromQuery] string url)
|
|
18
|
+
{
|
|
19
|
+
// Vulnerable: fetches arbitrary URL including internal services
|
|
20
|
+
using var client = new WebClient();
|
|
21
|
+
string content = client.DownloadString(url);
|
|
22
|
+
return Content(content, "text/plain");
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: ssrf
|
|
3
|
-
// severity: high
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: SSRF via HttpClient.GetAsync with user-controlled endpoint URL
|
|
6
|
-
|
|
7
|
-
using System.Net.Http;
|
|
8
|
-
using System.Threading.Tasks;
|
|
9
|
-
using Microsoft.AspNetCore.Mvc;
|
|
10
|
-
|
|
11
|
-
namespace App.Controllers
|
|
12
|
-
{
|
|
13
|
-
[ApiController]
|
|
14
|
-
[Route("api/[controller]")]
|
|
15
|
-
public class WebhookTestController : ControllerBase
|
|
16
|
-
{
|
|
17
|
-
private static readonly HttpClient _httpClient = new HttpClient();
|
|
18
|
-
|
|
19
|
-
[HttpPost]
|
|
20
|
-
public async Task<IActionResult> Test([FromQuery] string webhookUrl, [FromBody] string payload)
|
|
21
|
-
{
|
|
22
|
-
// Vulnerable: attacker can target internal metadata endpoints
|
|
23
|
-
var response = await _httpClient.PostAsync(
|
|
24
|
-
webhookUrl,
|
|
25
|
-
new StringContent(payload, System.Text.Encoding.UTF8, "application/json"));
|
|
26
|
-
string body = await response.Content.ReadAsStringAsync();
|
|
27
|
-
return Ok(body);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: ssrf
|
|
3
|
+
// severity: high
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: SSRF via HttpClient.GetAsync with user-controlled endpoint URL
|
|
6
|
+
|
|
7
|
+
using System.Net.Http;
|
|
8
|
+
using System.Threading.Tasks;
|
|
9
|
+
using Microsoft.AspNetCore.Mvc;
|
|
10
|
+
|
|
11
|
+
namespace App.Controllers
|
|
12
|
+
{
|
|
13
|
+
[ApiController]
|
|
14
|
+
[Route("api/[controller]")]
|
|
15
|
+
public class WebhookTestController : ControllerBase
|
|
16
|
+
{
|
|
17
|
+
private static readonly HttpClient _httpClient = new HttpClient();
|
|
18
|
+
|
|
19
|
+
[HttpPost]
|
|
20
|
+
public async Task<IActionResult> Test([FromQuery] string webhookUrl, [FromBody] string payload)
|
|
21
|
+
{
|
|
22
|
+
// Vulnerable: attacker can target internal metadata endpoints
|
|
23
|
+
var response = await _httpClient.PostAsync(
|
|
24
|
+
webhookUrl,
|
|
25
|
+
new StringContent(payload, System.Text.Encoding.UTF8, "application/json"));
|
|
26
|
+
string body = await response.Content.ReadAsStringAsync();
|
|
27
|
+
return Ok(body);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: ssrf
|
|
3
|
-
// severity: high
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: SSRF via WebRequest.Create with user-supplied URL for avatar fetching
|
|
6
|
-
|
|
7
|
-
using System.IO;
|
|
8
|
-
using System.Net;
|
|
9
|
-
using Microsoft.AspNetCore.Mvc;
|
|
10
|
-
|
|
11
|
-
namespace App.Controllers
|
|
12
|
-
{
|
|
13
|
-
[ApiController]
|
|
14
|
-
[Route("api/[controller]")]
|
|
15
|
-
public class AvatarController : ControllerBase
|
|
16
|
-
{
|
|
17
|
-
[HttpGet]
|
|
18
|
-
public IActionResult FetchAvatar([FromQuery] string avatarUrl)
|
|
19
|
-
{
|
|
20
|
-
// Vulnerable: server fetches any URL, allowing SSRF to internal services
|
|
21
|
-
WebRequest request = WebRequest.Create(avatarUrl);
|
|
22
|
-
WebResponse response = request.GetResponse();
|
|
23
|
-
using var stream = response.GetResponseStream();
|
|
24
|
-
using var ms = new MemoryStream();
|
|
25
|
-
stream.CopyTo(ms);
|
|
26
|
-
return File(ms.ToArray(), response.ContentType);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: ssrf
|
|
3
|
+
// severity: high
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: SSRF via WebRequest.Create with user-supplied URL for avatar fetching
|
|
6
|
+
|
|
7
|
+
using System.IO;
|
|
8
|
+
using System.Net;
|
|
9
|
+
using Microsoft.AspNetCore.Mvc;
|
|
10
|
+
|
|
11
|
+
namespace App.Controllers
|
|
12
|
+
{
|
|
13
|
+
[ApiController]
|
|
14
|
+
[Route("api/[controller]")]
|
|
15
|
+
public class AvatarController : ControllerBase
|
|
16
|
+
{
|
|
17
|
+
[HttpGet]
|
|
18
|
+
public IActionResult FetchAvatar([FromQuery] string avatarUrl)
|
|
19
|
+
{
|
|
20
|
+
// Vulnerable: server fetches any URL, allowing SSRF to internal services
|
|
21
|
+
WebRequest request = WebRequest.Create(avatarUrl);
|
|
22
|
+
WebResponse response = request.GetResponse();
|
|
23
|
+
using var stream = response.GetResponseStream();
|
|
24
|
+
using var ms = new MemoryStream();
|
|
25
|
+
stream.CopyTo(ms);
|
|
26
|
+
return File(ms.ToArray(), response.ContentType);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: ssrf
|
|
3
|
-
// severity: high
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: SSRF via HttpClient built from base URL query parameter for API aggregation
|
|
6
|
-
|
|
7
|
-
using System.Net.Http;
|
|
8
|
-
using System.Threading.Tasks;
|
|
9
|
-
using Microsoft.AspNetCore.Mvc;
|
|
10
|
-
|
|
11
|
-
namespace App.Controllers
|
|
12
|
-
{
|
|
13
|
-
[ApiController]
|
|
14
|
-
[Route("api/[controller]")]
|
|
15
|
-
public class AggregatorController : ControllerBase
|
|
16
|
-
{
|
|
17
|
-
[HttpGet]
|
|
18
|
-
public async Task<IActionResult> Aggregate([FromQuery] string serviceUrl, [FromQuery] string path)
|
|
19
|
-
{
|
|
20
|
-
// Vulnerable: combines user-controlled base URL and path — can reach internal services
|
|
21
|
-
using var client = new HttpClient { BaseAddress = new System.Uri(serviceUrl) };
|
|
22
|
-
string response = await client.GetStringAsync(path);
|
|
23
|
-
return Ok(response);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: ssrf
|
|
3
|
+
// severity: high
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: SSRF via HttpClient built from base URL query parameter for API aggregation
|
|
6
|
+
|
|
7
|
+
using System.Net.Http;
|
|
8
|
+
using System.Threading.Tasks;
|
|
9
|
+
using Microsoft.AspNetCore.Mvc;
|
|
10
|
+
|
|
11
|
+
namespace App.Controllers
|
|
12
|
+
{
|
|
13
|
+
[ApiController]
|
|
14
|
+
[Route("api/[controller]")]
|
|
15
|
+
public class AggregatorController : ControllerBase
|
|
16
|
+
{
|
|
17
|
+
[HttpGet]
|
|
18
|
+
public async Task<IActionResult> Aggregate([FromQuery] string serviceUrl, [FromQuery] string path)
|
|
19
|
+
{
|
|
20
|
+
// Vulnerable: combines user-controlled base URL and path — can reach internal services
|
|
21
|
+
using var client = new HttpClient { BaseAddress = new System.Uri(serviceUrl) };
|
|
22
|
+
string response = await client.GetStringAsync(path);
|
|
23
|
+
return Ok(response);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: xxe
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: XXE via XmlReader without secure settings (DtdProcessing.Parse enabled)
|
|
6
|
-
|
|
7
|
-
using System.Xml;
|
|
8
|
-
using Microsoft.AspNetCore.Mvc;
|
|
9
|
-
|
|
10
|
-
namespace App.Controllers
|
|
11
|
-
{
|
|
12
|
-
[ApiController]
|
|
13
|
-
[Route("api/[controller]")]
|
|
14
|
-
public class XmlImportController : ControllerBase
|
|
15
|
-
{
|
|
16
|
-
[HttpPost]
|
|
17
|
-
public IActionResult Import()
|
|
18
|
-
{
|
|
19
|
-
// Vulnerable: default XmlReaderSettings allows DTD and external entities
|
|
20
|
-
var settings = new XmlReaderSettings
|
|
21
|
-
{
|
|
22
|
-
DtdProcessing = DtdProcessing.Parse, // allows DOCTYPE
|
|
23
|
-
XmlResolver = new XmlUrlResolver() // resolves external entities
|
|
24
|
-
};
|
|
25
|
-
using var reader = XmlReader.Create(Request.Body, settings);
|
|
26
|
-
var doc = new XmlDocument();
|
|
27
|
-
doc.Load(reader);
|
|
28
|
-
return Ok("Imported " + doc.DocumentElement?.Name);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: xxe
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: XXE via XmlReader without secure settings (DtdProcessing.Parse enabled)
|
|
6
|
+
|
|
7
|
+
using System.Xml;
|
|
8
|
+
using Microsoft.AspNetCore.Mvc;
|
|
9
|
+
|
|
10
|
+
namespace App.Controllers
|
|
11
|
+
{
|
|
12
|
+
[ApiController]
|
|
13
|
+
[Route("api/[controller]")]
|
|
14
|
+
public class XmlImportController : ControllerBase
|
|
15
|
+
{
|
|
16
|
+
[HttpPost]
|
|
17
|
+
public IActionResult Import()
|
|
18
|
+
{
|
|
19
|
+
// Vulnerable: default XmlReaderSettings allows DTD and external entities
|
|
20
|
+
var settings = new XmlReaderSettings
|
|
21
|
+
{
|
|
22
|
+
DtdProcessing = DtdProcessing.Parse, // allows DOCTYPE
|
|
23
|
+
XmlResolver = new XmlUrlResolver() // resolves external entities
|
|
24
|
+
};
|
|
25
|
+
using var reader = XmlReader.Create(Request.Body, settings);
|
|
26
|
+
var doc = new XmlDocument();
|
|
27
|
+
doc.Load(reader);
|
|
28
|
+
return Ok("Imported " + doc.DocumentElement?.Name);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: xxe
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: XXE via XmlDocument.LoadXml with default XmlResolver allowing entity expansion
|
|
6
|
-
|
|
7
|
-
using System.Xml;
|
|
8
|
-
using Microsoft.AspNetCore.Mvc;
|
|
9
|
-
|
|
10
|
-
namespace App.Controllers
|
|
11
|
-
{
|
|
12
|
-
[ApiController]
|
|
13
|
-
[Route("api/[controller]")]
|
|
14
|
-
public class FeedController : ControllerBase
|
|
15
|
-
{
|
|
16
|
-
[HttpPost("parse")]
|
|
17
|
-
public IActionResult ParseFeed([FromBody] string xmlContent)
|
|
18
|
-
{
|
|
19
|
-
// Vulnerable: XmlDocument with default resolver processes external entities
|
|
20
|
-
var doc = new XmlDocument();
|
|
21
|
-
doc.XmlResolver = new XmlUrlResolver(); // allows file:// and http:// entities
|
|
22
|
-
doc.LoadXml(xmlContent);
|
|
23
|
-
string rootName = doc.DocumentElement?.Name ?? "none";
|
|
24
|
-
return Ok($"Root element: {rootName}");
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: xxe
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: XXE via XmlDocument.LoadXml with default XmlResolver allowing entity expansion
|
|
6
|
+
|
|
7
|
+
using System.Xml;
|
|
8
|
+
using Microsoft.AspNetCore.Mvc;
|
|
9
|
+
|
|
10
|
+
namespace App.Controllers
|
|
11
|
+
{
|
|
12
|
+
[ApiController]
|
|
13
|
+
[Route("api/[controller]")]
|
|
14
|
+
public class FeedController : ControllerBase
|
|
15
|
+
{
|
|
16
|
+
[HttpPost("parse")]
|
|
17
|
+
public IActionResult ParseFeed([FromBody] string xmlContent)
|
|
18
|
+
{
|
|
19
|
+
// Vulnerable: XmlDocument with default resolver processes external entities
|
|
20
|
+
var doc = new XmlDocument();
|
|
21
|
+
doc.XmlResolver = new XmlUrlResolver(); // allows file:// and http:// entities
|
|
22
|
+
doc.LoadXml(xmlContent);
|
|
23
|
+
string rootName = doc.DocumentElement?.Name ?? "none";
|
|
24
|
+
return Ok($"Root element: {rootName}");
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: xxe
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: XXE via XPathDocument loaded from request body without disabling DTD processing
|
|
6
|
-
|
|
7
|
-
using System.IO;
|
|
8
|
-
using System.Xml;
|
|
9
|
-
using System.Xml.XPath;
|
|
10
|
-
using Microsoft.AspNetCore.Mvc;
|
|
11
|
-
|
|
12
|
-
namespace App.Controllers
|
|
13
|
-
{
|
|
14
|
-
[ApiController]
|
|
15
|
-
[Route("api/[controller]")]
|
|
16
|
-
public class XPathQueryController : ControllerBase
|
|
17
|
-
{
|
|
18
|
-
[HttpPost("query")]
|
|
19
|
-
public IActionResult Query([FromQuery] string xpath)
|
|
20
|
-
{
|
|
21
|
-
// Vulnerable: XPathDocument with XmlUrlResolver resolves external entities
|
|
22
|
-
using var reader = new StreamReader(Request.Body);
|
|
23
|
-
string xml = reader.ReadToEnd();
|
|
24
|
-
var doc = new XPathDocument(new StringReader(xml));
|
|
25
|
-
var nav = doc.CreateNavigator();
|
|
26
|
-
string result = nav.SelectSingleNode(xpath)?.Value ?? "";
|
|
27
|
-
return Ok(result);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: xxe
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: XXE via XPathDocument loaded from request body without disabling DTD processing
|
|
6
|
+
|
|
7
|
+
using System.IO;
|
|
8
|
+
using System.Xml;
|
|
9
|
+
using System.Xml.XPath;
|
|
10
|
+
using Microsoft.AspNetCore.Mvc;
|
|
11
|
+
|
|
12
|
+
namespace App.Controllers
|
|
13
|
+
{
|
|
14
|
+
[ApiController]
|
|
15
|
+
[Route("api/[controller]")]
|
|
16
|
+
public class XPathQueryController : ControllerBase
|
|
17
|
+
{
|
|
18
|
+
[HttpPost("query")]
|
|
19
|
+
public IActionResult Query([FromQuery] string xpath)
|
|
20
|
+
{
|
|
21
|
+
// Vulnerable: XPathDocument with XmlUrlResolver resolves external entities
|
|
22
|
+
using var reader = new StreamReader(Request.Body);
|
|
23
|
+
string xml = reader.ReadToEnd();
|
|
24
|
+
var doc = new XPathDocument(new StringReader(xml));
|
|
25
|
+
var nav = doc.CreateNavigator();
|
|
26
|
+
string result = nav.SelectSingleNode(xpath)?.Value ?? "";
|
|
27
|
+
return Ok(result);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: open_redirect
|
|
3
|
-
// severity: medium
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: Open redirect via Response.Redirect with unvalidated user-supplied URL
|
|
6
|
-
|
|
7
|
-
using System.Web;
|
|
8
|
-
|
|
9
|
-
namespace App.Handlers
|
|
10
|
-
{
|
|
11
|
-
public class LoginHandler : IHttpHandler
|
|
12
|
-
{
|
|
13
|
-
public bool IsReusable => false;
|
|
14
|
-
|
|
15
|
-
public void ProcessRequest(HttpContext context)
|
|
16
|
-
{
|
|
17
|
-
string username = context.Request.Form["username"];
|
|
18
|
-
string password = context.Request.Form["password"];
|
|
19
|
-
string next = context.Request.QueryString["next"];
|
|
20
|
-
|
|
21
|
-
if (Authenticate(username, password))
|
|
22
|
-
{
|
|
23
|
-
// Vulnerable: 'next' not validated — can redirect to external malicious site
|
|
24
|
-
context.Response.Redirect(next ?? "/dashboard");
|
|
25
|
-
}
|
|
26
|
-
else
|
|
27
|
-
{
|
|
28
|
-
context.Response.Redirect("/login?error=1");
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
private bool Authenticate(string u, string p) => u == "admin" && p == "password";
|
|
33
|
-
}
|
|
34
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: open_redirect
|
|
3
|
+
// severity: medium
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: Open redirect via Response.Redirect with unvalidated user-supplied URL
|
|
6
|
+
|
|
7
|
+
using System.Web;
|
|
8
|
+
|
|
9
|
+
namespace App.Handlers
|
|
10
|
+
{
|
|
11
|
+
public class LoginHandler : IHttpHandler
|
|
12
|
+
{
|
|
13
|
+
public bool IsReusable => false;
|
|
14
|
+
|
|
15
|
+
public void ProcessRequest(HttpContext context)
|
|
16
|
+
{
|
|
17
|
+
string username = context.Request.Form["username"];
|
|
18
|
+
string password = context.Request.Form["password"];
|
|
19
|
+
string next = context.Request.QueryString["next"];
|
|
20
|
+
|
|
21
|
+
if (Authenticate(username, password))
|
|
22
|
+
{
|
|
23
|
+
// Vulnerable: 'next' not validated — can redirect to external malicious site
|
|
24
|
+
context.Response.Redirect(next ?? "/dashboard");
|
|
25
|
+
}
|
|
26
|
+
else
|
|
27
|
+
{
|
|
28
|
+
context.Response.Redirect("/login?error=1");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
private bool Authenticate(string u, string p) => u == "admin" && p == "password";
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: open_redirect
|
|
3
|
-
// severity: medium
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: Open redirect via LocalRedirect with user-controlled URL bypassing local check
|
|
6
|
-
|
|
7
|
-
using Microsoft.AspNetCore.Mvc;
|
|
8
|
-
|
|
9
|
-
namespace App.Controllers
|
|
10
|
-
{
|
|
11
|
-
public class AccountController : Controller
|
|
12
|
-
{
|
|
13
|
-
[HttpPost("logout")]
|
|
14
|
-
public IActionResult Logout(string returnUrl)
|
|
15
|
-
{
|
|
16
|
-
// Clear session
|
|
17
|
-
HttpContext.Session.Clear();
|
|
18
|
-
|
|
19
|
-
// Vulnerable: returnUrl not properly validated;
|
|
20
|
-
// attacker can supply //evil.com or /\evil.com to bypass IsLocalUrl
|
|
21
|
-
if (!string.IsNullOrEmpty(returnUrl))
|
|
22
|
-
return Redirect(returnUrl);
|
|
23
|
-
|
|
24
|
-
return RedirectToAction("Index", "Home");
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
[HttpGet("oauth-callback")]
|
|
28
|
-
public IActionResult OAuthCallback(string state, string code)
|
|
29
|
-
{
|
|
30
|
-
// Vulnerable: state used as redirect target without validation
|
|
31
|
-
string destination = System.Text.Encoding.UTF8.GetString(
|
|
32
|
-
Convert.FromBase64String(state));
|
|
33
|
-
return Redirect(destination);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: open_redirect
|
|
3
|
+
// severity: medium
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: Open redirect via LocalRedirect with user-controlled URL bypassing local check
|
|
6
|
+
|
|
7
|
+
using Microsoft.AspNetCore.Mvc;
|
|
8
|
+
|
|
9
|
+
namespace App.Controllers
|
|
10
|
+
{
|
|
11
|
+
public class AccountController : Controller
|
|
12
|
+
{
|
|
13
|
+
[HttpPost("logout")]
|
|
14
|
+
public IActionResult Logout(string returnUrl)
|
|
15
|
+
{
|
|
16
|
+
// Clear session
|
|
17
|
+
HttpContext.Session.Clear();
|
|
18
|
+
|
|
19
|
+
// Vulnerable: returnUrl not properly validated;
|
|
20
|
+
// attacker can supply //evil.com or /\evil.com to bypass IsLocalUrl
|
|
21
|
+
if (!string.IsNullOrEmpty(returnUrl))
|
|
22
|
+
return Redirect(returnUrl);
|
|
23
|
+
|
|
24
|
+
return RedirectToAction("Index", "Home");
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
[HttpGet("oauth-callback")]
|
|
28
|
+
public IActionResult OAuthCallback(string state, string code)
|
|
29
|
+
{
|
|
30
|
+
// Vulnerable: state used as redirect target without validation
|
|
31
|
+
string destination = System.Text.Encoding.UTF8.GetString(
|
|
32
|
+
Convert.FromBase64String(state));
|
|
33
|
+
return Redirect(destination);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|