thuban 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/dist/package.json +63 -0
  2. package/dist/packages/crucible/rules/code-scanner-core.json +129 -0
  3. package/dist/packages/crucible/rules/command-injection.json +411 -0
  4. package/dist/packages/crucible/rules/crypto-misuse.json +35 -0
  5. package/dist/packages/crucible/rules/deserialization.json +152 -0
  6. package/dist/packages/crucible/rules/env-injection.json +46 -0
  7. package/dist/packages/crucible/rules/eval-abuse.json +104 -0
  8. package/dist/packages/crucible/rules/file-upload.json +46 -0
  9. package/dist/packages/crucible/rules/hallucination.json +22 -0
  10. package/dist/packages/crucible/rules/hardcoded-secret.json +397 -0
  11. package/dist/packages/crucible/rules/hardcoded-url.json +13 -0
  12. package/dist/packages/crucible/rules/insecure-crypto.json +302 -0
  13. package/dist/packages/crucible/rules/integer-overflow.json +35 -0
  14. package/dist/packages/crucible/rules/log-injection.json +33 -0
  15. package/dist/packages/crucible/rules/mass-assignment.json +112 -0
  16. package/dist/packages/crucible/rules/open-redirect.json +196 -0
  17. package/dist/packages/crucible/rules/path-traversal.json +422 -0
  18. package/dist/packages/crucible/rules/prototype-pollution.json +22 -0
  19. package/dist/packages/crucible/rules/sql-injection.json +597 -0
  20. package/dist/packages/crucible/rules/ssrf.json +557 -0
  21. package/dist/packages/crucible/rules/timing-attack.json +55 -0
  22. package/dist/packages/crucible/rules/unsafe-block.json +24 -0
  23. package/dist/packages/crucible/rules/xss.json +641 -0
  24. package/dist/packages/crucible/rules/xxe.json +66 -0
  25. package/dist/packages/crucible/rules/yaml-deserialization.json +22 -0
  26. package/dist/packages/crucible/rules/yaml-injection.json +22 -0
  27. package/dist/packages/scanner/executive-report.js +1 -1
  28. package/dist/packages/scanner/hallucination-detector.js +1 -1
  29. package/dist/packages/scanner/secret-scanner.js +1 -1
  30. package/package.json +7 -4
  31. package/dist/packages/crucible/seeds/python/seed-021 3.py +0 -37
  32. package/dist/packages/crucible/seeds/python/seed-022 3.py +0 -34
  33. package/dist/packages/crucible/seeds/python/seed-023 3.py +0 -37
  34. package/dist/packages/crucible/seeds/python/seed-024 3.py +0 -38
  35. package/dist/packages/crucible/seeds/python/seed-025 3.py +0 -40
  36. package/dist/packages/crucible/seeds/python/seed-026 3.py +0 -35
  37. package/dist/packages/crucible/seeds/python/seed-027 3.py +0 -35
  38. package/dist/packages/crucible/seeds/python/seed-028 3.py +0 -42
  39. package/dist/packages/crucible/seeds/python/seed-030 3.py +0 -37
  40. package/dist/packages/crucible/seeds/python/seed-031 3.py +0 -34
  41. package/dist/packages/crucible/seeds/python/seed-036 3.py +0 -33
  42. package/dist/packages/crucible/seeds/python/seed-037 3.py +0 -41
  43. package/dist/packages/crucible/seeds/python/seed-038 3.py +0 -33
  44. package/dist/packages/crucible/seeds/python/seed-039 3.py +0 -39
  45. package/dist/packages/crucible/seeds/python/seed-040 3.py +0 -39
  46. package/dist/packages/crucible/seeds/python/seed-041 3.py +0 -37
  47. package/dist/packages/crucible/seeds/python/seed-042 3.py +0 -38
  48. package/dist/packages/crucible/seeds/python/seed-043 3.py +0 -32
  49. package/dist/packages/crucible/seeds/python/seed-044 3.py +0 -38
  50. package/dist/packages/crucible/seeds/python/seed-045 3.py +0 -36
  51. package/dist/packages/crucible/seeds/python/seed-046 3.py +0 -33
  52. package/dist/packages/crucible/seeds/python/seed-047 3.py +0 -44
  53. package/dist/packages/crucible/seeds/python/seed-048 3.py +0 -35
  54. package/dist/packages/crucible/seeds/python/seed-049 3.py +0 -39
  55. package/dist/packages/crucible/seeds/python/seed-050 3.py +0 -39
  56. package/dist/packages/crucible/seeds/python/seed-051 3.py +0 -38
  57. package/dist/packages/crucible/seeds/python/seed-052 3.py +0 -41
  58. package/dist/packages/crucible/seeds/ruby/seed-001 3.rb +0 -15
  59. package/dist/packages/crucible/seeds/ruby/seed-002 3.rb +0 -22
  60. package/dist/packages/crucible/seeds/ruby/seed-003 3.rb +0 -25
  61. package/dist/packages/crucible/seeds/ruby/seed-004 3.rb +0 -17
  62. package/dist/packages/crucible/seeds/ruby/seed-005 3.rb +0 -21
  63. package/dist/packages/crucible/seeds/ruby/seed-006 3.rb +0 -17
  64. package/dist/packages/crucible/seeds/ruby/seed-007 3.rb +0 -16
  65. package/dist/packages/crucible/seeds/ruby/seed-008 3.rb +0 -18
  66. package/dist/packages/crucible/seeds/ruby/seed-009 3.rb +0 -20
  67. package/dist/packages/crucible/seeds/ruby/seed-010 3.rb +0 -24
  68. package/dist/packages/crucible/seeds/ruby/seed-011 3.rb +0 -21
  69. package/dist/packages/crucible/seeds/ruby/seed-012 3.rb +0 -22
  70. package/dist/packages/crucible/seeds/ruby/seed-013 3.rb +0 -21
  71. package/dist/packages/crucible/seeds/ruby/seed-014 3.rb +0 -16
  72. package/dist/packages/crucible/seeds/ruby/seed-015 3.rb +0 -18
  73. package/dist/packages/crucible/seeds/ruby/seed-016 3.rb +0 -17
  74. package/dist/packages/crucible/seeds/ruby/seed-017 3.rb +0 -25
  75. package/dist/packages/crucible/seeds/ruby/seed-018 3.rb +0 -23
  76. package/dist/packages/crucible/seeds/ruby/seed-019 3.rb +0 -20
  77. package/dist/packages/crucible/seeds/ruby/seed-020 3.rb +0 -17
  78. package/dist/packages/crucible/seeds/ruby/seed-021 3.rb +0 -20
  79. package/dist/packages/crucible/seeds/ruby/seed-022 3.rb +0 -21
  80. package/dist/packages/crucible/seeds/ruby/seed-023 3.rb +0 -19
  81. package/dist/packages/crucible/seeds/ruby/seed-024 3.rb +0 -17
  82. package/dist/packages/crucible/seeds/ruby/seed-025 3.rb +0 -17
  83. package/dist/packages/crucible/seeds/ruby/seed-026 3.rb +0 -18
  84. package/dist/packages/crucible/seeds/ruby/seed-027 3.rb +0 -21
  85. package/dist/packages/crucible/seeds/ruby/seed-028 3.rb +0 -22
  86. package/dist/packages/crucible/seeds/ruby/seed-029 3.rb +0 -19
  87. package/dist/packages/crucible/seeds/ruby/seed-030 3.rb +0 -20
  88. package/dist/packages/crucible/seeds/ruby/seed-031 3.rb +0 -17
  89. package/dist/packages/crucible/seeds/ruby/seed-032 3.rb +0 -22
  90. package/dist/packages/crucible/seeds/ruby/seed-033 3.rb +0 -18
  91. package/dist/packages/crucible/seeds/ruby/seed-034 3.rb +0 -19
  92. package/dist/packages/crucible/seeds/ruby/seed-035 3.rb +0 -19
  93. package/dist/packages/crucible/seeds/ruby/seed-036 3.rb +0 -18
  94. package/dist/packages/crucible/seeds/ruby/seed-037 3.rb +0 -21
  95. package/dist/packages/crucible/seeds/ruby/seed-038 3.rb +0 -24
  96. package/dist/packages/crucible/seeds/ruby/seed-039 3.rb +0 -24
  97. package/dist/packages/crucible/seeds/ruby/seed-040 3.rb +0 -22
  98. package/dist/packages/crucible/seeds/ruby/seed-041 3.rb +0 -23
  99. package/dist/packages/crucible/seeds/ruby/seed-042 3.rb +0 -25
  100. package/dist/packages/crucible/seeds/ruby/seed-043 3.rb +0 -23
  101. package/dist/packages/crucible/seeds/ruby/seed-044 3.rb +0 -16
  102. package/dist/packages/crucible/seeds/ruby/seed-045 3.rb +0 -22
  103. package/dist/packages/crucible/seeds/ruby/seed-046 3.rb +0 -27
  104. package/dist/packages/crucible/seeds/ruby/seed-047 3.rb +0 -26
  105. package/dist/packages/crucible/seeds/ruby/seed-048 3.rb +0 -24
  106. package/dist/packages/crucible/seeds/ruby/seed-049 3.rb +0 -20
  107. package/dist/packages/crucible/seeds/ruby/seed-050 3.rb +0 -27
  108. package/dist/packages/crucible/seeds/rust/seed-001 3.rs +0 -25
  109. package/dist/packages/crucible/seeds/rust/seed-002 3.rs +0 -20
  110. package/dist/packages/crucible/seeds/rust/seed-003 3.rs +0 -23
  111. package/dist/packages/crucible/seeds/rust/seed-004 3.rs +0 -21
  112. package/dist/packages/crucible/seeds/rust/seed-005 3.rs +0 -21
  113. package/dist/packages/crucible/seeds/rust/seed-006 3.rs +0 -24
  114. package/dist/packages/crucible/seeds/rust/seed-007 3.rs +0 -20
  115. package/dist/packages/crucible/seeds/rust/seed-008 3.rs +0 -19
  116. package/dist/packages/crucible/seeds/rust/seed-009 3.rs +0 -28
  117. package/dist/packages/crucible/seeds/rust/seed-010 3.rs +0 -28
  118. package/dist/packages/crucible/seeds/rust/seed-011 3.rs +0 -25
  119. package/dist/packages/crucible/seeds/rust/seed-012 3.rs +0 -31
  120. package/dist/packages/crucible/seeds/rust/seed-013 3.rs +0 -27
  121. package/dist/packages/crucible/seeds/rust/seed-014 3.rs +0 -30
  122. package/dist/packages/crucible/seeds/rust/seed-015 3.rs +0 -33
  123. package/dist/packages/crucible/seeds/rust/seed-016 3.rs +0 -22
  124. package/dist/packages/crucible/seeds/rust/seed-017 3.rs +0 -28
  125. package/dist/packages/crucible/seeds/rust/seed-018 3.rs +0 -21
  126. package/dist/packages/crucible/seeds/rust/seed-019 3.rs +0 -36
  127. package/dist/packages/crucible/seeds/rust/seed-020 3.rs +0 -27
  128. package/dist/packages/crucible/seeds/rust/seed-021 3.rs +0 -26
  129. package/dist/packages/crucible/seeds/rust/seed-022 3.rs +0 -23
  130. package/dist/packages/crucible/seeds/rust/seed-023 3.rs +0 -22
  131. package/dist/packages/crucible/seeds/rust/seed-024 3.rs +0 -24
  132. package/dist/packages/crucible/seeds/rust/seed-025 3.rs +0 -29
  133. package/dist/packages/crucible/seeds/rust/seed-026 3.rs +0 -23
  134. package/dist/packages/crucible/seeds/rust/seed-027 3.rs +0 -24
  135. package/dist/packages/crucible/seeds/rust/seed-028 3.rs +0 -25
  136. package/dist/packages/crucible/seeds/rust/seed-029 3.rs +0 -25
  137. package/dist/packages/crucible/seeds/rust/seed-030 3.rs +0 -30
  138. package/dist/packages/crucible/seeds/rust/seed-031 3.rs +0 -22
  139. package/dist/packages/crucible/seeds/rust/seed-032 3.rs +0 -25
  140. package/dist/packages/crucible/seeds/rust/seed-033 3.rs +0 -25
  141. package/dist/packages/crucible/seeds/rust/seed-034 3.rs +0 -20
  142. package/dist/packages/crucible/seeds/rust/seed-035 3.rs +0 -28
  143. package/dist/packages/crucible/seeds/rust/seed-036 3.rs +0 -26
  144. package/dist/packages/crucible/seeds/rust/seed-037 3.rs +0 -31
  145. package/dist/packages/crucible/seeds/rust/seed-038 3.rs +0 -25
  146. package/dist/packages/crucible/seeds/rust/seed-039 3.rs +0 -28
  147. package/dist/packages/crucible/seeds/rust/seed-040 3.rs +0 -27
  148. package/dist/packages/crucible/seeds/rust/seed-041 3.rs +0 -32
  149. package/dist/packages/crucible/seeds/rust/seed-042 3.rs +0 -27
  150. package/dist/packages/crucible/seeds/rust/seed-043 3.rs +0 -29
  151. package/dist/packages/crucible/seeds/rust/seed-044 3.rs +0 -25
  152. package/dist/packages/crucible/seeds/rust/seed-045 3.rs +0 -28
  153. package/dist/packages/crucible/seeds/rust/seed-046 3.rs +0 -25
  154. package/dist/packages/crucible/seeds/rust/seed-047 3.rs +0 -34
  155. package/dist/packages/crucible/seeds/rust/seed-048 3.rs +0 -21
  156. package/dist/packages/crucible/seeds/rust/seed-049 3.rs +0 -26
  157. package/dist/packages/crucible/seeds/rust/seed-050 3.rs +0 -23
  158. package/dist/packages/crucible/seeds/ts/seed-001 3.ts +0 -32
  159. package/dist/packages/crucible/seeds/ts/seed-002 3.ts +0 -34
  160. package/dist/packages/crucible/seeds/ts/seed-003 3.ts +0 -28
  161. package/dist/packages/crucible/seeds/ts/seed-004 3.ts +0 -34
  162. package/dist/packages/crucible/seeds/ts/seed-005 3.ts +0 -32
  163. package/dist/packages/crucible/seeds/ts/seed-006 3.ts +0 -31
  164. package/dist/packages/crucible/seeds/ts/seed-007 3.ts +0 -28
  165. package/dist/packages/crucible/seeds/ts/seed-008 3.ts +0 -40
  166. package/dist/packages/crucible/seeds/ts/seed-009 3.ts +0 -31
  167. package/dist/packages/crucible/seeds/ts/seed-010 3.ts +0 -33
  168. package/dist/packages/crucible/seeds/ts/seed-011 3.ts +0 -29
  169. package/dist/packages/crucible/seeds/ts/seed-012 3.ts +0 -34
  170. package/dist/packages/crucible/seeds/ts/seed-013 3.ts +0 -31
  171. package/dist/packages/crucible/seeds/ts/seed-014 3.ts +0 -36
  172. package/dist/packages/crucible/seeds/ts/seed-015 3.ts +0 -31
  173. package/dist/packages/crucible/seeds/ts/seed-016 3.ts +0 -37
  174. package/dist/packages/crucible/seeds/ts/seed-017 3.ts +0 -44
  175. package/dist/packages/crucible/seeds/ts/seed-018 3.ts +0 -33
  176. package/dist/packages/crucible/seeds/ts/seed-019 3.ts +0 -32
  177. package/dist/packages/crucible/seeds/ts/seed-020 3.ts +0 -33
  178. package/dist/packages/crucible/seeds/ts/seed-021 3.ts +0 -33
  179. package/dist/packages/crucible/seeds/ts/seed-022 3.ts +0 -34
  180. package/dist/packages/crucible/seeds/ts/seed-023 3.ts +0 -33
  181. package/dist/packages/crucible/seeds/ts/seed-024 3.ts +0 -35
  182. package/dist/packages/crucible/seeds/ts/seed-025 3.ts +0 -29
  183. package/dist/packages/crucible/seeds/ts/seed-026 3.ts +0 -36
  184. package/dist/packages/crucible/seeds/ts/seed-027 3.ts +0 -30
  185. package/dist/packages/crucible/seeds/ts/seed-028 3.ts +0 -32
  186. package/dist/packages/crucible/seeds/ts/seed-029 3.ts +0 -34
  187. package/dist/packages/crucible/seeds/ts/seed-030 3.ts +0 -37
  188. package/dist/packages/crucible/seeds/ts/seed-031 3.ts +0 -31
  189. package/dist/packages/crucible/seeds/ts/seed-032 3.ts +0 -32
  190. package/dist/packages/crucible/seeds/ts/seed-033 3.ts +0 -32
  191. package/dist/packages/crucible/seeds/ts/seed-034 3.ts +0 -34
  192. package/dist/packages/crucible/seeds/ts/seed-035 3.ts +0 -29
  193. package/dist/packages/crucible/seeds/ts/seed-036 3.ts +0 -34
  194. package/dist/packages/crucible/seeds/ts/seed-037 3.ts +0 -33
  195. package/dist/packages/crucible/seeds/ts/seed-038 3.ts +0 -29
  196. package/dist/packages/crucible/seeds/ts/seed-039 3.ts +0 -35
  197. package/dist/packages/crucible/seeds/ts/seed-040 3.ts +0 -31
  198. package/dist/packages/crucible/seeds/ts/seed-041 3.ts +0 -29
  199. package/dist/packages/crucible/seeds/ts/seed-042 3.ts +0 -33
  200. package/dist/packages/crucible/seeds/ts/seed-043 3.ts +0 -32
  201. package/dist/packages/crucible/seeds/ts/seed-044 3.ts +0 -36
  202. package/dist/packages/crucible/seeds/ts/seed-045 3.ts +0 -39
  203. package/dist/packages/crucible/seeds/ts/seed-046 3.ts +0 -41
  204. package/dist/packages/crucible/seeds/ts/seed-047 3.ts +0 -33
  205. package/dist/packages/crucible/seeds/ts/seed-048 3.ts +0 -33
  206. package/dist/packages/crucible/seeds/ts/seed-049 3.ts +0 -34
  207. package/dist/packages/crucible/seeds/ts/seed-050 3.ts +0 -41
  208. package/dist/packages/crucible/seeds/ts/seed-051 3.ts +0 -34
  209. package/dist/packages/crucible/seeds/ts/seed-052 3.ts +0 -36
