@sikkuumiii/defuse 0.0.0-stage → 0.5.0

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 (236) hide show
  1. package/LICENSE +235 -0
  2. package/README.md +561 -2
  3. package/dist/src/cli.d.ts +20 -0
  4. package/dist/src/cli.js +619 -0
  5. package/dist/src/cli.js.map +1 -0
  6. package/dist/src/core/analyze.d.ts +178 -0
  7. package/dist/src/core/analyze.js +834 -0
  8. package/dist/src/core/analyze.js.map +1 -0
  9. package/dist/src/core/coverage.d.ts +87 -0
  10. package/dist/src/core/coverage.js +181 -0
  11. package/dist/src/core/coverage.js.map +1 -0
  12. package/dist/src/core/finding.d.ts +196 -0
  13. package/dist/src/core/finding.js +178 -0
  14. package/dist/src/core/finding.js.map +1 -0
  15. package/dist/src/core/licence.d.ts +50 -0
  16. package/dist/src/core/licence.js +56 -0
  17. package/dist/src/core/licence.js.map +1 -0
  18. package/dist/src/core/paths.d.ts +21 -0
  19. package/dist/src/core/paths.js +58 -0
  20. package/dist/src/core/paths.js.map +1 -0
  21. package/dist/src/core/score.d.ts +137 -0
  22. package/dist/src/core/score.js +232 -0
  23. package/dist/src/core/score.js.map +1 -0
  24. package/dist/src/dast/targets.d.ts +30 -0
  25. package/dist/src/dast/targets.js +79 -0
  26. package/dist/src/dast/targets.js.map +1 -0
  27. package/dist/src/dast/zap.d.ts +42 -0
  28. package/dist/src/dast/zap.js +184 -0
  29. package/dist/src/dast/zap.js.map +1 -0
  30. package/dist/src/engine/scan.d.ts +80 -0
  31. package/dist/src/engine/scan.js +129 -0
  32. package/dist/src/engine/scan.js.map +1 -0
  33. package/dist/src/engine/shapes.d.ts +47 -0
  34. package/dist/src/engine/shapes.js +328 -0
  35. package/dist/src/engine/shapes.js.map +1 -0
  36. package/dist/src/engine/walk.d.ts +60 -0
  37. package/dist/src/engine/walk.js +156 -0
  38. package/dist/src/engine/walk.js.map +1 -0
  39. package/dist/src/parse/astDump.d.ts +31 -0
  40. package/dist/src/parse/astDump.js +66 -0
  41. package/dist/src/parse/astDump.js.map +1 -0
  42. package/dist/src/parse/languages.d.ts +70 -0
  43. package/dist/src/parse/languages.js +174 -0
  44. package/dist/src/parse/languages.js.map +1 -0
  45. package/dist/src/parse/location.d.ts +17 -0
  46. package/dist/src/parse/location.js +38 -0
  47. package/dist/src/parse/location.js.map +1 -0
  48. package/dist/src/parse/node-grammars.d.ts +12 -0
  49. package/dist/src/parse/node-grammars.js +35 -0
  50. package/dist/src/parse/node-grammars.js.map +1 -0
  51. package/dist/src/parse/parser.d.ts +126 -0
  52. package/dist/src/parse/parser.js +202 -0
  53. package/dist/src/parse/parser.js.map +1 -0
  54. package/dist/src/parse/tree-store.d.ts +139 -0
  55. package/dist/src/parse/tree-store.js +236 -0
  56. package/dist/src/parse/tree-store.js.map +1 -0
  57. package/dist/src/platform/dependency-rule.d.ts +27 -0
  58. package/dist/src/platform/dependency-rule.js +21 -0
  59. package/dist/src/platform/dependency-rule.js.map +1 -0
  60. package/dist/src/platform/deps.d.ts +86 -0
  61. package/dist/src/platform/deps.js +304 -0
  62. package/dist/src/platform/deps.js.map +1 -0
  63. package/dist/src/platform/php-facts.d.ts +49 -0
  64. package/dist/src/platform/php-facts.js +67 -0
  65. package/dist/src/platform/php-facts.js.map +1 -0
  66. package/dist/src/platform/runtime-version.d.ts +78 -0
  67. package/dist/src/platform/runtime-version.js +573 -0
  68. package/dist/src/platform/runtime-version.js.map +1 -0
  69. package/dist/src/report/colors.d.ts +50 -0
  70. package/dist/src/report/colors.js +97 -0
  71. package/dist/src/report/colors.js.map +1 -0
  72. package/dist/src/report/coverage-table.d.ts +90 -0
  73. package/dist/src/report/coverage-table.js +291 -0
  74. package/dist/src/report/coverage-table.js.map +1 -0
  75. package/dist/src/report/html-report.d.ts +66 -0
  76. package/dist/src/report/html-report.js +489 -0
  77. package/dist/src/report/html-report.js.map +1 -0
  78. package/dist/src/report/human.d.ts +44 -0
  79. package/dist/src/report/human.js +575 -0
  80. package/dist/src/report/human.js.map +1 -0
  81. package/dist/src/report/json.d.ts +24 -0
  82. package/dist/src/report/json.js +178 -0
  83. package/dist/src/report/json.js.map +1 -0
  84. package/dist/src/report/mark.d.ts +17 -0
  85. package/dist/src/report/mark.js +39 -0
  86. package/dist/src/report/mark.js.map +1 -0
  87. package/dist/src/report/pricing.d.ts +33 -0
  88. package/dist/src/report/pricing.js +343 -0
  89. package/dist/src/report/pricing.js.map +1 -0
  90. package/dist/src/report/sarif.d.ts +39 -0
  91. package/dist/src/report/sarif.js +219 -0
  92. package/dist/src/report/sarif.js.map +1 -0
  93. package/dist/src/report/site.d.ts +87 -0
  94. package/dist/src/report/site.js +742 -0
  95. package/dist/src/report/site.js.map +1 -0
  96. package/dist/src/rules/code-injection.d.ts +47 -0
  97. package/dist/src/rules/code-injection.js +326 -0
  98. package/dist/src/rules/code-injection.js.map +1 -0
  99. package/dist/src/rules/command-injection.d.ts +30 -0
  100. package/dist/src/rules/command-injection.js +286 -0
  101. package/dist/src/rules/command-injection.js.map +1 -0
  102. package/dist/src/rules/contract.d.ts +198 -0
  103. package/dist/src/rules/contract.js +39 -0
  104. package/dist/src/rules/contract.js.map +1 -0
  105. package/dist/src/rules/format-string.d.ts +46 -0
  106. package/dist/src/rules/format-string.js +146 -0
  107. package/dist/src/rules/format-string.js.map +1 -0
  108. package/dist/src/rules/hardcoded-secret.d.ts +38 -0
  109. package/dist/src/rules/hardcoded-secret.js +440 -0
  110. package/dist/src/rules/hardcoded-secret.js.map +1 -0
  111. package/dist/src/rules/lib/guards.d.ts +168 -0
  112. package/dist/src/rules/lib/guards.js +1179 -0
  113. package/dist/src/rules/lib/guards.js.map +1 -0
  114. package/dist/src/rules/lib/html-safety.d.ts +75 -0
  115. package/dist/src/rules/lib/html-safety.js +755 -0
  116. package/dist/src/rules/lib/html-safety.js.map +1 -0
  117. package/dist/src/rules/lib/local-build.d.ts +59 -0
  118. package/dist/src/rules/lib/local-build.js +320 -0
  119. package/dist/src/rules/lib/local-build.js.map +1 -0
  120. package/dist/src/rules/lib/strings.d.ts +208 -0
  121. package/dist/src/rules/lib/strings.js +1970 -0
  122. package/dist/src/rules/lib/strings.js.map +1 -0
  123. package/dist/src/rules/path-traversal.d.ts +33 -0
  124. package/dist/src/rules/path-traversal.js +96 -0
  125. package/dist/src/rules/path-traversal.js.map +1 -0
  126. package/dist/src/rules/registry.d.ts +19 -0
  127. package/dist/src/rules/registry.js +77 -0
  128. package/dist/src/rules/registry.js.map +1 -0
  129. package/dist/src/rules/sql-injection.d.ts +36 -0
  130. package/dist/src/rules/sql-injection.js +299 -0
  131. package/dist/src/rules/sql-injection.js.map +1 -0
  132. package/dist/src/rules/ssrf.d.ts +39 -0
  133. package/dist/src/rules/ssrf.js +111 -0
  134. package/dist/src/rules/ssrf.js.map +1 -0
  135. package/dist/src/rules/unbounded-copy.d.ts +37 -0
  136. package/dist/src/rules/unbounded-copy.js +147 -0
  137. package/dist/src/rules/unbounded-copy.js.map +1 -0
  138. package/dist/src/rules/unsafe-deserialization.d.ts +43 -0
  139. package/dist/src/rules/unsafe-deserialization.js +276 -0
  140. package/dist/src/rules/unsafe-deserialization.js.map +1 -0
  141. package/dist/src/rules/weak-hash.d.ts +37 -0
  142. package/dist/src/rules/weak-hash.js +197 -0
  143. package/dist/src/rules/weak-hash.js.map +1 -0
  144. package/dist/src/rules/xss.d.ts +38 -0
  145. package/dist/src/rules/xss.js +527 -0
  146. package/dist/src/rules/xss.js.map +1 -0
  147. package/dist/src/taint/content-type.d.ts +19 -0
  148. package/dist/src/taint/content-type.js +20 -0
  149. package/dist/src/taint/content-type.js.map +1 -0
  150. package/dist/src/taint/dictionaries.d.ts +23 -0
  151. package/dist/src/taint/dictionaries.js +1778 -0
  152. package/dist/src/taint/dictionaries.js.map +1 -0
  153. package/dist/src/taint/fold.d.ts +59 -0
  154. package/dist/src/taint/fold.js +1177 -0
  155. package/dist/src/taint/fold.js.map +1 -0
  156. package/dist/src/taint/java-scope.d.ts +61 -0
  157. package/dist/src/taint/java-scope.js +212 -0
  158. package/dist/src/taint/java-scope.js.map +1 -0
  159. package/dist/src/taint/local-map.d.ts +79 -0
  160. package/dist/src/taint/local-map.js +603 -0
  161. package/dist/src/taint/local-map.js.map +1 -0
  162. package/dist/src/taint/project.d.ts +172 -0
  163. package/dist/src/taint/project.js +617 -0
  164. package/dist/src/taint/project.js.map +1 -0
  165. package/dist/src/taint/tracer.d.ts +265 -0
  166. package/dist/src/taint/tracer.js +3817 -0
  167. package/dist/src/taint/tracer.js.map +1 -0
  168. package/dist/src/taint/types.d.ts +484 -0
  169. package/dist/src/taint/types.js +47 -0
  170. package/dist/src/taint/types.js.map +1 -0
  171. package/dist/src/taint/visibility.d.ts +25 -0
  172. package/dist/src/taint/visibility.js +96 -0
  173. package/dist/src/taint/visibility.js.map +1 -0
  174. package/docs/examples/defuse.json +20 -0
  175. package/docs/examples/dvwa-urls.json +14 -0
  176. package/docs/examples/github-code-scanning.yml +54 -0
  177. package/docs/examples/tiny.js +4 -0
  178. package/package.json +73 -4
  179. package/src/cli.ts +747 -0
  180. package/src/core/analyze.ts +1072 -0
  181. package/src/core/coverage.ts +269 -0
  182. package/src/core/finding.ts +311 -0
  183. package/src/core/licence.ts +61 -0
  184. package/src/core/paths.ts +59 -0
  185. package/src/core/score.ts +353 -0
  186. package/src/dast/targets.ts +121 -0
  187. package/src/dast/zap.ts +246 -0
  188. package/src/engine/scan.ts +200 -0
  189. package/src/engine/shapes.ts +348 -0
  190. package/src/engine/walk.ts +196 -0
  191. package/src/parse/astDump.ts +85 -0
  192. package/src/parse/languages.ts +232 -0
  193. package/src/parse/location.ts +44 -0
  194. package/src/parse/node-grammars.ts +41 -0
  195. package/src/parse/parser.ts +262 -0
  196. package/src/parse/tree-store.ts +301 -0
  197. package/src/platform/dependency-rule.ts +33 -0
  198. package/src/platform/deps.ts +374 -0
  199. package/src/platform/php-facts.ts +85 -0
  200. package/src/platform/runtime-version.ts +710 -0
  201. package/src/report/colors.ts +107 -0
  202. package/src/report/coverage-table.ts +359 -0
  203. package/src/report/html-report.ts +601 -0
  204. package/src/report/human.ts +811 -0
  205. package/src/report/json.ts +189 -0
  206. package/src/report/mark.ts +47 -0
  207. package/src/report/pricing.ts +374 -0
  208. package/src/report/sarif.ts +235 -0
  209. package/src/report/site.ts +760 -0
  210. package/src/rules/code-injection.ts +346 -0
  211. package/src/rules/command-injection.ts +296 -0
  212. package/src/rules/contract.ts +220 -0
  213. package/src/rules/format-string.ts +158 -0
  214. package/src/rules/hardcoded-secret.ts +485 -0
  215. package/src/rules/lib/guards.ts +1235 -0
  216. package/src/rules/lib/html-safety.ts +793 -0
  217. package/src/rules/lib/local-build.ts +329 -0
  218. package/src/rules/lib/strings.ts +2034 -0
  219. package/src/rules/path-traversal.ts +101 -0
  220. package/src/rules/registry.ts +90 -0
  221. package/src/rules/sql-injection.ts +311 -0
  222. package/src/rules/ssrf.ts +118 -0
  223. package/src/rules/unbounded-copy.ts +162 -0
  224. package/src/rules/unsafe-deserialization.ts +291 -0
  225. package/src/rules/weak-hash.ts +226 -0
  226. package/src/rules/xss.ts +572 -0
  227. package/src/taint/content-type.ts +20 -0
  228. package/src/taint/dictionaries.ts +1855 -0
  229. package/src/taint/fold.ts +1206 -0
  230. package/src/taint/java-scope.ts +200 -0
  231. package/src/taint/local-map.ts +594 -0
  232. package/src/taint/project.ts +774 -0
  233. package/src/taint/tracer.ts +4298 -0
  234. package/src/taint/types.ts +511 -0
  235. package/src/taint/visibility.ts +100 -0
  236. package/tsconfig.json +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings.js","sourceRoot":"","sources":["../../../../src/rules/lib/strings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * PATH TRAVERSAL (CWE-22, OWASP A01:2025 - Broken Access Control)
