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,22 +1,22 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: hardcoded_secret
|
|
3
|
-
// severity: high
|
|
4
|
-
// language: java
|
|
5
|
-
// expected: Hardcoded GitHub personal access token in repository client
|
|
6
|
-
|
|
7
|
-
import java.net.HttpURLConnection;
|
|
8
|
-
import java.net.URL;
|
|
9
|
-
|
|
10
|
-
public class GitHubClient {
|
|
11
|
-
private static final String GITHUB_TOKEN = "ghp_aBcDeFgHiJkLmNoPqRsTuVwXyZ012345";
|
|
12
|
-
private static final String API_BASE = "https://api.github.com";
|
|
13
|
-
|
|
14
|
-
public String getRepository(String owner, String repo) throws Exception {
|
|
15
|
-
URL url = new URL(API_BASE + "/repos/" + owner + "/" + repo);
|
|
16
|
-
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
|
|
17
|
-
conn.setRequestProperty("Authorization", "token " + GITHUB_TOKEN);
|
|
18
|
-
conn.setRequestProperty("Accept", "application/vnd.github.v3+json");
|
|
19
|
-
int status = conn.getResponseCode();
|
|
20
|
-
return "Status: " + status;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: hardcoded_secret
|
|
3
|
+
// severity: high
|
|
4
|
+
// language: java
|
|
5
|
+
// expected: Hardcoded GitHub personal access token in repository client
|
|
6
|
+
|
|
7
|
+
import java.net.HttpURLConnection;
|
|
8
|
+
import java.net.URL;
|
|
9
|
+
|
|
10
|
+
public class GitHubClient {
|
|
11
|
+
private static final String GITHUB_TOKEN = "ghp_aBcDeFgHiJkLmNoPqRsTuVwXyZ012345";
|
|
12
|
+
private static final String API_BASE = "https://api.github.com";
|
|
13
|
+
|
|
14
|
+
public String getRepository(String owner, String repo) throws Exception {
|
|
15
|
+
URL url = new URL(API_BASE + "/repos/" + owner + "/" + repo);
|
|
16
|
+
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
|
|
17
|
+
conn.setRequestProperty("Authorization", "token " + GITHUB_TOKEN);
|
|
18
|
+
conn.setRequestProperty("Accept", "application/vnd.github.v3+json");
|
|
19
|
+
int status = conn.getResponseCode();
|
|
20
|
+
return "Status: " + status;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: hardcoded_secret
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: java
|
|
5
|
-
// expected: Hardcoded Redis password and encryption key in configuration class
|
|
6
|
-
|
|
7
|
-
public class CacheConfig {
|
|
8
|
-
public static final String REDIS_HOST = "redis.internal.prod";
|
|
9
|
-
public static final int REDIS_PORT = 6379;
|
|
10
|
-
public static final String REDIS_PASSWORD = "RedisP@$$w0rd#Prod";
|
|
11
|
-
public static final String ENCRYPTION_KEY = "AES256KeyForCacheEncryption9876!";
|
|
12
|
-
public static final String ENCRYPTION_SALT = "SaltVal!2024";
|
|
13
|
-
|
|
14
|
-
public static String getRedisUri() {
|
|
15
|
-
return String.format("redis://:%s@%s:%d", REDIS_PASSWORD, REDIS_HOST, REDIS_PORT);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
public static byte[] getEncryptionKeyBytes() {
|
|
19
|
-
return ENCRYPTION_KEY.getBytes();
|
|
20
|
-
}
|
|
21
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: hardcoded_secret
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: java
|
|
5
|
+
// expected: Hardcoded Redis password and encryption key in configuration class
|
|
6
|
+
|
|
7
|
+
public class CacheConfig {
|
|
8
|
+
public static final String REDIS_HOST = "redis.internal.prod";
|
|
9
|
+
public static final int REDIS_PORT = 6379;
|
|
10
|
+
public static final String REDIS_PASSWORD = "RedisP@$$w0rd#Prod";
|
|
11
|
+
public static final String ENCRYPTION_KEY = "AES256KeyForCacheEncryption9876!";
|
|
12
|
+
public static final String ENCRYPTION_SALT = "SaltVal!2024";
|
|
13
|
+
|
|
14
|
+
public static String getRedisUri() {
|
|
15
|
+
return String.format("redis://:%s@%s:%d", REDIS_PASSWORD, REDIS_HOST, REDIS_PORT);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
public static byte[] getEncryptionKeyBytes() {
|
|
19
|
+
return ENCRYPTION_KEY.getBytes();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: hardcoded_secret
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: java
|
|
5
|
-
// expected: Hardcoded OAuth2 client secret in Spring Security configuration
|
|
6
|
-
|
|
7
|
-
import org.springframework.context.annotation.Bean;
|
|
8
|
-
import org.springframework.context.annotation.Configuration;
|
|
9
|
-
import org.springframework.security.oauth2.client.registration.ClientRegistration;
|
|
10
|
-
import org.springframework.security.oauth2.core.AuthorizationGrantType;
|
|
11
|
-
|
|
12
|
-
@Configuration
|
|
13
|
-
public class OAuth2Config {
|
|
14
|
-
private static final String CLIENT_ID = "my-app-client-id-prod";
|
|
15
|
-
private static final String CLIENT_SECRET = "oauth2-client-secret-xK9mP2qR7wZ4";
|
|
16
|
-
|
|
17
|
-
@Bean
|
|
18
|
-
public ClientRegistration googleClientRegistration() {
|
|
19
|
-
return ClientRegistration.withRegistrationId("google")
|
|
20
|
-
.clientId(CLIENT_ID)
|
|
21
|
-
.clientSecret(CLIENT_SECRET)
|
|
22
|
-
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
|
|
23
|
-
.redirectUri("{baseUrl}/login/oauth2/code/{registrationId}")
|
|
24
|
-
.scope("openid", "profile", "email")
|
|
25
|
-
.authorizationUri("https://accounts.google.com/o/oauth2/auth")
|
|
26
|
-
.tokenUri("https://oauth2.googleapis.com/token")
|
|
27
|
-
.build();
|
|
28
|
-
}
|
|
29
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: hardcoded_secret
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: java
|
|
5
|
+
// expected: Hardcoded OAuth2 client secret in Spring Security configuration
|
|
6
|
+
|
|
7
|
+
import org.springframework.context.annotation.Bean;
|
|
8
|
+
import org.springframework.context.annotation.Configuration;
|
|
9
|
+
import org.springframework.security.oauth2.client.registration.ClientRegistration;
|
|
10
|
+
import org.springframework.security.oauth2.core.AuthorizationGrantType;
|
|
11
|
+
|
|
12
|
+
@Configuration
|
|
13
|
+
public class OAuth2Config {
|
|
14
|
+
private static final String CLIENT_ID = "my-app-client-id-prod";
|
|
15
|
+
private static final String CLIENT_SECRET = "oauth2-client-secret-xK9mP2qR7wZ4";
|
|
16
|
+
|
|
17
|
+
@Bean
|
|
18
|
+
public ClientRegistration googleClientRegistration() {
|
|
19
|
+
return ClientRegistration.withRegistrationId("google")
|
|
20
|
+
.clientId(CLIENT_ID)
|
|
21
|
+
.clientSecret(CLIENT_SECRET)
|
|
22
|
+
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
|
|
23
|
+
.redirectUri("{baseUrl}/login/oauth2/code/{registrationId}")
|
|
24
|
+
.scope("openid", "profile", "email")
|
|
25
|
+
.authorizationUri("https://accounts.google.com/o/oauth2/auth")
|
|
26
|
+
.tokenUri("https://oauth2.googleapis.com/token")
|
|
27
|
+
.build();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: sql_injection
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: java
|
|
5
|
-
// expected: SQL injection via string concatenation in executeQuery
|
|
6
|
-
|
|
7
|
-
import java.sql.*;
|
|
8
|
-
|
|
9
|
-
public class UserRepository {
|
|
10
|
-
private Connection conn;
|
|
11
|
-
|
|
12
|
-
public ResultSet findByUsername(String username) throws SQLException {
|
|
13
|
-
// Vulnerable: direct string concatenation into SQL
|
|
14
|
-
String query = "SELECT * FROM users WHERE username = '" + username + "'";
|
|
15
|
-
Statement stmt = conn.createStatement();
|
|
16
|
-
return stmt.executeQuery(query);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
public boolean deleteUser(String userId) throws SQLException {
|
|
20
|
-
String sql = "DELETE FROM users WHERE id = " + userId;
|
|
21
|
-
Statement stmt = conn.createStatement();
|
|
22
|
-
return stmt.executeUpdate(sql) > 0;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: sql_injection
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: java
|
|
5
|
+
// expected: SQL injection via string concatenation in executeQuery
|
|
6
|
+
|
|
7
|
+
import java.sql.*;
|
|
8
|
+
|
|
9
|
+
public class UserRepository {
|
|
10
|
+
private Connection conn;
|
|
11
|
+
|
|
12
|
+
public ResultSet findByUsername(String username) throws SQLException {
|
|
13
|
+
// Vulnerable: direct string concatenation into SQL
|
|
14
|
+
String query = "SELECT * FROM users WHERE username = '" + username + "'";
|
|
15
|
+
Statement stmt = conn.createStatement();
|
|
16
|
+
return stmt.executeQuery(query);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public boolean deleteUser(String userId) throws SQLException {
|
|
20
|
+
String sql = "DELETE FROM users WHERE id = " + userId;
|
|
21
|
+
Statement stmt = conn.createStatement();
|
|
22
|
+
return stmt.executeUpdate(sql) > 0;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: sql_injection
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: java
|
|
5
|
-
// expected: SQL injection via string concatenation in login query
|
|
6
|
-
|
|
7
|
-
import java.sql.*;
|
|
8
|
-
import javax.servlet.http.*;
|
|
9
|
-
|
|
10
|
-
public class LoginServlet extends HttpServlet {
|
|
11
|
-
private Connection conn;
|
|
12
|
-
|
|
13
|
-
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
|
|
14
|
-
throws Exception {
|
|
15
|
-
String user = req.getParameter("username");
|
|
16
|
-
String pass = req.getParameter("password");
|
|
17
|
-
|
|
18
|
-
// Vulnerable: both parameters concatenated directly
|
|
19
|
-
String sql = "SELECT id FROM accounts WHERE username='" + user +
|
|
20
|
-
"' AND password='" + pass + "'";
|
|
21
|
-
Statement st = conn.createStatement();
|
|
22
|
-
ResultSet rs = st.executeQuery(sql);
|
|
23
|
-
if (rs.next()) {
|
|
24
|
-
req.getSession().setAttribute("userId", rs.getInt("id"));
|
|
25
|
-
resp.sendRedirect("/dashboard");
|
|
26
|
-
} else {
|
|
27
|
-
resp.sendRedirect("/login?error=1");
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: sql_injection
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: java
|
|
5
|
+
// expected: SQL injection via string concatenation in login query
|
|
6
|
+
|
|
7
|
+
import java.sql.*;
|
|
8
|
+
import javax.servlet.http.*;
|
|
9
|
+
|
|
10
|
+
public class LoginServlet extends HttpServlet {
|
|
11
|
+
private Connection conn;
|
|
12
|
+
|
|
13
|
+
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
|
|
14
|
+
throws Exception {
|
|
15
|
+
String user = req.getParameter("username");
|
|
16
|
+
String pass = req.getParameter("password");
|
|
17
|
+
|
|
18
|
+
// Vulnerable: both parameters concatenated directly
|
|
19
|
+
String sql = "SELECT id FROM accounts WHERE username='" + user +
|
|
20
|
+
"' AND password='" + pass + "'";
|
|
21
|
+
Statement st = conn.createStatement();
|
|
22
|
+
ResultSet rs = st.executeQuery(sql);
|
|
23
|
+
if (rs.next()) {
|
|
24
|
+
req.getSession().setAttribute("userId", rs.getInt("id"));
|
|
25
|
+
resp.sendRedirect("/dashboard");
|
|
26
|
+
} else {
|
|
27
|
+
resp.sendRedirect("/login?error=1");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: sql_injection
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: java
|
|
5
|
-
// expected: SQL injection via String.format building ORDER BY clause
|
|
6
|
-
|
|
7
|
-
import java.sql.*;
|
|
8
|
-
import java.util.ArrayList;
|
|
9
|
-
import java.util.List;
|
|
10
|
-
|
|
11
|
-
public class ProductSearch {
|
|
12
|
-
private Connection conn;
|
|
13
|
-
|
|
14
|
-
public List<String> searchProducts(String keyword, String sortColumn) throws SQLException {
|
|
15
|
-
// Vulnerable: sortColumn injected into ORDER BY without validation
|
|
16
|
-
String sql = String.format(
|
|
17
|
-
"SELECT name FROM products WHERE name LIKE '%%%s%%' ORDER BY %s",
|
|
18
|
-
keyword, sortColumn);
|
|
19
|
-
Statement stmt = conn.createStatement();
|
|
20
|
-
ResultSet rs = stmt.executeQuery(sql);
|
|
21
|
-
List<String> results = new ArrayList<>();
|
|
22
|
-
while (rs.next()) results.add(rs.getString("name"));
|
|
23
|
-
return results;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: sql_injection
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: java
|
|
5
|
+
// expected: SQL injection via String.format building ORDER BY clause
|
|
6
|
+
|
|
7
|
+
import java.sql.*;
|
|
8
|
+
import java.util.ArrayList;
|
|
9
|
+
import java.util.List;
|
|
10
|
+
|
|
11
|
+
public class ProductSearch {
|
|
12
|
+
private Connection conn;
|
|
13
|
+
|
|
14
|
+
public List<String> searchProducts(String keyword, String sortColumn) throws SQLException {
|
|
15
|
+
// Vulnerable: sortColumn injected into ORDER BY without validation
|
|
16
|
+
String sql = String.format(
|
|
17
|
+
"SELECT name FROM products WHERE name LIKE '%%%s%%' ORDER BY %s",
|
|
18
|
+
keyword, sortColumn);
|
|
19
|
+
Statement stmt = conn.createStatement();
|
|
20
|
+
ResultSet rs = stmt.executeQuery(sql);
|
|
21
|
+
List<String> results = new ArrayList<>();
|
|
22
|
+
while (rs.next()) results.add(rs.getString("name"));
|
|
23
|
+
return results;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: sql_injection
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: java
|
|
5
|
-
// expected: SQL injection through dynamic table name construction
|
|
6
|
-
|
|
7
|
-
import java.sql.*;
|
|
8
|
-
|
|
9
|
-
public class ReportGenerator {
|
|
10
|
-
private Connection conn;
|
|
11
|
-
|
|
12
|
-
public ResultSet generateReport(String reportType, String startDate, String endDate)
|
|
13
|
-
throws SQLException {
|
|
14
|
-
// Vulnerable: reportType used as table name without sanitization
|
|
15
|
-
String query = "SELECT * FROM " + reportType +
|
|
16
|
-
" WHERE created_at BETWEEN '" + startDate + "' AND '" + endDate + "'";
|
|
17
|
-
Statement stmt = conn.createStatement();
|
|
18
|
-
return stmt.executeQuery(query);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: sql_injection
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: java
|
|
5
|
+
// expected: SQL injection through dynamic table name construction
|
|
6
|
+
|
|
7
|
+
import java.sql.*;
|
|
8
|
+
|
|
9
|
+
public class ReportGenerator {
|
|
10
|
+
private Connection conn;
|
|
11
|
+
|
|
12
|
+
public ResultSet generateReport(String reportType, String startDate, String endDate)
|
|
13
|
+
throws SQLException {
|
|
14
|
+
// Vulnerable: reportType used as table name without sanitization
|
|
15
|
+
String query = "SELECT * FROM " + reportType +
|
|
16
|
+
" WHERE created_at BETWEEN '" + startDate + "' AND '" + endDate + "'";
|
|
17
|
+
Statement stmt = conn.createStatement();
|
|
18
|
+
return stmt.executeQuery(query);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: sql_injection
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: java
|
|
5
|
-
// expected: SQL injection in search with multiple concatenated parameters
|
|
6
|
-
|
|
7
|
-
import java.sql.*;
|
|
8
|
-
import javax.servlet.http.*;
|
|
9
|
-
|
|
10
|
-
public class SearchServlet extends HttpServlet {
|
|
11
|
-
private Connection conn;
|
|
12
|
-
|
|
13
|
-
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
|
|
14
|
-
throws Exception {
|
|
15
|
-
String name = req.getParameter("name");
|
|
16
|
-
String email = req.getParameter("email");
|
|
17
|
-
String role = req.getParameter("role");
|
|
18
|
-
|
|
19
|
-
// Vulnerable: three user params concatenated
|
|
20
|
-
String query = "SELECT * FROM employees WHERE name LIKE '%" + name +
|
|
21
|
-
"%' AND email = '" + email + "' AND role = '" + role + "'";
|
|
22
|
-
Statement stmt = conn.createStatement();
|
|
23
|
-
ResultSet rs = stmt.executeQuery(query);
|
|
24
|
-
// ... render results
|
|
25
|
-
}
|
|
26
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: sql_injection
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: java
|
|
5
|
+
// expected: SQL injection in search with multiple concatenated parameters
|
|
6
|
+
|
|
7
|
+
import java.sql.*;
|
|
8
|
+
import javax.servlet.http.*;
|
|
9
|
+
|
|
10
|
+
public class SearchServlet extends HttpServlet {
|
|
11
|
+
private Connection conn;
|
|
12
|
+
|
|
13
|
+
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
|
|
14
|
+
throws Exception {
|
|
15
|
+
String name = req.getParameter("name");
|
|
16
|
+
String email = req.getParameter("email");
|
|
17
|
+
String role = req.getParameter("role");
|
|
18
|
+
|
|
19
|
+
// Vulnerable: three user params concatenated
|
|
20
|
+
String query = "SELECT * FROM employees WHERE name LIKE '%" + name +
|
|
21
|
+
"%' AND email = '" + email + "' AND role = '" + role + "'";
|
|
22
|
+
Statement stmt = conn.createStatement();
|
|
23
|
+
ResultSet rs = stmt.executeQuery(query);
|
|
24
|
+
// ... render results
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: sql_injection
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: java
|
|
5
|
-
// expected: SQL injection via stored procedure call with string concatenation
|
|
6
|
-
|
|
7
|
-
import java.sql.*;
|
|
8
|
-
|
|
9
|
-
public class AuditLogger {
|
|
10
|
-
private Connection conn;
|
|
11
|
-
|
|
12
|
-
public void logEvent(String userId, String action, String detail) throws SQLException {
|
|
13
|
-
// Vulnerable: detail field concatenated into EXEC call
|
|
14
|
-
String sql = "EXEC sp_log_audit '" + userId + "', '" + action + "', '" + detail + "'";
|
|
15
|
-
Statement stmt = conn.createStatement();
|
|
16
|
-
stmt.execute(sql);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
public ResultSet getAuditTrail(String fromDate) throws SQLException {
|
|
20
|
-
String query = "SELECT * FROM audit_log WHERE event_time >= '" + fromDate + "'";
|
|
21
|
-
return conn.createStatement().executeQuery(query);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: sql_injection
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: java
|
|
5
|
+
// expected: SQL injection via stored procedure call with string concatenation
|
|
6
|
+
|
|
7
|
+
import java.sql.*;
|
|
8
|
+
|
|
9
|
+
public class AuditLogger {
|
|
10
|
+
private Connection conn;
|
|
11
|
+
|
|
12
|
+
public void logEvent(String userId, String action, String detail) throws SQLException {
|
|
13
|
+
// Vulnerable: detail field concatenated into EXEC call
|
|
14
|
+
String sql = "EXEC sp_log_audit '" + userId + "', '" + action + "', '" + detail + "'";
|
|
15
|
+
Statement stmt = conn.createStatement();
|
|
16
|
+
stmt.execute(sql);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public ResultSet getAuditTrail(String fromDate) throws SQLException {
|
|
20
|
+
String query = "SELECT * FROM audit_log WHERE event_time >= '" + fromDate + "'";
|
|
21
|
+
return conn.createStatement().executeQuery(query);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: sql_injection
|
|
3
|
-
// severity: critical
|
|
4
|
-
// language: java
|
|
5
|
-
// expected: SQL injection via IN clause built with user-supplied comma-separated IDs
|
|
6
|
-
|
|
7
|
-
import java.sql.*;
|
|
8
|
-
import java.util.List;
|
|
9
|
-
|
|
10
|
-
public class BatchProcessor {
|
|
11
|
-
private Connection conn;
|
|
12
|
-
|
|
13
|
-
public ResultSet getOrdersByIds(String rawIds) throws SQLException {
|
|
14
|
-
// Vulnerable: rawIds (e.g. "1,2,3") injected directly into IN clause
|
|
15
|
-
String sql = "SELECT * FROM orders WHERE id IN (" + rawIds + ")";
|
|
16
|
-
Statement stmt = conn.createStatement();
|
|
17
|
-
return stmt.executeQuery(sql);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
public int bulkUpdateStatus(String idList, String status) throws SQLException {
|
|
21
|
-
String sql = "UPDATE orders SET status='" + status +
|
|
22
|
-
"' WHERE id IN (" + idList + ")";
|
|
23
|
-
return conn.createStatement().executeUpdate(sql);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: sql_injection
|
|
3
|
+
// severity: critical
|
|
4
|
+
// language: java
|
|
5
|
+
// expected: SQL injection via IN clause built with user-supplied comma-separated IDs
|
|
6
|
+
|
|
7
|
+
import java.sql.*;
|
|
8
|
+
import java.util.List;
|
|
9
|
+
|
|
10
|
+
public class BatchProcessor {
|
|
11
|
+
private Connection conn;
|
|
12
|
+
|
|
13
|
+
public ResultSet getOrdersByIds(String rawIds) throws SQLException {
|
|
14
|
+
// Vulnerable: rawIds (e.g. "1,2,3") injected directly into IN clause
|
|
15
|
+
String sql = "SELECT * FROM orders WHERE id IN (" + rawIds + ")";
|
|
16
|
+
Statement stmt = conn.createStatement();
|
|
17
|
+
return stmt.executeQuery(sql);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public int bulkUpdateStatus(String idList, String status) throws SQLException {
|
|
21
|
+
String sql = "UPDATE orders SET status='" + status +
|
|
22
|
+
"' WHERE id IN (" + idList + ")";
|
|
23
|
+
return conn.createStatement().executeUpdate(sql);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: xss
|
|
3
|
-
// severity: high
|
|
4
|
-
// language: java
|
|
5
|
-
// expected: XSS via PrintWriter writing unescaped request parameter to response
|
|
6
|
-
|
|
7
|
-
import java.io.*;
|
|
8
|
-
import javax.servlet.http.*;
|
|
9
|
-
|
|
10
|
-
public class GreetingServlet extends HttpServlet {
|
|
11
|
-
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
|
|
12
|
-
throws IOException {
|
|
13
|
-
resp.setContentType("text/html");
|
|
14
|
-
PrintWriter out = resp.getWriter();
|
|
15
|
-
String name = req.getParameter("name");
|
|
16
|
-
// Vulnerable: name reflected directly into HTML without encoding
|
|
17
|
-
out.println("<html><body>");
|
|
18
|
-
out.println("<h1>Hello, " + name + "!</h1>");
|
|
19
|
-
out.println("<p>Welcome back to our portal.</p>");
|
|
20
|
-
out.println("</body></html>");
|
|
21
|
-
}
|
|
22
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: xss
|
|
3
|
+
// severity: high
|
|
4
|
+
// language: java
|
|
5
|
+
// expected: XSS via PrintWriter writing unescaped request parameter to response
|
|
6
|
+
|
|
7
|
+
import java.io.*;
|
|
8
|
+
import javax.servlet.http.*;
|
|
9
|
+
|
|
10
|
+
public class GreetingServlet extends HttpServlet {
|
|
11
|
+
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
|
|
12
|
+
throws IOException {
|
|
13
|
+
resp.setContentType("text/html");
|
|
14
|
+
PrintWriter out = resp.getWriter();
|
|
15
|
+
String name = req.getParameter("name");
|
|
16
|
+
// Vulnerable: name reflected directly into HTML without encoding
|
|
17
|
+
out.println("<html><body>");
|
|
18
|
+
out.println("<h1>Hello, " + name + "!</h1>");
|
|
19
|
+
out.println("<p>Welcome back to our portal.</p>");
|
|
20
|
+
out.println("</body></html>");
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: xss
|
|
3
|
-
// severity: high
|
|
4
|
-
// language: java
|
|
5
|
-
// expected: XSS via response.getWriter writing unescaped search query into page
|
|
6
|
-
|
|
7
|
-
import java.io.*;
|
|
8
|
-
import javax.servlet.http.*;
|
|
9
|
-
|
|
10
|
-
public class SearchResultsServlet extends HttpServlet {
|
|
11
|
-
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
|
|
12
|
-
throws IOException {
|
|
13
|
-
String query = req.getParameter("q");
|
|
14
|
-
PrintWriter pw = resp.getWriter();
|
|
15
|
-
resp.setContentType("text/html; charset=UTF-8");
|
|
16
|
-
// Vulnerable: raw query injected into meta and visible output
|
|
17
|
-
pw.write("<!DOCTYPE html><html><head>");
|
|
18
|
-
pw.write("<meta name=\"description\" content=\"Results for: " + query + "\">");
|
|
19
|
-
pw.write("</head><body>");
|
|
20
|
-
pw.write("<h2>Search results for: <em>" + query + "</em></h2>");
|
|
21
|
-
pw.write("<div id=\"results\"><!-- results here --></div>");
|
|
22
|
-
pw.write("</body></html>");
|
|
23
|
-
}
|
|
24
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: xss
|
|
3
|
+
// severity: high
|
|
4
|
+
// language: java
|
|
5
|
+
// expected: XSS via response.getWriter writing unescaped search query into page
|
|
6
|
+
|
|
7
|
+
import java.io.*;
|
|
8
|
+
import javax.servlet.http.*;
|
|
9
|
+
|
|
10
|
+
public class SearchResultsServlet extends HttpServlet {
|
|
11
|
+
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
|
|
12
|
+
throws IOException {
|
|
13
|
+
String query = req.getParameter("q");
|
|
14
|
+
PrintWriter pw = resp.getWriter();
|
|
15
|
+
resp.setContentType("text/html; charset=UTF-8");
|
|
16
|
+
// Vulnerable: raw query injected into meta and visible output
|
|
17
|
+
pw.write("<!DOCTYPE html><html><head>");
|
|
18
|
+
pw.write("<meta name=\"description\" content=\"Results for: " + query + "\">");
|
|
19
|
+
pw.write("</head><body>");
|
|
20
|
+
pw.write("<h2>Search results for: <em>" + query + "</em></h2>");
|
|
21
|
+
pw.write("<div id=\"results\"><!-- results here --></div>");
|
|
22
|
+
pw.write("</body></html>");
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
// [CRUCIBLE-SEED]
|
|
2
|
-
// category: xss
|
|
3
|
-
// severity: high
|
|
4
|
-
// language: java
|
|
5
|
-
// expected: XSS via JSP-style out.print with unescaped error message from request
|
|
6
|
-
|
|
7
|
-
import java.io.*;
|
|
8
|
-
import javax.servlet.http.*;
|
|
9
|
-
import javax.servlet.*;
|
|
10
|
-
|
|
11
|
-
public class ErrorPageServlet extends HttpServlet {
|
|
12
|
-
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
|
|
13
|
-
throws IOException, ServletException {
|
|
14
|
-
String errorMsg = req.getParameter("message");
|
|
15
|
-
String code = req.getParameter("code");
|
|
16
|
-
resp.setContentType("text/html");
|
|
17
|
-
PrintWriter out = resp.getWriter();
|
|
18
|
-
// Vulnerable: both parameters written without sanitization
|
|
19
|
-
out.print("<div class=\"alert alert-danger\">");
|
|
20
|
-
out.print("Error " + code + ": " + errorMsg);
|
|
21
|
-
out.print("</div>");
|
|
22
|
-
out.print("<a href=\"/\">Return home</a>");
|
|
23
|
-
}
|
|
24
|
-
}
|
|
1
|
+
// [CRUCIBLE-SEED]
|
|
2
|
+
// category: xss
|
|
3
|
+
// severity: high
|
|
4
|
+
// language: java
|
|
5
|
+
// expected: XSS via JSP-style out.print with unescaped error message from request
|
|
6
|
+
|
|
7
|
+
import java.io.*;
|
|
8
|
+
import javax.servlet.http.*;
|
|
9
|
+
import javax.servlet.*;
|
|
10
|
+
|
|
11
|
+
public class ErrorPageServlet extends HttpServlet {
|
|
12
|
+
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
|
|
13
|
+
throws IOException, ServletException {
|
|
14
|
+
String errorMsg = req.getParameter("message");
|
|
15
|
+
String code = req.getParameter("code");
|
|
16
|
+
resp.setContentType("text/html");
|
|
17
|
+
PrintWriter out = resp.getWriter();
|
|
18
|
+
// Vulnerable: both parameters written without sanitization
|
|
19
|
+
out.print("<div class=\"alert alert-danger\">");
|
|
20
|
+
out.print("Error " + code + ": " + errorMsg);
|
|
21
|
+
out.print("</div>");
|
|
22
|
+
out.print("<a href=\"/\">Return home</a>");
|
|
23
|
+
}
|
|
24
|
+
}
|