thuban 0.4.3 → 0.4.6
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 +437 -187
- package/dist/LICENSE +21 -21
- package/dist/README.md +437 -187
- package/dist/cli.js +1 -1
- package/dist/package.json +64 -63
- package/dist/packages/crucible/.golden/golden-master.json +413 -413
- package/dist/packages/crucible/mutation-engine.js +1 -1
- package/dist/packages/crucible/pattern-learner.js +1 -1
- package/dist/packages/crucible/rule-loader.js +1 -1
- package/dist/packages/crucible/rules/code-scanner-core.json +281 -147
- 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 -619
- 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 -663
- 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/seeding-engine.js +1 -1
- 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/codebase-passport.js +1 -1
- package/dist/packages/scanner/copy-paste-detector.js +1 -1
- package/dist/packages/scanner/dependency-graph.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/file-collector.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/pre-commit-gate.js +1 -1
- package/dist/packages/scanner/read-file.js +1 -0
- package/dist/packages/scanner/taint-tracker.js +1 -1
- package/dist/packages/scanner/tech-debt-analyzer.js +1 -1
- package/package.json +64 -63
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: hardcoded_secret
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: Hardcoded GitHub PAT and Slack webhook URL in integration service
|
|
6
|
-
|
|
7
|
-
namespace App.Integrations
|
|
8
|
-
{
|
|
9
|
-
public class IntegrationConfig
|
|
10
|
-
{
|
|
11
|
-
public const string GitHubToken = "ghp_aBcDeFgHiJkLmNoPqRsTuVwXyZ012345";
|
|
12
|
-
public const string SlackWebhookUrl = "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX";
|
|
13
|
-
public const string PagerDutyApiKey = "pdkey-u-AbCdEfGhIjKlMnOpQrStUv";
|
|
14
|
-
|
|
15
|
-
public static System.Net.Http.HttpClient CreateGitHubClient()
|
|
16
|
-
{
|
|
17
|
-
var client = new System.Net.Http.HttpClient();
|
|
18
|
-
client.DefaultRequestHeaders.Add("Authorization", $"token {GitHubToken}");
|
|
19
|
-
client.DefaultRequestHeaders.Add("User-Agent", "MyApp/1.0");
|
|
20
|
-
return client;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: hardcoded_secret
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: Hardcoded GitHub PAT and Slack webhook URL in integration service
|
|
6
|
+
|
|
7
|
+
namespace App.Integrations
|
|
8
|
+
{
|
|
9
|
+
public class IntegrationConfig
|
|
10
|
+
{
|
|
11
|
+
public const string GitHubToken = "ghp_aBcDeFgHiJkLmNoPqRsTuVwXyZ012345";
|
|
12
|
+
public const string SlackWebhookUrl = "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX";
|
|
13
|
+
public const string PagerDutyApiKey = "pdkey-u-AbCdEfGhIjKlMnOpQrStUv";
|
|
14
|
+
|
|
15
|
+
public static System.Net.Http.HttpClient CreateGitHubClient()
|
|
16
|
+
{
|
|
17
|
+
var client = new System.Net.Http.HttpClient();
|
|
18
|
+
client.DefaultRequestHeaders.Add("Authorization", $"token {GitHubToken}");
|
|
19
|
+
client.DefaultRequestHeaders.Add("User-Agent", "MyApp/1.0");
|
|
20
|
+
return client;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: sql_injection
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: SQL injection via string concatenation in SqlCommand
|
|
6
|
-
|
|
7
|
-
using System.Data.SqlClient;
|
|
8
|
-
|
|
9
|
-
namespace App.Data
|
|
10
|
-
{
|
|
11
|
-
public class UserRepository
|
|
12
|
-
{
|
|
13
|
-
private readonly string _connectionString;
|
|
14
|
-
|
|
15
|
-
public UserRepository(string connectionString) => _connectionString = connectionString;
|
|
16
|
-
|
|
17
|
-
public SqlDataReader FindByUsername(string username)
|
|
18
|
-
{
|
|
19
|
-
var conn = new SqlConnection(_connectionString);
|
|
20
|
-
conn.Open();
|
|
21
|
-
// Vulnerable: direct string concatenation into SQL
|
|
22
|
-
var cmd = new SqlCommand(
|
|
23
|
-
"SELECT * FROM Users WHERE Username = '" + username + "'", conn);
|
|
24
|
-
return cmd.ExecuteReader();
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: sql_injection
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: SQL injection via string concatenation in SqlCommand
|
|
6
|
+
|
|
7
|
+
using System.Data.SqlClient;
|
|
8
|
+
|
|
9
|
+
namespace App.Data
|
|
10
|
+
{
|
|
11
|
+
public class UserRepository
|
|
12
|
+
{
|
|
13
|
+
private readonly string _connectionString;
|
|
14
|
+
|
|
15
|
+
public UserRepository(string connectionString) => _connectionString = connectionString;
|
|
16
|
+
|
|
17
|
+
public SqlDataReader FindByUsername(string username)
|
|
18
|
+
{
|
|
19
|
+
var conn = new SqlConnection(_connectionString);
|
|
20
|
+
conn.Open();
|
|
21
|
+
// Vulnerable: direct string concatenation into SQL
|
|
22
|
+
var cmd = new SqlCommand(
|
|
23
|
+
"SELECT * FROM Users WHERE Username = '" + username + "'", conn);
|
|
24
|
+
return cmd.ExecuteReader();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: sql_injection
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: SQL injection via string.Format building WHERE clause
|
|
6
|
-
|
|
7
|
-
using System;
|
|
8
|
-
using System.Data.SqlClient;
|
|
9
|
-
|
|
10
|
-
namespace App.Data
|
|
11
|
-
{
|
|
12
|
-
public class ProductSearch
|
|
13
|
-
{
|
|
14
|
-
private readonly string _conn;
|
|
15
|
-
|
|
16
|
-
public ProductSearch(string conn) => _conn = conn;
|
|
17
|
-
|
|
18
|
-
public SqlDataReader Search(string keyword, string category)
|
|
19
|
-
{
|
|
20
|
-
// Vulnerable: string.Format with unsanitized inputs
|
|
21
|
-
string sql = string.Format(
|
|
22
|
-
"SELECT * FROM Products WHERE Name LIKE '%{0}%' AND Category = '{1}'",
|
|
23
|
-
keyword, category);
|
|
24
|
-
var connection = new SqlConnection(_conn);
|
|
25
|
-
connection.Open();
|
|
26
|
-
return new SqlCommand(sql, connection).ExecuteReader();
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: sql_injection
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: SQL injection via string.Format building WHERE clause
|
|
6
|
+
|
|
7
|
+
using System;
|
|
8
|
+
using System.Data.SqlClient;
|
|
9
|
+
|
|
10
|
+
namespace App.Data
|
|
11
|
+
{
|
|
12
|
+
public class ProductSearch
|
|
13
|
+
{
|
|
14
|
+
private readonly string _conn;
|
|
15
|
+
|
|
16
|
+
public ProductSearch(string conn) => _conn = conn;
|
|
17
|
+
|
|
18
|
+
public SqlDataReader Search(string keyword, string category)
|
|
19
|
+
{
|
|
20
|
+
// Vulnerable: string.Format with unsanitized inputs
|
|
21
|
+
string sql = string.Format(
|
|
22
|
+
"SELECT * FROM Products WHERE Name LIKE '%{0}%' AND Category = '{1}'",
|
|
23
|
+
keyword, category);
|
|
24
|
+
var connection = new SqlConnection(_conn);
|
|
25
|
+
connection.Open();
|
|
26
|
+
return new SqlCommand(sql, connection).ExecuteReader();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: sql_injection
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: SQL injection in login via string interpolation in SqlCommand
|
|
6
|
-
|
|
7
|
-
using System.Data.SqlClient;
|
|
8
|
-
using Microsoft.AspNetCore.Mvc;
|
|
9
|
-
|
|
10
|
-
namespace App.Controllers
|
|
11
|
-
{
|
|
12
|
-
[ApiController]
|
|
13
|
-
[Route("api/[controller]")]
|
|
14
|
-
public class AuthController : ControllerBase
|
|
15
|
-
{
|
|
16
|
-
private readonly string _conn;
|
|
17
|
-
|
|
18
|
-
public AuthController(string conn) => _conn = conn;
|
|
19
|
-
|
|
20
|
-
[HttpPost("login")]
|
|
21
|
-
public IActionResult Login(string username, string password)
|
|
22
|
-
{
|
|
23
|
-
// Vulnerable: C# interpolated string injected into SQL
|
|
24
|
-
string sql = $"SELECT Id FROM Users WHERE Username='{username}' AND Password='{password}'";
|
|
25
|
-
using var connection = new SqlConnection(_conn);
|
|
26
|
-
connection.Open();
|
|
27
|
-
using var cmd = new SqlCommand(sql, connection);
|
|
28
|
-
var result = cmd.ExecuteScalar();
|
|
29
|
-
return result != null ? Ok("Authenticated") : Unauthorized();
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: sql_injection
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: SQL injection in login via string interpolation in SqlCommand
|
|
6
|
+
|
|
7
|
+
using System.Data.SqlClient;
|
|
8
|
+
using Microsoft.AspNetCore.Mvc;
|
|
9
|
+
|
|
10
|
+
namespace App.Controllers
|
|
11
|
+
{
|
|
12
|
+
[ApiController]
|
|
13
|
+
[Route("api/[controller]")]
|
|
14
|
+
public class AuthController : ControllerBase
|
|
15
|
+
{
|
|
16
|
+
private readonly string _conn;
|
|
17
|
+
|
|
18
|
+
public AuthController(string conn) => _conn = conn;
|
|
19
|
+
|
|
20
|
+
[HttpPost("login")]
|
|
21
|
+
public IActionResult Login(string username, string password)
|
|
22
|
+
{
|
|
23
|
+
// Vulnerable: C# interpolated string injected into SQL
|
|
24
|
+
string sql = $"SELECT Id FROM Users WHERE Username='{username}' AND Password='{password}'";
|
|
25
|
+
using var connection = new SqlConnection(_conn);
|
|
26
|
+
connection.Open();
|
|
27
|
+
using var cmd = new SqlCommand(sql, connection);
|
|
28
|
+
var result = cmd.ExecuteScalar();
|
|
29
|
+
return result != null ? Ok("Authenticated") : Unauthorized();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: sql_injection
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: SQL injection via dynamic ORDER BY column from user input
|
|
6
|
-
|
|
7
|
-
using System.Data.SqlClient;
|
|
8
|
-
|
|
9
|
-
namespace App.Data
|
|
10
|
-
{
|
|
11
|
-
public class ReportRepository
|
|
12
|
-
{
|
|
13
|
-
private readonly string _conn;
|
|
14
|
-
|
|
15
|
-
public ReportRepository(string conn) => _conn = conn;
|
|
16
|
-
|
|
17
|
-
public SqlDataReader GetSortedReport(string tableName, string sortColumn, string sortDir)
|
|
18
|
-
{
|
|
19
|
-
// Vulnerable: all three parameters injected without validation
|
|
20
|
-
string sql = "SELECT * FROM " + tableName +
|
|
21
|
-
" ORDER BY " + sortColumn + " " + sortDir;
|
|
22
|
-
var connection = new SqlConnection(_conn);
|
|
23
|
-
connection.Open();
|
|
24
|
-
return new SqlCommand(sql, connection).ExecuteReader();
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: sql_injection
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: SQL injection via dynamic ORDER BY column from user input
|
|
6
|
+
|
|
7
|
+
using System.Data.SqlClient;
|
|
8
|
+
|
|
9
|
+
namespace App.Data
|
|
10
|
+
{
|
|
11
|
+
public class ReportRepository
|
|
12
|
+
{
|
|
13
|
+
private readonly string _conn;
|
|
14
|
+
|
|
15
|
+
public ReportRepository(string conn) => _conn = conn;
|
|
16
|
+
|
|
17
|
+
public SqlDataReader GetSortedReport(string tableName, string sortColumn, string sortDir)
|
|
18
|
+
{
|
|
19
|
+
// Vulnerable: all three parameters injected without validation
|
|
20
|
+
string sql = "SELECT * FROM " + tableName +
|
|
21
|
+
" ORDER BY " + sortColumn + " " + sortDir;
|
|
22
|
+
var connection = new SqlConnection(_conn);
|
|
23
|
+
connection.Open();
|
|
24
|
+
return new SqlCommand(sql, connection).ExecuteReader();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: sql_injection
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: SQL injection in stored procedure exec via string concatenation
|
|
6
|
-
|
|
7
|
-
using System.Data;
|
|
8
|
-
using System.Data.SqlClient;
|
|
9
|
-
|
|
10
|
-
namespace App.Data
|
|
11
|
-
{
|
|
12
|
-
public class AuditService
|
|
13
|
-
{
|
|
14
|
-
private readonly string _conn;
|
|
15
|
-
|
|
16
|
-
public AuditService(string conn) => _conn = conn;
|
|
17
|
-
|
|
18
|
-
public void LogEvent(string userId, string action)
|
|
19
|
-
{
|
|
20
|
-
// Vulnerable: building EXEC string manually
|
|
21
|
-
string sql = "EXEC sp_RecordAudit '" + userId + "', '" + action + "'";
|
|
22
|
-
using var connection = new SqlConnection(_conn);
|
|
23
|
-
connection.Open();
|
|
24
|
-
new SqlCommand(sql, connection).ExecuteNonQuery();
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: sql_injection
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: SQL injection in stored procedure exec via string concatenation
|
|
6
|
+
|
|
7
|
+
using System.Data;
|
|
8
|
+
using System.Data.SqlClient;
|
|
9
|
+
|
|
10
|
+
namespace App.Data
|
|
11
|
+
{
|
|
12
|
+
public class AuditService
|
|
13
|
+
{
|
|
14
|
+
private readonly string _conn;
|
|
15
|
+
|
|
16
|
+
public AuditService(string conn) => _conn = conn;
|
|
17
|
+
|
|
18
|
+
public void LogEvent(string userId, string action)
|
|
19
|
+
{
|
|
20
|
+
// Vulnerable: building EXEC string manually
|
|
21
|
+
string sql = "EXEC sp_RecordAudit '" + userId + "', '" + action + "'";
|
|
22
|
+
using var connection = new SqlConnection(_conn);
|
|
23
|
+
connection.Open();
|
|
24
|
+
new SqlCommand(sql, connection).ExecuteNonQuery();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: sql_injection
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: SQL injection via string concatenation in WHERE IN clause
|
|
6
|
-
|
|
7
|
-
using System.Data.SqlClient;
|
|
8
|
-
|
|
9
|
-
namespace App.Data
|
|
10
|
-
{
|
|
11
|
-
public class BatchOrderService
|
|
12
|
-
{
|
|
13
|
-
private readonly string _conn;
|
|
14
|
-
|
|
15
|
-
public BatchOrderService(string conn) => _conn = conn;
|
|
16
|
-
|
|
17
|
-
public SqlDataReader GetOrdersByIds(string rawIds)
|
|
18
|
-
{
|
|
19
|
-
// Vulnerable: rawIds like "1,2,3" injected into IN clause
|
|
20
|
-
string sql = $"SELECT * FROM Orders WHERE Id IN ({rawIds})";
|
|
21
|
-
var connection = new SqlConnection(_conn);
|
|
22
|
-
connection.Open();
|
|
23
|
-
return new SqlCommand(sql, connection).ExecuteReader();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: sql_injection
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: SQL injection via string concatenation in WHERE IN clause
|
|
6
|
+
|
|
7
|
+
using System.Data.SqlClient;
|
|
8
|
+
|
|
9
|
+
namespace App.Data
|
|
10
|
+
{
|
|
11
|
+
public class BatchOrderService
|
|
12
|
+
{
|
|
13
|
+
private readonly string _conn;
|
|
14
|
+
|
|
15
|
+
public BatchOrderService(string conn) => _conn = conn;
|
|
16
|
+
|
|
17
|
+
public SqlDataReader GetOrdersByIds(string rawIds)
|
|
18
|
+
{
|
|
19
|
+
// Vulnerable: rawIds like "1,2,3" injected into IN clause
|
|
20
|
+
string sql = $"SELECT * FROM Orders WHERE Id IN ({rawIds})";
|
|
21
|
+
var connection = new SqlConnection(_conn);
|
|
22
|
+
connection.Open();
|
|
23
|
+
return new SqlCommand(sql, connection).ExecuteReader();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: sql_injection
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: SQL injection via ADO.NET command text built with user search parameters
|
|
6
|
-
|
|
7
|
-
using System;
|
|
8
|
-
using System.Data.SqlClient;
|
|
9
|
-
using Microsoft.AspNetCore.Mvc;
|
|
10
|
-
|
|
11
|
-
namespace App.Controllers
|
|
12
|
-
{
|
|
13
|
-
[ApiController]
|
|
14
|
-
[Route("api/[controller]")]
|
|
15
|
-
public class SearchController : ControllerBase
|
|
16
|
-
{
|
|
17
|
-
private readonly string _conn;
|
|
18
|
-
|
|
19
|
-
public SearchController(string conn) => _conn = conn;
|
|
20
|
-
|
|
21
|
-
[HttpGet]
|
|
22
|
-
public IActionResult Search([FromQuery] string name, [FromQuery] string dept)
|
|
23
|
-
{
|
|
24
|
-
// Vulnerable: both query params concatenated into SQL
|
|
25
|
-
string sql = "SELECT * FROM Employees WHERE Name LIKE '%" + name
|
|
26
|
-
+ "%' AND Department = '" + dept + "'";
|
|
27
|
-
using var connection = new SqlConnection(_conn);
|
|
28
|
-
connection.Open();
|
|
29
|
-
using var reader = new SqlCommand(sql, connection).ExecuteReader();
|
|
30
|
-
return Ok("Results fetched");
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: sql_injection
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: SQL injection via ADO.NET command text built with user search parameters
|
|
6
|
+
|
|
7
|
+
using System;
|
|
8
|
+
using System.Data.SqlClient;
|
|
9
|
+
using Microsoft.AspNetCore.Mvc;
|
|
10
|
+
|
|
11
|
+
namespace App.Controllers
|
|
12
|
+
{
|
|
13
|
+
[ApiController]
|
|
14
|
+
[Route("api/[controller]")]
|
|
15
|
+
public class SearchController : ControllerBase
|
|
16
|
+
{
|
|
17
|
+
private readonly string _conn;
|
|
18
|
+
|
|
19
|
+
public SearchController(string conn) => _conn = conn;
|
|
20
|
+
|
|
21
|
+
[HttpGet]
|
|
22
|
+
public IActionResult Search([FromQuery] string name, [FromQuery] string dept)
|
|
23
|
+
{
|
|
24
|
+
// Vulnerable: both query params concatenated into SQL
|
|
25
|
+
string sql = "SELECT * FROM Employees WHERE Name LIKE '%" + name
|
|
26
|
+
+ "%' AND Department = '" + dept + "'";
|
|
27
|
+
using var connection = new SqlConnection(_conn);
|
|
28
|
+
connection.Open();
|
|
29
|
+
using var reader = new SqlCommand(sql, connection).ExecuteReader();
|
|
30
|
+
return Ok("Results fetched");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: xss
|
|
3
|
-
// severity: high
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: XSS via Response.Write with unescaped user input from query string
|
|
6
|
-
|
|
7
|
-
using System.Web;
|
|
8
|
-
|
|
9
|
-
namespace App.Handlers
|
|
10
|
-
{
|
|
11
|
-
public class GreetingHandler : IHttpHandler
|
|
12
|
-
{
|
|
13
|
-
public bool IsReusable => false;
|
|
14
|
-
|
|
15
|
-
public void ProcessRequest(HttpContext context)
|
|
16
|
-
{
|
|
17
|
-
string name = context.Request.QueryString["name"];
|
|
18
|
-
context.Response.ContentType = "text/html";
|
|
19
|
-
// Vulnerable: name reflected without HtmlEncode
|
|
20
|
-
context.Response.Write("<html><body>");
|
|
21
|
-
context.Response.Write("<h1>Welcome, " + name + "!</h1>");
|
|
22
|
-
context.Response.Write("</body></html>");
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: xss
|
|
3
|
+
// severity: high
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: XSS via Response.Write with unescaped user input from query string
|
|
6
|
+
|
|
7
|
+
using System.Web;
|
|
8
|
+
|
|
9
|
+
namespace App.Handlers
|
|
10
|
+
{
|
|
11
|
+
public class GreetingHandler : IHttpHandler
|
|
12
|
+
{
|
|
13
|
+
public bool IsReusable => false;
|
|
14
|
+
|
|
15
|
+
public void ProcessRequest(HttpContext context)
|
|
16
|
+
{
|
|
17
|
+
string name = context.Request.QueryString["name"];
|
|
18
|
+
context.Response.ContentType = "text/html";
|
|
19
|
+
// Vulnerable: name reflected without HtmlEncode
|
|
20
|
+
context.Response.Write("<html><body>");
|
|
21
|
+
context.Response.Write("<h1>Welcome, " + name + "!</h1>");
|
|
22
|
+
context.Response.Write("</body></html>");
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: xss
|
|
3
|
-
// severity: high
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: XSS via Response.Write with search query reflected into HTML
|
|
6
|
-
|
|
7
|
-
using System.Web;
|
|
8
|
-
using System.Web.UI;
|
|
9
|
-
|
|
10
|
-
namespace App.Pages
|
|
11
|
-
{
|
|
12
|
-
public class SearchPage : Page
|
|
13
|
-
{
|
|
14
|
-
protected void Page_Load(object sender, System.EventArgs e)
|
|
15
|
-
{
|
|
16
|
-
string q = Request.QueryString["q"];
|
|
17
|
-
// Vulnerable: writing raw query parameter into page output
|
|
18
|
-
Response.Write("<h2>Results for: " + q + "</h2>");
|
|
19
|
-
Response.Write("<meta name=\"description\" content=\"" + q + "\">");
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: xss
|
|
3
|
+
// severity: high
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: XSS via Response.Write with search query reflected into HTML
|
|
6
|
+
|
|
7
|
+
using System.Web;
|
|
8
|
+
using System.Web.UI;
|
|
9
|
+
|
|
10
|
+
namespace App.Pages
|
|
11
|
+
{
|
|
12
|
+
public class SearchPage : Page
|
|
13
|
+
{
|
|
14
|
+
protected void Page_Load(object sender, System.EventArgs e)
|
|
15
|
+
{
|
|
16
|
+
string q = Request.QueryString["q"];
|
|
17
|
+
// Vulnerable: writing raw query parameter into page output
|
|
18
|
+
Response.Write("<h2>Results for: " + q + "</h2>");
|
|
19
|
+
Response.Write("<meta name=\"description\" content=\"" + q + "\">");
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: xss
|
|
3
|
-
// severity: high
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: XSS via MVC action returning raw HTML with user input embedded
|
|
6
|
-
|
|
7
|
-
using Microsoft.AspNetCore.Mvc;
|
|
8
|
-
|
|
9
|
-
namespace App.Controllers
|
|
10
|
-
{
|
|
11
|
-
public class ProfileController : Controller
|
|
12
|
-
{
|
|
13
|
-
[HttpGet("profile")]
|
|
14
|
-
public ContentResult ShowProfile(string username, string bio)
|
|
15
|
-
{
|
|
16
|
-
// Vulnerable: username and bio embedded without encoding
|
|
17
|
-
string html = $@"
|
|
18
|
-
<html><body>
|
|
19
|
-
<h1>{username}</h1>
|
|
20
|
-
<p>{bio}</p>
|
|
21
|
-
<script>var user = ""{username}"";</script>
|
|
22
|
-
</body></html>";
|
|
23
|
-
return Content(html, "text/html");
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: xss
|
|
3
|
+
// severity: high
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: XSS via MVC action returning raw HTML with user input embedded
|
|
6
|
+
|
|
7
|
+
using Microsoft.AspNetCore.Mvc;
|
|
8
|
+
|
|
9
|
+
namespace App.Controllers
|
|
10
|
+
{
|
|
11
|
+
public class ProfileController : Controller
|
|
12
|
+
{
|
|
13
|
+
[HttpGet("profile")]
|
|
14
|
+
public ContentResult ShowProfile(string username, string bio)
|
|
15
|
+
{
|
|
16
|
+
// Vulnerable: username and bio embedded without encoding
|
|
17
|
+
string html = $@"
|
|
18
|
+
<html><body>
|
|
19
|
+
<h1>{username}</h1>
|
|
20
|
+
<p>{bio}</p>
|
|
21
|
+
<script>var user = ""{username}"";</script>
|
|
22
|
+
</body></html>";
|
|
23
|
+
return Content(html, "text/html");
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: xss
|
|
3
|
-
// severity: high
|
|
4
|
-
// language: csharp
|
|
5
|
-
// expected: XSS via HtmlHelper.Raw embedding user-supplied comment content
|
|
6
|
-
|
|
7
|
-
using Microsoft.AspNetCore.Html;
|
|
8
|
-
using Microsoft.AspNetCore.Mvc;
|
|
9
|
-
using Microsoft.AspNetCore.Mvc.Rendering;
|
|
10
|
-
|
|
11
|
-
namespace App.Controllers
|
|
12
|
-
{
|
|
13
|
-
public class CommentController : Controller
|
|
14
|
-
{
|
|
15
|
-
[HttpGet("comments")]
|
|
16
|
-
public IActionResult Index(string comment, string author)
|
|
17
|
-
{
|
|
18
|
-
// Vulnerable: Html.Raw allows unsanitized input to render as HTML
|
|
19
|
-
var rawComment = new HtmlString(
|
|
20
|
-
$"<div class=\"comment\"><b>{author}</b>: {comment}</div>");
|
|
21
|
-
ViewBag.Comment = rawComment;
|
|
22
|
-
return View();
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: xss
|
|
3
|
+
// severity: high
|
|
4
|
+
// language: csharp
|
|
5
|
+
// expected: XSS via HtmlHelper.Raw embedding user-supplied comment content
|
|
6
|
+
|
|
7
|
+
using Microsoft.AspNetCore.Html;
|
|
8
|
+
using Microsoft.AspNetCore.Mvc;
|
|
9
|
+
using Microsoft.AspNetCore.Mvc.Rendering;
|
|
10
|
+
|
|
11
|
+
namespace App.Controllers
|
|
12
|
+
{
|
|
13
|
+
public class CommentController : Controller
|
|
14
|
+
{
|
|
15
|
+
[HttpGet("comments")]
|
|
16
|
+
public IActionResult Index(string comment, string author)
|
|
17
|
+
{
|
|
18
|
+
// Vulnerable: Html.Raw allows unsanitized input to render as HTML
|
|
19
|
+
var rawComment = new HtmlString(
|
|
20
|
+
$"<div class=\"comment\"><b>{author}</b>: {comment}</div>");
|
|
21
|
+
ViewBag.Comment = rawComment;
|
|
22
|
+
return View();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|