3
+ *
4
+ * WHAT THE BUG IS, in plain language:
5
+ * The server opens a file whose name the request chose.
6
+ *
7
+ * res.sendFile(path.join(__dirname, 'uploads', req.query.name));
8
+ *
9
+ * The code means "a file in uploads". The request sends
10
+ * `../../../etc/passwd`, and `..` walks up one folder per step until it is
11
+ * out of uploads and anywhere the server process can read - its own source,
12
+ * its `.env`, the keys on the box. On a write or a delete it is worse.
13
+ *
14
+ * THE FIX: keep only the file name (`path.basename`, `os.path.basename`,
15
+ * `secure_filename`, `filepath.Base`, `Path.getFileName`), or resolve the
16
+ * full path and check that it still starts with the folder you meant. Or
17
+ * hand the folder to an API that refuses to leave it (Express `sendFile`
18
+ * with `root`, Flask `send_from_directory`).
19
+ *
20
+ * ============================================================================
21
+ * WHY THIS RULE HAS NO SIGNATURE PASS
22
+ * ============================================================================
23
+ * Same reason as SSRF: "this code opens a file" is what programs do. Only a
24
+ * traced path from a request value to the open is a finding, so `check()`
25
+ * returns null and the taint engine emits every one.
26
+ *
27
+ * A path from the COMMAND LINE, the environment or the terminal is chosen by
28
+ * whoever runs the program, who could open that file themselves. It is
29
+ * reported low, as to review, not proven: it matters only when the program
30
+ * runs with more rights than its caller (setuid, a service, a CGI script).
31
+ */
32
+ import { type Rule } from './contract.js';
33
+ export declare const pathTraversalRule: Rule;
@@ -0,0 +1,96 @@
1
+ /**
2
+ * PATH TRAVERSAL (CWE-22, OWASP A01:2025 - Broken Access Control)
3
+ *
4
+ * WHAT THE BUG IS, in plain language:
5
+ * The server opens a file whose name the request chose.
6
+ *
7
+ * res.sendFile(path.join(__dirname, 'uploads', req.query.name));
8
+ *
9
+ * The code means "a file in uploads". The request sends
10
+ * `../../../etc/passwd`, and `..` walks up one folder per step until it is
11
+ * out of uploads and anywhere the server process can read - its own source,
12
+ * its `.env`, the keys on the box. On a write or a delete it is worse.
13
+ *
14
+ * THE FIX: keep only the file name (`path.basename`, `os.path.basename`,
15
+ * `secure_filename`, `filepath.Base`, `Path.getFileName`), or resolve the
16
+ * full path and check that it still starts with the folder you meant. Or
17
+ * hand the folder to an API that refuses to leave it (Express `sendFile`
18
+ * with `root`, Flask `send_from_directory`).
19
+ *
20
+ * ============================================================================
21
+ * WHY THIS RULE HAS NO SIGNATURE PASS
22
+ * ============================================================================
23
+ * Same reason as SSRF: "this code opens a file" is what programs do. Only a
24
+ * traced path from a request value to the open is a finding, so `check()`
25
+ * returns null and the taint engine emits every one.
26
+ *
27
+ * A path from the COMMAND LINE, the environment or the terminal is chosen by
28
+ * whoever runs the program, who could open that file themselves. It is
29
+ * reported low, as to review, not proven: it matters only when the program
30
+ * runs with more rights than its caller (setuid, a service, a CGI script).
31
+ */
32
+ export const pathTraversalRule = {
33
+ id: 'path-traversal',
34
+ name: 'File path the user chose',
35
+ cwe: 'CWE-22',
36
+ owasp: 'A01:2025 Broken Access Control',
37
+ severity: 'high',
38
+ summary: 'The server opens a file path the request may choose, so `../` could reach files outside the folder the code meant.',
39
+ fix: 'Keep only the file name (basename / secure_filename / filepath.Base), or resolve the path and check it still starts with the intended folder.',
40
+ explanation: 'The code means "a file in this folder", but the name comes from the request, ' +
41
+ 'and every `../` in it climbs one folder up. Enough of them and the server reads, ' +
42
+ 'writes or deletes any file its process can reach: its own source, its secrets, ' +
43
+ 'the keys on the machine. Keep only the last name in the path, or resolve the ' +
44
+ 'full path and check it still starts with the folder you meant before opening it.',
45
+ limitations: 'FLOW-VERIFIED ONLY: "opens a file" describes almost every program, so there is no ' +
46
+ 'pattern pass and every finding comes from a traced path. A path from the command ' +
47
+ 'line, the environment or the terminal is chosen by whoever runs the program and is ' +
48
+ 'reported low, to review. A path opened after a prefix check (`resolved.startsWith(base)`) ' +
49
+ 'or a `..` blocklist in the same function is reported to review, never proven and never ' +
50
+ 'cleared: what the check compares is NOT read, so a correct one and a wrong one look the ' +
51
+ 'same here. path.join, path.resolve and filepath.Clean are NOT treated as fixes, because ' +
52
+ 'none of them stops `../`. A "not found" answer before the open (`if (!x) return res.status(404)`, ' +
53
+ 'abort(404), Http404) is read as a possible lookup of known names and also gives to review: ' +
54
+ 'what the lookup accepts is NOT read, and any 404 above the open in the function counts, ' +
55
+ 'even one about a different value.',
56
+ shapes: ['call'],
57
+ support: {
58
+ javascript: {
59
+ status: 'implemented',
60
+ note: 'Data-flow only. Covers fs / fs.promises / fs-extra reads, writes, deletes and directory listings, destructured readFileSync-style names, and Express res.sendFile / res.download without a root option. NOT covered: a bare readFile() whose import we cannot see.',
61
+ },
62
+ typescript: {
63
+ status: 'implemented',
64
+ note: 'Data-flow only. Identical to JavaScript.',
65
+ },
66
+ python: {
67
+ status: 'implemented',
68
+ note: 'Data-flow only. Covers open(), os file and directory calls, shutil copy / move / rmtree, and Flask send_file. NOT covered: pathlib (Path(x).read_text()), where the path lives in an object the tracer does not follow.',
69
+ },
70
+ java: {
71
+ status: 'implemented',
72
+ note: 'Data-flow only. Covers new File / FileInputStream / FileOutputStream / FileReader / FileWriter / RandomAccessFile / FileSystemResource and the java.nio Files calls that open a path (readAllBytes, newInputStream, write, delete, ...). Paths.get / Path.of only build a path and are followed, not reported. NOT covered: a Path held in a field and opened in another method.',
73
+ },
74
+ php: {
75
+ status: 'implemented',
76
+ note: 'Data-flow only. Covers file_get_contents, fopen, readfile, file, file_put_contents, unlink, opendir, scandir, copy, rename, mkdir and rmdir. NOT covered: include / require, which are statements, not calls, and are not in the sink tables.',
77
+ },
78
+ go: {
79
+ status: 'implemented',
80
+ note: 'Data-flow only. Covers os and ioutil Open / OpenFile / ReadFile / WriteFile / Create / Remove / RemoveAll / ReadDir / Mkdir / Rename and http.ServeFile. NOT covered: http.FileServer, which is configured once rather than called with a path.',
81
+ },
82
+ c: {
83
+ status: 'implemented',
84
+ note: 'Data-flow only. Covers fopen, freopen, open, openat, creat, remove, unlink, rename and opendir. argv, getenv and stdin are reported low, to review: they are chosen by whoever runs the program.',
85
+ },
86
+ cpp: {
87
+ status: 'partial',
88
+ note: 'PARTIAL: the C library calls only. std::ifstream / std::ofstream and std::filesystem are NOT modelled - a stream is opened by a declaration, not a call.',
89
+ },
90
+ },
91
+ /* Deliberately silent: see the header. The taint engine emits every finding for this rule id. */
92
+ check() {
93
+ return null;
94
+ },
95
+ };
96
+ //# sourceMappingURL=path-traversal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-traversal.js","sourceRoot":"","sources":["../../../src/rules/path-traversal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,MAAM,CAAC,MAAM,iBAAiB,GAAS;IACrC,EAAE,EAAE,gBAAgB;IACpB,IAAI,EAAE,0BAA0B;IAChC,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,gCAAgC;IACvC,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,oHAAoH;IAC7H,GAAG,EACD,+IAA+I;IACjJ,WAAW,EACT,+EAA+E;QAC/E,mFAAmF;QACnF,iFAAiF;QACjF,+EAA+E;QAC/E,kFAAkF;IACpF,WAAW,EACT,oFAAoF;QACpF,mFAAmF;QACnF,qFAAqF;QACrF,4FAA4F;QAC5F,yFAAyF;QACzF,0FAA0F;QAC1F,0FAA0F;QAC1F,oGAAoG;QACpG,6FAA6F;QAC7F,0FAA0F;QAC1F,mCAAmC;IACrC,MAAM,EAAE,CAAC,MAAM,CAAC;IAChB,OAAO,EAAE;QACP,UAAU,EAAE;YACV,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,oQAAoQ;SAC3Q;QACD,UAAU,EAAE;YACV,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,0CAA0C;SACjD;QACD,MAAM,EAAE;YACN,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,yNAAyN;SAChO;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,kXAAkX;SACzX;QACD,GAAG,EAAE;YACH,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,+OAA+O;SACtP;QACD,EAAE,EAAE;YACF,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,iPAAiP;SACxP;QACD,CAAC,EAAE;YACD,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,kMAAkM;SACzM;QACD,GAAG,EAAE;YACH,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,0JAA0J;SACjK;KACF;IACD,iGAAiG;IACjG,KAAK;QACH,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * THE RULE REGISTRY
3
+ *
4
+ * One list, one place. Adding a rule = write the file, import it, add it here.
5
+ * The engine imports nothing but this.
6
+ *
7
+ * `validateRegistry()` runs on every scan. It refuses to start if a rule breaks
8
+ * the honesty contract - for example by declaring a language as `implemented`
9
+ * with an empty note. A rule that cannot say what it does not cover has not
10
+ * finished thinking, and shipping it silently is the failure mode this whole
11
+ * project is a reaction to.
12
+ */
13
+ import type { LanguageId } from '../parse/languages.js';
14
+ import type { Rule } from './contract.js';
15
+ export declare const ALL_RULES: readonly Rule[];
16
+ export declare function rulesForLanguage(language: LanguageId): Rule[];
17
+ export declare function getRule(id: string): Rule | undefined;
18
+ /** Throws if the registry violates the project's own honesty requirements. */
19
+ export declare function validateRegistry(): void;
@@ -0,0 +1,77 @@
1
+ /**
2
+ * THE RULE REGISTRY
3
+ *
4
+ * One list, one place. Adding a rule = write the file, import it, add it here.
5
+ * The engine imports nothing but this.
6
+ *
7
+ * `validateRegistry()` runs on every scan. It refuses to start if a rule breaks
8
+ * the honesty contract - for example by declaring a language as `implemented`
9
+ * with an empty note. A rule that cannot say what it does not cover has not
10
+ * finished thinking, and shipping it silently is the failure mode this whole
11
+ * project is a reaction to.
12
+ */
13
+ import { LANGUAGES } from '../parse/languages.js';
14
+ import { codeInjectionRule } from './code-injection.js';
15
+ import { commandInjectionRule } from './command-injection.js';
16
+ import { hardcodedSecretRule } from './hardcoded-secret.js';
17
+ import { sqlInjectionRule } from './sql-injection.js';
18
+ import { ssrfRule } from './ssrf.js';
19
+ import { pathTraversalRule } from './path-traversal.js';
20
+ import { unsafeDeserializationRule } from './unsafe-deserialization.js';
21
+ import { weakHashRule } from './weak-hash.js';
22
+ import { formatStringRule } from './format-string.js';
23
+ import { unboundedCopyRule } from './unbounded-copy.js';
24
+ import { xssRule } from './xss.js';
25
+ export const ALL_RULES = [
26
+ sqlInjectionRule,
27
+ commandInjectionRule,
28
+ formatStringRule,
29
+ unboundedCopyRule,
30
+ codeInjectionRule,
31
+ xssRule,
32
+ ssrfRule,
33
+ pathTraversalRule,
34
+ unsafeDeserializationRule,
35
+ hardcodedSecretRule,
36
+ weakHashRule,
37
+ ];
38
+ export function rulesForLanguage(language) {
39
+ return ALL_RULES.filter((rule) => {
40
+ const support = rule.support[language];
41
+ return support !== undefined && support.status !== 'not-implemented';
42
+ });
43
+ }
44
+ export function getRule(id) {
45
+ return ALL_RULES.find((rule) => rule.id === id);
46
+ }
47
+ /** Throws if the registry violates the project's own honesty requirements. */
48
+ export function validateRegistry() {
49
+ const problems = [];
50
+ const seen = new Set();
51
+ for (const rule of ALL_RULES) {
52
+ if (seen.has(rule.id))
53
+ problems.push(`duplicate rule id: ${rule.id}`);
54
+ seen.add(rule.id);
55
+ if (rule.limitations.trim().length < 20) {
56
+ problems.push(`${rule.id}: 'limitations' is missing or too short to be useful`);
57
+ }
58
+ if (rule.explanation.trim().length < 40) {
59
+ problems.push(`${rule.id}: 'explanation' is missing or too short to teach anything`);
60
+ }
61
+ for (const language of LANGUAGES) {
62
+ const support = rule.support[language.id];
63
+ if (!support)
64
+ continue;
65
+ if (support.note.trim().length < 15) {
66
+ problems.push(`${rule.id}/${language.id}: support note is empty - a gap must be described, not implied`);
67
+ }
68
+ if (support.status !== 'implemented' && !/PARTIAL|NOT|not covered|missing/i.test(support.note)) {
69
+ problems.push(`${rule.id}/${language.id}: status is '${support.status}' but the note does not say what is missing`);
70
+ }
71
+ }
72
+ }
73
+ if (problems.length > 0) {
74
+ throw new Error(`Rule registry violates the honesty contract:\n - ${problems.join('\n - ')}`);
75
+ }
76
+ }
77
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/rules/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * SQL INJECTION (CWE-89, OWASP A05:2025 - Injection)
3
+ *
4
+ * WHAT THE BUG IS, in plain language:
5
+ * A database doesn't receive "a question" - it receives a string of text that it
6
+ * reads as INSTRUCTIONS. If you build that string by gluing user input into it,
7
+ * the user gets to write part of your instructions.
8
+ *
9
+ * db.query("SELECT * FROM users WHERE id = " + userId)
10
+ *
11
+ * If someone sends `userId = 1 OR 1=1`, the database is asked for every user.
12
+ * If they send `1; DROP TABLE users --`, it may be asked to delete the table.
13
+ * The database is not tricked or hacked; it does exactly what the text says.
14
+ * The mistake happened when data and instructions were mixed into one string.
15
+ *
16
+ * THE FIX, so the rule can suggest it:
17
+ * Parameterised queries (also called prepared statements). You send the query
18
+ * shape and the values SEPARATELY:
19
+ *
20
+ * db.query("SELECT * FROM users WHERE id = ?", [userId])
21
+ *
22
+ * The driver never lets the value become part of the instruction, whatever it
23
+ * contains. This is not "escaping harder" - it is a structurally different
24
+ * thing, and it is why "we sanitise our inputs" is a weaker answer than
25
+ * "we parameterise our queries".
26
+ *
27
+ * WHAT THIS RULE ACTUALLY CHECKS (and does not):
28
+ * We look for a call to a known query-executing method whose argument was
29
+ * BUILT rather than written, and whose visible text looks like SQL. We do NOT
30
+ * know whether the spliced-in value came from an attacker. That is data-flow
31
+ * analysis. The taint engine does exactly that, and when it succeeds the
32
+ * verified finding supersedes this one. Everything the tracer could not confirm
33
+ * stays here, signature-based, saying so on the finding itself.
34
+ */
35
+ import { type Rule } from './contract.js';
36
+ export declare const sqlInjectionRule: Rule;