@@ -0,0 +1,35 @@
1
+ [
2
+ {
3
+ "id": "INT001",
4
+ "pattern": "\\bas\\s+(?:u8|u16|u32|i8|i16|i32|i64|usize)\\b",
5
+ "flags": "",
6
+ "category": "integer_overflow",
7
+ "description": "Cast truncation: `val as u8/u16/u32/i32/usize` silently drops bits",
8
+ "language": [
9
+ "rust"
10
+ ],
11
+ "severity": "medium"
12
+ },
13
+ {
14
+ "id": "INT002",
15
+ "pattern": "\\w+\\s*\\*\\s*\\w*(?:size|len)\\w*\\b",
16
+ "flags": "i",
17
+ "category": "integer_overflow",
18
+ "description": "Allocation size computed from untrusted multiplication (user_size * element_size)",
19
+ "language": [
20
+ "rust"
21
+ ],
22
+ "severity": "medium"
23
+ },
24
+ {
25
+ "id": "INT003",
26
+ "pattern": "\\[\\s*(?:index|idx|start\\.\\.end)\\s*\\]|\\[\\s*row\\s*\\]\\s*\\[\\s*col\\s*\\]|\\[\\s*n\\s*\\]",
27
+ "flags": "",
28
+ "category": "integer_overflow",
29
+ "description": "Array/slice indexing with named variable index / range (no bounds check)",
30
+ "language": [
31
+ "rust"
32
+ ],
33
+ "severity": "medium"
34
+ }
35
+ ]
@@ -0,0 +1,33 @@
1
+ [
2
+ {
3
+ "id": "LOG001",
4
+ "pattern": "logger\\.(?:info|error|warn|debug)\\s*\\(.*\\+\\s*\\w+",
5
+ "flags": "",
6
+ "category": "log_injection",
7
+ "description": "Log injection",
8
+ "language": [
9
+ "js",
10
+ "ts",
11
+ "python",
12
+ "java",
13
+ "go",
14
+ "csharp",
15
+ "php",
16
+ "ruby",
17
+ "rust",
18
+ "kotlin"
19
+ ],
20
+ "severity": "medium"
21
+ },
22
+ {
23
+ "id": "LOG002",
24
+ "pattern": "\\blog\\.(?:info|error|warn|debug)\\s*\\(.*\\+\\s*\\w+",
25
+ "flags": "",
26
+ "category": "log_injection",
27
+ "description": "Java: log4j log.* injection (lowercase `log` logger variable)",
28
+ "language": [
29
+ "java"
30
+ ],
31
+ "severity": "medium"
32
+ }
33
+ ]
@@ -0,0 +1,112 @@
1
+ [
2
+ {
3
+ "id": "MASS001",
4
+ "pattern": "params\\[:\\w+\\]\\.permit!",
5
+ "flags": "i",
6
+ "category": "mass_assignment",
7
+ "description": "Ruby mass assignment",
8
+ "language": [
9
+ "ruby"
10
+ ],
11
+ "severity": "medium"
12
+ },
13
+ {
14
+ "id": "MASS002",
15
+ "pattern": "\\.update_attributes\\s*\\(\\s*params",
16
+ "flags": "i",
17
+ "category": "mass_assignment",
18
+ "description": "Ruby mass assignment",
19
+ "language": [
20
+ "ruby"
21
+ ],
22
+ "severity": "medium"
23
+ },
24
+ {
25
+ "id": "MASS003",
26
+ "pattern": "\\.update\\s*\\(\\s*params\\[:\\w+\\]\\s*\\)",
27
+ "flags": "i",
28
+ "category": "mass_assignment",
29
+ "description": "Ruby mass assignment",
30
+ "language": [
31
+ "ruby"
32
+ ],
33
+ "severity": "medium"
34
+ },
35
+ {
36
+ "id": "MASS004",
37
+ "pattern": "\\.create\\s*\\(\\s*params\\b(?!\\s*[.\\[])|User\\.create_from_params",
38
+ "flags": "i",
39
+ "category": "mass_assignment",
40
+ "description": "Ruby mass assignment: create/new/update with unfiltered params hash",
41
+ "language": [
42
+ "ruby"
43
+ ],
44
+ "severity": "medium"
45
+ },
46
+ {
47
+ "id": "MASS005",
48
+ "pattern": "\\.new\\s*\\(\\s*registration_params\\b",
49
+ "flags": "i",
50
+ "category": "mass_assignment",
51
+ "description": "Ruby mass assignment: create/new/update with unfiltered params hash",
52
+ "language": [
53
+ "ruby"
54
+ ],
55
+ "severity": "medium"
56
+ },
57
+ {
58
+ "id": "MASS006",
59
+ "pattern": "params\\.require\\s*\\([^)]+\\)\\.permit!",
60
+ "flags": "i",
61
+ "category": "mass_assignment",
62
+ "description": "Ruby mass assignment: create/new/update with unfiltered params hash",
63
+ "language": [
64
+ "ruby"
65
+ ],
66
+ "severity": "medium"
67
+ },
68
+ {
69
+ "id": "MASS007",
70
+ "pattern": "update_attributes!\\s*\\(\\s*\\w*(?:request_params|attrs|hash)",
71
+ "flags": "i",
72
+ "category": "mass_assignment",
73
+ "description": "Ruby mass assignment: create/new/update with unfiltered params hash",
74
+ "language": [
75
+ "ruby"
76
+ ],
77
+ "severity": "medium"
78
+ },
79
+ {
80
+ "id": "MASS008",
81
+ "pattern": "\\.create!\\s*\\(\\s*attrs\\s*\\)",
82
+ "flags": "i",
83
+ "category": "mass_assignment",
84
+ "description": "Ruby mass assignment: create/new/update with unfiltered params hash",
85
+ "language": [
86
+ "ruby"
87
+ ],
88
+ "severity": "medium"
89
+ },
90
+ {
91
+ "id": "MASS009",
92
+ "pattern": "\\bcreate\\s*\\(\\s*params\\s*\\)",
93
+ "flags": "",
94
+ "category": "mass_assignment",
95
+ "description": "Ruby mass assignment: bare create(params)/new(registration_params) call (no receiver dot)",
96
+ "language": [
97
+ "ruby"
98
+ ],
99
+ "severity": "medium"
100
+ },
101
+ {
102
+ "id": "MASS010",
103
+ "pattern": "\\bnew\\s*\\(\\s*registration_params\\b",
104
+ "flags": "i",
105
+ "category": "mass_assignment",
106
+ "description": "Ruby mass assignment: bare create(params)/new(registration_params) call (no receiver dot)",
107
+ "language": [
108
+ "ruby"
109
+ ],
110
+ "severity": "medium"
111
+ }
112
+ ]
@@ -0,0 +1,196 @@
1
+ [
2
+ {
3
+ "id": "REDIR001",
4
+ "pattern": "redirect_to\\s+params\\[|redirect_to\\s+\\w+\\s*\\|\\||http\\.Redirect\\s*\\([^)]*r\\.Header|Response\\.Redirect\\s*\\(\\s*\\w*[Uu]rl",
5
+ "flags": "i",
6
+ "category": "open_redirect",
7
+ "description": "Open redirect (various frameworks)",
8
+ "language": [
9
+ "js",
10
+ "ts",
11
+ "python",
12
+ "java",
13
+ "go",
14
+ "csharp",
15
+ "php",
16
+ "ruby",
17
+ "rust",
18
+ "kotlin"
19
+ ],
20
+ "severity": "medium"
21
+ },
22
+ {
23
+ "id": "REDIR002",
24
+ "pattern": "http\\.Redirect\\s*\\([^,]+,\\s*[^,]+,\\s*(?:returnURL|redirectTo|returnUrl|returnTo|referer|destination)",
25
+ "flags": "i",
26
+ "category": "open_redirect",
27
+ "description": "Go open redirect: http.Redirect with user-controlled variable (returnURL etc.)",
28
+ "language": [
29
+ "go"
30
+ ],
31
+ "severity": "medium"
32
+ },
33
+ {
34
+ "id": "REDIR003",
35
+ "pattern": "r\\.URL\\.Query\\(\\)\\.Get\\s*\\(\\s*[\"']return",
36
+ "flags": "i",
37
+ "category": "open_redirect",
38
+ "description": "Go open redirect: r.URL.Query() used as redirect target",
39
+ "language": [
40
+ "go"
41
+ ],
42
+ "severity": "medium"
43
+ },
44
+ {
45
+ "id": "REDIR004",
46
+ "pattern": "Redirect\\s*\\(\\s*(?:\\w*[Uu]rl|returnUrl)\\b",
47
+ "flags": "",
48
+ "category": "open_redirect",
49
+ "description": "Open redirect",
50
+ "language": [
51
+ "js",
52
+ "ts",
53
+ "python",
54
+ "java",
55
+ "go",
56
+ "csharp",
57
+ "php",
58
+ "ruby",
59
+ "rust",
60
+ "kotlin"
61
+ ],
62
+ "severity": "medium"
63
+ },
64
+ {
65
+ "id": "REDIR005",
66
+ "pattern": "context\\.Response\\.Redirect\\s*\\(\\s*(?:next|url|returnUrl|redirect)",
67
+ "flags": "i",
68
+ "category": "open_redirect",
69
+ "description": "C# open redirect",
70
+ "language": [
71
+ "csharp"
72
+ ],
73
+ "severity": "medium"
74
+ },
75
+ {
76
+ "id": "REDIR006",
77
+ "pattern": "return Redirect\\s*\\(\\s*(?:returnUrl|destination|state|next)\\s*\\)",
78
+ "flags": "i",
79
+ "category": "open_redirect",
80
+ "description": "C# open redirect",
81
+ "language": [
82
+ "csharp"
83
+ ],
84
+ "severity": "medium"
85
+ },
86
+ {
87
+ "id": "REDIR007",
88
+ "pattern": "redirect_to\\s+params\\[:\\w+\\]",
89
+ "flags": "i",
90
+ "category": "open_redirect",
91
+ "description": "Ruby open redirect",
92
+ "language": [
93
+ "ruby"
94
+ ],
95
+ "severity": "medium"
96
+ },
97
+ {
98
+ "id": "REDIR008",
99
+ "pattern": "redirect_to\\s+(?:next_url|callback|destination|target)",
100
+ "flags": "i",
101
+ "category": "open_redirect",
102
+ "description": "Ruby open redirect",
103
+ "language": [
104
+ "ruby"
105
+ ],
106
+ "severity": "medium"
107
+ },
108
+ {
109
+ "id": "REDIR009",
110
+ "pattern": "header\\s*\\(\\s*[\"']Location:[\"']\\s*\\.\\s*\\$(?:_GET|_POST|url|next|redirect)",
111
+ "flags": "i",
112
+ "category": "open_redirect",
113
+ "description": "PHP open redirect: header Location",
114
+ "language": [
115
+ "php"
116
+ ],
117
+ "severity": "medium"
118
+ },
119
+ {
120
+ "id": "REDIR010",
121
+ "pattern": "header\\s*\\(\\s*[\"']Location:[\"']\\s*\\.\\s*\\$",
122
+ "flags": "i",
123
+ "category": "open_redirect",
124
+ "description": "PHP open redirect: header Location",
125
+ "language": [
126
+ "php"
127
+ ],
128
+ "severity": "medium"
129
+ },
130
+ {
131
+ "id": "REDIR011",
132
+ "pattern": "header\\s*\\(\\s*['\"]Location:\\s*['\"]\\s*\\.\\s*\\$(?:url|next|redirect|return_to|target|to)\\b",
133
+ "flags": "i",
134
+ "category": "open_redirect",
135
+ "description": "PHP open redirect: header('Location') with user-controlled variable",
136
+ "language": [
137
+ "php"
138
+ ],
139
+ "severity": "medium"
140
+ },
141
+ {
142
+ "id": "REDIR012",
143
+ "pattern": "header\\s*\\(\\s*['\"]Location:\\s*['\"]\\s*\\.\\s*\\$(?:_GET|_POST|_REQUEST)",
144
+ "flags": "i",
145
+ "category": "open_redirect",
146
+ "description": "PHP open redirect: header('Location') with user-controlled variable",
147
+ "language": [
148
+ "php"
149
+ ],
150
+ "severity": "medium"
151
+ },
152
+ {
153
+ "id": "REDIR013",
154
+ "pattern": "header\\s*\\(\\s*\"Location:\\s*\\$(?:url|next|redirect|target|return)",
155
+ "flags": "i",
156
+ "category": "open_redirect",
157
+ "description": "PHP open redirect: header('Location') with user-controlled variable",
158
+ "language": [
159
+ "php"
160
+ ],
161
+ "severity": "medium"
162
+ },
163
+ {
164
+ "id": "REDIR014",
165
+ "pattern": "header\\s*\\(\\s*\"Location:\\s*\"\\.\\s*\\$\\w",
166
+ "flags": "i",
167
+ "category": "open_redirect",
168
+ "description": "PHP open redirect: header('Location') with user-controlled variable",
169
+ "language": [
170
+ "php"
171
+ ],
172
+ "severity": "medium"
173
+ },
174
+ {
175
+ "id": "REDIR015",
176
+ "pattern": "http\\.Redirect\\s*\\(\\s*w\\s*,\\s*r\\s*,\\s*(?:returnURL|returnUrl|destination|state|next|returnTo|referer)",
177
+ "flags": "i",
178
+ "category": "open_redirect",
179
+ "description": "Go open redirect",
180
+ "language": [
181
+ "go"
182
+ ],
183
+ "severity": "medium"
184
+ },
185
+ {
186
+ "id": "REDIR016",
187
+ "pattern": "http\\.Redirect\\s*\\(\\s*w\\s*,\\s*r\\s*,\\s*(?:string\\()?\\s*(?:returnURL|returnUrl|destination|state|next|returnTo|referer)",
188
+ "flags": "i",
189
+ "category": "open_redirect",
190
+ "description": "Go: timing attack via != comparison of tokens; open redirect via decoded state",
191
+ "language": [
192
+ "go"
193
+ ],
194
+ "severity": "medium"
195
+ }
196
+ ]