circle-ir 3.1.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 (194) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +200 -0
  3. package/configs/sinks/code_injection.yaml +672 -0
  4. package/configs/sinks/command.yaml +917 -0
  5. package/configs/sinks/deserialization.yaml +105 -0
  6. package/configs/sinks/ldap.yaml +136 -0
  7. package/configs/sinks/nodejs.json +629 -0
  8. package/configs/sinks/path.yaml +715 -0
  9. package/configs/sinks/python.json +501 -0
  10. package/configs/sinks/rust.json +339 -0
  11. package/configs/sinks/sql.yaml +233 -0
  12. package/configs/sinks/ssrf.yaml +160 -0
  13. package/configs/sinks/xpath.yaml +121 -0
  14. package/configs/sinks/xss.yaml +727 -0
  15. package/configs/sources/db_sources.yaml +90 -0
  16. package/configs/sources/env_sources.yaml +94 -0
  17. package/configs/sources/express.json +197 -0
  18. package/configs/sources/file_sources.yaml +164 -0
  19. package/configs/sources/http_sources.yaml +379 -0
  20. package/configs/sources/io_sources.yaml +519 -0
  21. package/configs/sources/network_sources.yaml +99 -0
  22. package/configs/sources/python.json +230 -0
  23. package/configs/sources/rust.json +286 -0
  24. package/configs/sources/spring.yaml +70 -0
  25. package/dist/analysis/advisory-db.d.ts +86 -0
  26. package/dist/analysis/advisory-db.js +104 -0
  27. package/dist/analysis/advisory-db.js.map +1 -0
  28. package/dist/analysis/cargo-parser.d.ts +42 -0
  29. package/dist/analysis/cargo-parser.js +102 -0
  30. package/dist/analysis/cargo-parser.js.map +1 -0
  31. package/dist/analysis/config-loader.d.ts +37 -0
  32. package/dist/analysis/config-loader.js +1561 -0
  33. package/dist/analysis/config-loader.js.map +1 -0
  34. package/dist/analysis/constant-propagation/ast-utils.d.ts +25 -0
  35. package/dist/analysis/constant-propagation/ast-utils.js +34 -0
  36. package/dist/analysis/constant-propagation/ast-utils.js.map +1 -0
  37. package/dist/analysis/constant-propagation/evaluator.d.ts +32 -0
  38. package/dist/analysis/constant-propagation/evaluator.js +296 -0
  39. package/dist/analysis/constant-propagation/evaluator.js.map +1 -0
  40. package/dist/analysis/constant-propagation/index.d.ts +62 -0
  41. package/dist/analysis/constant-propagation/index.js +152 -0
  42. package/dist/analysis/constant-propagation/index.js.map +1 -0
  43. package/dist/analysis/constant-propagation/patterns.d.ts +8 -0
  44. package/dist/analysis/constant-propagation/patterns.js +126 -0
  45. package/dist/analysis/constant-propagation/patterns.js.map +1 -0
  46. package/dist/analysis/constant-propagation/propagator.d.ts +180 -0
  47. package/dist/analysis/constant-propagation/propagator.js +1985 -0
  48. package/dist/analysis/constant-propagation/propagator.js.map +1 -0
  49. package/dist/analysis/constant-propagation/types.d.ts +63 -0
  50. package/dist/analysis/constant-propagation/types.js +5 -0
  51. package/dist/analysis/constant-propagation/types.js.map +1 -0
  52. package/dist/analysis/constant-propagation.d.ts +9 -0
  53. package/dist/analysis/constant-propagation.js +18 -0
  54. package/dist/analysis/constant-propagation.js.map +1 -0
  55. package/dist/analysis/dependency-scanner.d.ts +79 -0
  56. package/dist/analysis/dependency-scanner.js +122 -0
  57. package/dist/analysis/dependency-scanner.js.map +1 -0
  58. package/dist/analysis/dfg-verifier.d.ts +116 -0
  59. package/dist/analysis/dfg-verifier.js +399 -0
  60. package/dist/analysis/dfg-verifier.js.map +1 -0
  61. package/dist/analysis/findings.d.ts +11 -0
  62. package/dist/analysis/findings.js +228 -0
  63. package/dist/analysis/findings.js.map +1 -0
  64. package/dist/analysis/index.d.ts +16 -0
  65. package/dist/analysis/index.js +18 -0
  66. package/dist/analysis/index.js.map +1 -0
  67. package/dist/analysis/interprocedural.d.ts +99 -0
  68. package/dist/analysis/interprocedural.js +526 -0
  69. package/dist/analysis/interprocedural.js.map +1 -0
  70. package/dist/analysis/path-finder.d.ts +133 -0
  71. package/dist/analysis/path-finder.js +354 -0
  72. package/dist/analysis/path-finder.js.map +1 -0
  73. package/dist/analysis/rules.d.ts +75 -0
  74. package/dist/analysis/rules.js +332 -0
  75. package/dist/analysis/rules.js.map +1 -0
  76. package/dist/analysis/semver.d.ts +27 -0
  77. package/dist/analysis/semver.js +127 -0
  78. package/dist/analysis/semver.js.map +1 -0
  79. package/dist/analysis/taint-matcher.d.ts +15 -0
  80. package/dist/analysis/taint-matcher.js +634 -0
  81. package/dist/analysis/taint-matcher.js.map +1 -0
  82. package/dist/analysis/taint-propagation.d.ts +67 -0
  83. package/dist/analysis/taint-propagation.js +298 -0
  84. package/dist/analysis/taint-propagation.js.map +1 -0
  85. package/dist/analysis/unresolved.d.ts +14 -0
  86. package/dist/analysis/unresolved.js +202 -0
  87. package/dist/analysis/unresolved.js.map +1 -0
  88. package/dist/analyzer.d.ts +43 -0
  89. package/dist/analyzer.js +1010 -0
  90. package/dist/analyzer.js.map +1 -0
  91. package/dist/browser/circle-ir.js +16576 -0
  92. package/dist/browser.d.ts +38 -0
  93. package/dist/browser.js +38 -0
  94. package/dist/browser.js.map +1 -0
  95. package/dist/core/circle-ir-core.cjs +13626 -0
  96. package/dist/core/circle-ir-core.d.ts +59 -0
  97. package/dist/core/circle-ir-core.js +13591 -0
  98. package/dist/core/extractors/calls.d.ts +13 -0
  99. package/dist/core/extractors/calls.js +1429 -0
  100. package/dist/core/extractors/calls.js.map +1 -0
  101. package/dist/core/extractors/cfg.d.ts +9 -0
  102. package/dist/core/extractors/cfg.js +519 -0
  103. package/dist/core/extractors/cfg.js.map +1 -0
  104. package/dist/core/extractors/dfg.d.ts +12 -0
  105. package/dist/core/extractors/dfg.js +1081 -0
  106. package/dist/core/extractors/dfg.js.map +1 -0
  107. package/dist/core/extractors/exports.d.ts +14 -0
  108. package/dist/core/extractors/exports.js +80 -0
  109. package/dist/core/extractors/exports.js.map +1 -0
  110. package/dist/core/extractors/imports.d.ts +9 -0
  111. package/dist/core/extractors/imports.js +739 -0
  112. package/dist/core/extractors/imports.js.map +1 -0
  113. package/dist/core/extractors/index.d.ts +10 -0
  114. package/dist/core/extractors/index.js +11 -0
  115. package/dist/core/extractors/index.js.map +1 -0
  116. package/dist/core/extractors/meta.d.ts +10 -0
  117. package/dist/core/extractors/meta.js +109 -0
  118. package/dist/core/extractors/meta.js.map +1 -0
  119. package/dist/core/extractors/types.d.ts +10 -0
  120. package/dist/core/extractors/types.js +1479 -0
  121. package/dist/core/extractors/types.js.map +1 -0
  122. package/dist/core/index.d.ts +5 -0
  123. package/dist/core/index.js +8 -0
  124. package/dist/core/index.js.map +1 -0
  125. package/dist/core/parser.d.ts +84 -0
  126. package/dist/core/parser.js +250 -0
  127. package/dist/core/parser.js.map +1 -0
  128. package/dist/core-lib.d.ts +59 -0
  129. package/dist/core-lib.js +62 -0
  130. package/dist/core-lib.js.map +1 -0
  131. package/dist/index.d.ts +15 -0
  132. package/dist/index.js +20 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/languages/index.d.ts +11 -0
  135. package/dist/languages/index.js +14 -0
  136. package/dist/languages/index.js.map +1 -0
  137. package/dist/languages/plugins/base.d.ts +44 -0
  138. package/dist/languages/plugins/base.js +82 -0
  139. package/dist/languages/plugins/base.js.map +1 -0
  140. package/dist/languages/plugins/index.d.ts +14 -0
  141. package/dist/languages/plugins/index.js +25 -0
  142. package/dist/languages/plugins/index.js.map +1 -0
  143. package/dist/languages/plugins/java.d.ts +49 -0
  144. package/dist/languages/plugins/java.js +402 -0
  145. package/dist/languages/plugins/java.js.map +1 -0
  146. package/dist/languages/plugins/javascript.d.ts +48 -0
  147. package/dist/languages/plugins/javascript.js +445 -0
  148. package/dist/languages/plugins/javascript.js.map +1 -0
  149. package/dist/languages/plugins/python.d.ts +47 -0
  150. package/dist/languages/plugins/python.js +480 -0
  151. package/dist/languages/plugins/python.js.map +1 -0
  152. package/dist/languages/plugins/rust.d.ts +47 -0
  153. package/dist/languages/plugins/rust.js +405 -0
  154. package/dist/languages/plugins/rust.js.map +1 -0
  155. package/dist/languages/registry.d.ts +30 -0
  156. package/dist/languages/registry.js +80 -0
  157. package/dist/languages/registry.js.map +1 -0
  158. package/dist/languages/types.d.ts +184 -0
  159. package/dist/languages/types.js +8 -0
  160. package/dist/languages/types.js.map +1 -0
  161. package/dist/resolution/cross-file.d.ts +146 -0
  162. package/dist/resolution/cross-file.js +439 -0
  163. package/dist/resolution/cross-file.js.map +1 -0
  164. package/dist/resolution/index.d.ts +12 -0
  165. package/dist/resolution/index.js +10 -0
  166. package/dist/resolution/index.js.map +1 -0
  167. package/dist/resolution/symbol-table.d.ts +136 -0
  168. package/dist/resolution/symbol-table.js +336 -0
  169. package/dist/resolution/symbol-table.js.map +1 -0
  170. package/dist/resolution/type-hierarchy.d.ts +124 -0
  171. package/dist/resolution/type-hierarchy.js +515 -0
  172. package/dist/resolution/type-hierarchy.js.map +1 -0
  173. package/dist/types/config.d.ts +45 -0
  174. package/dist/types/config.js +5 -0
  175. package/dist/types/config.js.map +1 -0
  176. package/dist/types/index.d.ts +392 -0
  177. package/dist/types/index.js +7 -0
  178. package/dist/types/index.js.map +1 -0
  179. package/dist/utils/logger.d.ts +85 -0
  180. package/dist/utils/logger.js +198 -0
  181. package/dist/utils/logger.js.map +1 -0
  182. package/dist/wasm/tree-sitter-java.wasm +0 -0
  183. package/dist/wasm/tree-sitter-javascript.wasm +0 -0
  184. package/dist/wasm/tree-sitter-python.wasm +0 -0
  185. package/dist/wasm/tree-sitter-rust.wasm +0 -0
  186. package/dist/wasm/web-tree-sitter.wasm +0 -0
  187. package/docs/SPEC.md +1021 -0
  188. package/examples/browser-example.html +610 -0
  189. package/examples/node-example.ts +215 -0
  190. package/package.json +107 -0
  191. package/wasm/tree-sitter-java.wasm +0 -0
  192. package/wasm/tree-sitter-javascript.wasm +0 -0
  193. package/wasm/tree-sitter-python.wasm +0 -0
  194. package/wasm/tree-sitter-rust.wasm +0 -0
@@ -0,0 +1,515 @@
1
+ /**
2
+ * Type Hierarchy Resolution
3
+ *
4
+ * Tracks class inheritance and interface implementations across files
5
+ * to enable polymorphic sink detection.
6
+ *
7
+ * Example: When sink is Statement.executeQuery(), we can match calls
8
+ * on PreparedStatement, CallableStatement, or any other subtype.
9
+ */
10
+ /**
11
+ * TypeHierarchyResolver - Builds and queries type inheritance relationships
12
+ */
13
+ export class TypeHierarchyResolver {
14
+ // All known types by FQN
15
+ types = new Map();
16
+ // Simple name to FQN mapping (for resolution)
17
+ nameToFqn = new Map();
18
+ // Subtype relationships: parent FQN -> child FQNs
19
+ subtypes = new Map();
20
+ // Implementation relationships: interface FQN -> implementing class FQNs
21
+ implementations = new Map();
22
+ /**
23
+ * Add types from a CircleIR analysis result
24
+ */
25
+ addFromIR(ir, filePath) {
26
+ for (const type of ir.types) {
27
+ this.addType(type, filePath, ir.meta.package || null);
28
+ }
29
+ }
30
+ /**
31
+ * Add a single type to the hierarchy
32
+ */
33
+ addType(type, filePath, defaultPackage = null) {
34
+ const pkg = type.package || defaultPackage || '';
35
+ const fqn = pkg ? `${pkg}.${type.name}` : type.name;
36
+ const node = {
37
+ name: type.name,
38
+ fqn,
39
+ kind: type.kind,
40
+ extends: type.extends,
41
+ implements: type.implements,
42
+ extendsInterfaces: type.kind === 'interface' ? type.implements : [],
43
+ file: filePath,
44
+ line: type.start_line,
45
+ };
46
+ this.types.set(fqn, node);
47
+ // Track simple name -> FQN mapping
48
+ if (!this.nameToFqn.has(type.name)) {
49
+ this.nameToFqn.set(type.name, new Set());
50
+ }
51
+ this.nameToFqn.get(type.name).add(fqn);
52
+ // Build inheritance relationships
53
+ if (type.kind === 'class' || type.kind === 'enum') {
54
+ // Track class inheritance
55
+ if (type.extends) {
56
+ const parentFqn = this.resolveTypeName(type.extends, pkg);
57
+ if (!this.subtypes.has(parentFqn)) {
58
+ this.subtypes.set(parentFqn, new Set());
59
+ }
60
+ this.subtypes.get(parentFqn).add(fqn);
61
+ }
62
+ // Track interface implementations
63
+ for (const iface of type.implements) {
64
+ const ifaceFqn = this.resolveTypeName(iface, pkg);
65
+ if (!this.implementations.has(ifaceFqn)) {
66
+ this.implementations.set(ifaceFqn, new Set());
67
+ }
68
+ this.implementations.get(ifaceFqn).add(fqn);
69
+ }
70
+ }
71
+ else if (type.kind === 'interface') {
72
+ // Track interface inheritance (extends for interfaces)
73
+ for (const parentIface of type.implements) {
74
+ const parentFqn = this.resolveTypeName(parentIface, pkg);
75
+ if (!this.subtypes.has(parentFqn)) {
76
+ this.subtypes.set(parentFqn, new Set());
77
+ }
78
+ this.subtypes.get(parentFqn).add(fqn);
79
+ }
80
+ }
81
+ }
82
+ /**
83
+ * Get all direct subtypes of a class
84
+ */
85
+ getDirectSubtypes(className) {
86
+ const fqn = this.resolveFqn(className);
87
+ return Array.from(this.subtypes.get(fqn) || []);
88
+ }
89
+ /**
90
+ * Get all subtypes (transitive) of a class
91
+ */
92
+ getAllSubtypes(className) {
93
+ const fqn = this.resolveFqn(className);
94
+ const result = new Set();
95
+ const queue = [fqn];
96
+ while (queue.length > 0) {
97
+ const current = queue.shift();
98
+ const children = this.subtypes.get(current);
99
+ if (children) {
100
+ for (const child of children) {
101
+ if (!result.has(child)) {
102
+ result.add(child);
103
+ queue.push(child);
104
+ }
105
+ }
106
+ }
107
+ }
108
+ return Array.from(result);
109
+ }
110
+ /**
111
+ * Get all direct implementations of an interface
112
+ */
113
+ getDirectImplementations(interfaceName) {
114
+ const fqn = this.resolveFqn(interfaceName);
115
+ return Array.from(this.implementations.get(fqn) || []);
116
+ }
117
+ /**
118
+ * Get all implementations (including through subinterfaces) of an interface
119
+ */
120
+ getAllImplementations(interfaceName) {
121
+ const fqn = this.resolveFqn(interfaceName);
122
+ const result = new Set();
123
+ const visited = new Set();
124
+ const queue = [fqn];
125
+ while (queue.length > 0) {
126
+ const current = queue.shift();
127
+ if (visited.has(current))
128
+ continue;
129
+ visited.add(current);
130
+ // Add direct implementations
131
+ const impls = this.implementations.get(current);
132
+ if (impls) {
133
+ for (const impl of impls) {
134
+ result.add(impl);
135
+ // Also add subtypes of implementing classes
136
+ const subtypes = this.getAllSubtypes(impl);
137
+ for (const subtype of subtypes) {
138
+ result.add(subtype);
139
+ }
140
+ }
141
+ }
142
+ // Add subinterfaces to queue
143
+ const subInterfaces = this.subtypes.get(current);
144
+ if (subInterfaces) {
145
+ for (const sub of subInterfaces) {
146
+ queue.push(sub);
147
+ }
148
+ }
149
+ }
150
+ return Array.from(result);
151
+ }
152
+ /**
153
+ * Check if a type is a subtype of another (including transitive)
154
+ */
155
+ isSubtypeOf(childName, parentName) {
156
+ const childFqn = this.resolveFqn(childName);
157
+ const parentFqn = this.resolveFqn(parentName);
158
+ if (childFqn === parentFqn)
159
+ return true;
160
+ // Check class hierarchy
161
+ const allSubtypes = this.getAllSubtypes(parentFqn);
162
+ if (allSubtypes.includes(childFqn))
163
+ return true;
164
+ // Check interface implementations
165
+ const allImpls = this.getAllImplementations(parentFqn);
166
+ if (allImpls.includes(childFqn))
167
+ return true;
168
+ return false;
169
+ }
170
+ /**
171
+ * Check if a type implements an interface (directly or through inheritance)
172
+ * Also handles interface-extends-interface relationships
173
+ */
174
+ implementsInterface(typeName, interfaceName) {
175
+ const typeFqn = this.resolveFqn(typeName);
176
+ const ifaceFqn = this.resolveFqn(interfaceName);
177
+ // Check class implementations
178
+ const allImpls = this.getAllImplementations(ifaceFqn);
179
+ if (allImpls.includes(typeFqn))
180
+ return true;
181
+ // Check interface-extends-interface (stored in subtypes)
182
+ const allSubtypes = this.getAllSubtypes(ifaceFqn);
183
+ if (allSubtypes.includes(typeFqn))
184
+ return true;
185
+ return false;
186
+ }
187
+ /**
188
+ * Get type info by name
189
+ */
190
+ getType(name) {
191
+ const fqn = this.resolveFqn(name);
192
+ return this.types.get(fqn);
193
+ }
194
+ /**
195
+ * Get all types matching a simple name
196
+ */
197
+ getTypesByName(simpleName) {
198
+ const fqns = this.nameToFqn.get(simpleName);
199
+ if (!fqns)
200
+ return [];
201
+ return Array.from(fqns)
202
+ .map(fqn => this.types.get(fqn))
203
+ .filter((t) => t !== undefined);
204
+ }
205
+ /**
206
+ * Get the file where a type is defined
207
+ */
208
+ getTypeFile(name) {
209
+ const type = this.getType(name);
210
+ return type?.file;
211
+ }
212
+ /**
213
+ * Check if a receiver type could match a target class
214
+ * Handles: exact match, subtype, implementation, simple name match
215
+ */
216
+ couldBeType(receiverType, targetClass) {
217
+ // Direct match
218
+ if (receiverType === targetClass)
219
+ return true;
220
+ // Simple name match
221
+ const receiverSimple = this.getSimpleName(receiverType);
222
+ const targetSimple = this.getSimpleName(targetClass);
223
+ if (receiverSimple === targetSimple)
224
+ return true;
225
+ // Subtype or implementation match
226
+ if (this.isSubtypeOf(receiverType, targetClass))
227
+ return true;
228
+ // Check if receiver could be a subtype of target
229
+ const allSubtypes = this.getAllSubtypes(targetClass);
230
+ const allImpls = this.getAllImplementations(targetClass);
231
+ for (const sub of [...allSubtypes, ...allImpls]) {
232
+ const subSimple = this.getSimpleName(sub);
233
+ if (subSimple === receiverSimple)
234
+ return true;
235
+ }
236
+ return false;
237
+ }
238
+ /**
239
+ * Export hierarchy data in the CircleIR format
240
+ */
241
+ toTypeHierarchyData() {
242
+ const classes = {};
243
+ const interfaces = {};
244
+ for (const [fqn, node] of this.types) {
245
+ if (node.kind === 'class' || node.kind === 'enum') {
246
+ classes[fqn] = {
247
+ file: node.file,
248
+ extends: node.extends ? this.resolveTypeName(node.extends, this.getPackage(fqn)) : null,
249
+ implements: node.implements.map(i => this.resolveTypeName(i, this.getPackage(fqn))),
250
+ subclasses: this.getDirectSubtypes(fqn),
251
+ };
252
+ }
253
+ else if (node.kind === 'interface') {
254
+ interfaces[fqn] = {
255
+ file: node.file,
256
+ extends: node.extendsInterfaces.map(i => this.resolveTypeName(i, this.getPackage(fqn))),
257
+ implementations: this.getDirectImplementations(fqn),
258
+ };
259
+ }
260
+ }
261
+ return { classes, interfaces };
262
+ }
263
+ /**
264
+ * Get statistics about the hierarchy
265
+ */
266
+ getStats() {
267
+ let classes = 0, interfaces = 0, enums = 0;
268
+ for (const node of this.types.values()) {
269
+ if (node.kind === 'class')
270
+ classes++;
271
+ else if (node.kind === 'interface')
272
+ interfaces++;
273
+ else if (node.kind === 'enum')
274
+ enums++;
275
+ }
276
+ return { totalTypes: this.types.size, classes, interfaces, enums };
277
+ }
278
+ /**
279
+ * Get all types in the hierarchy
280
+ */
281
+ getAllTypes() {
282
+ return Array.from(this.types.values());
283
+ }
284
+ /**
285
+ * Clear all data
286
+ */
287
+ clear() {
288
+ this.types.clear();
289
+ this.nameToFqn.clear();
290
+ this.subtypes.clear();
291
+ this.implementations.clear();
292
+ }
293
+ // --- Private helpers ---
294
+ /**
295
+ * Resolve a type name to its FQN
296
+ */
297
+ resolveTypeName(name, currentPackage) {
298
+ // Already fully qualified
299
+ if (name.includes('.'))
300
+ return name;
301
+ // Check if we know this type
302
+ const fqns = this.nameToFqn.get(name);
303
+ if (fqns && fqns.size === 1) {
304
+ return Array.from(fqns)[0];
305
+ }
306
+ // Assume same package
307
+ return currentPackage ? `${currentPackage}.${name}` : name;
308
+ }
309
+ /**
310
+ * Resolve a name (simple or FQN) to its FQN
311
+ */
312
+ resolveFqn(name) {
313
+ // Already in types map
314
+ if (this.types.has(name))
315
+ return name;
316
+ // Try to find by simple name
317
+ const fqns = this.nameToFqn.get(name);
318
+ if (fqns && fqns.size > 0) {
319
+ return Array.from(fqns)[0];
320
+ }
321
+ return name;
322
+ }
323
+ /**
324
+ * Get simple name from FQN
325
+ */
326
+ getSimpleName(name) {
327
+ const lastDot = name.lastIndexOf('.');
328
+ return lastDot === -1 ? name : name.substring(lastDot + 1);
329
+ }
330
+ /**
331
+ * Get package from FQN
332
+ */
333
+ getPackage(fqn) {
334
+ const lastDot = fqn.lastIndexOf('.');
335
+ return lastDot === -1 ? '' : fqn.substring(0, lastDot);
336
+ }
337
+ }
338
+ /**
339
+ * Pre-populated common Java type hierarchy
340
+ * These are standard JDK types that code often extends/implements
341
+ */
342
+ export function createWithJdkTypes() {
343
+ const resolver = new TypeHierarchyResolver();
344
+ // Add common JDBC hierarchy
345
+ const jdbcTypes = [
346
+ {
347
+ name: 'Statement',
348
+ kind: 'interface',
349
+ package: 'java.sql',
350
+ extends: null,
351
+ implements: [],
352
+ annotations: [],
353
+ methods: [],
354
+ fields: [],
355
+ start_line: 0,
356
+ end_line: 0,
357
+ },
358
+ {
359
+ name: 'PreparedStatement',
360
+ kind: 'interface',
361
+ package: 'java.sql',
362
+ extends: null,
363
+ implements: ['Statement'],
364
+ annotations: [],
365
+ methods: [],
366
+ fields: [],
367
+ start_line: 0,
368
+ end_line: 0,
369
+ },
370
+ {
371
+ name: 'CallableStatement',
372
+ kind: 'interface',
373
+ package: 'java.sql',
374
+ extends: null,
375
+ implements: ['PreparedStatement'],
376
+ annotations: [],
377
+ methods: [],
378
+ fields: [],
379
+ start_line: 0,
380
+ end_line: 0,
381
+ },
382
+ ];
383
+ // Add common IO hierarchy
384
+ const ioTypes = [
385
+ {
386
+ name: 'InputStream',
387
+ kind: 'class',
388
+ package: 'java.io',
389
+ extends: null,
390
+ implements: [],
391
+ annotations: [],
392
+ methods: [],
393
+ fields: [],
394
+ start_line: 0,
395
+ end_line: 0,
396
+ },
397
+ {
398
+ name: 'FileInputStream',
399
+ kind: 'class',
400
+ package: 'java.io',
401
+ extends: 'InputStream',
402
+ implements: [],
403
+ annotations: [],
404
+ methods: [],
405
+ fields: [],
406
+ start_line: 0,
407
+ end_line: 0,
408
+ },
409
+ {
410
+ name: 'OutputStream',
411
+ kind: 'class',
412
+ package: 'java.io',
413
+ extends: null,
414
+ implements: [],
415
+ annotations: [],
416
+ methods: [],
417
+ fields: [],
418
+ start_line: 0,
419
+ end_line: 0,
420
+ },
421
+ {
422
+ name: 'FileOutputStream',
423
+ kind: 'class',
424
+ package: 'java.io',
425
+ extends: 'OutputStream',
426
+ implements: [],
427
+ annotations: [],
428
+ methods: [],
429
+ fields: [],
430
+ start_line: 0,
431
+ end_line: 0,
432
+ },
433
+ {
434
+ name: 'Writer',
435
+ kind: 'class',
436
+ package: 'java.io',
437
+ extends: null,
438
+ implements: [],
439
+ annotations: [],
440
+ methods: [],
441
+ fields: [],
442
+ start_line: 0,
443
+ end_line: 0,
444
+ },
445
+ {
446
+ name: 'PrintWriter',
447
+ kind: 'class',
448
+ package: 'java.io',
449
+ extends: 'Writer',
450
+ implements: [],
451
+ annotations: [],
452
+ methods: [],
453
+ fields: [],
454
+ start_line: 0,
455
+ end_line: 0,
456
+ },
457
+ ];
458
+ // Add servlet hierarchy
459
+ const servletTypes = [
460
+ {
461
+ name: 'ServletRequest',
462
+ kind: 'interface',
463
+ package: 'javax.servlet',
464
+ extends: null,
465
+ implements: [],
466
+ annotations: [],
467
+ methods: [],
468
+ fields: [],
469
+ start_line: 0,
470
+ end_line: 0,
471
+ },
472
+ {
473
+ name: 'HttpServletRequest',
474
+ kind: 'interface',
475
+ package: 'javax.servlet.http',
476
+ extends: null,
477
+ implements: ['javax.servlet.ServletRequest'], // FQN for cross-package reference
478
+ annotations: [],
479
+ methods: [],
480
+ fields: [],
481
+ start_line: 0,
482
+ end_line: 0,
483
+ },
484
+ {
485
+ name: 'ServletResponse',
486
+ kind: 'interface',
487
+ package: 'javax.servlet',
488
+ extends: null,
489
+ implements: [],
490
+ annotations: [],
491
+ methods: [],
492
+ fields: [],
493
+ start_line: 0,
494
+ end_line: 0,
495
+ },
496
+ {
497
+ name: 'HttpServletResponse',
498
+ kind: 'interface',
499
+ package: 'javax.servlet.http',
500
+ extends: null,
501
+ implements: ['javax.servlet.ServletResponse'], // FQN for cross-package reference
502
+ annotations: [],
503
+ methods: [],
504
+ fields: [],
505
+ start_line: 0,
506
+ end_line: 0,
507
+ },
508
+ ];
509
+ // Add all JDK types
510
+ for (const type of [...jdbcTypes, ...ioTypes, ...servletTypes]) {
511
+ resolver.addType(type, 'jdk', type.package);
512
+ }
513
+ return resolver;
514
+ }
515
+ //# sourceMappingURL=type-hierarchy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-hierarchy.js","sourceRoot":"","sources":["../../src/resolution/type-hierarchy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Types for YAML configuration files (configs/sources/, configs/sinks/)
3
+ */
4
+ import type { Severity, SinkType, SourceType } from './index.js';
5
+ export interface SourceConfig {
6
+ sources: SourcePattern[];
7
+ }
8
+ export interface SourcePattern {
9
+ method?: string;
10
+ class?: string;
11
+ property?: string;
12
+ object?: string;
13
+ annotation?: string;
14
+ type: SourceType;
15
+ severity: Severity;
16
+ return_tainted?: boolean;
17
+ param_tainted?: boolean;
18
+ property_tainted?: boolean;
19
+ note?: string;
20
+ }
21
+ export interface SinkConfig {
22
+ sinks: SinkPattern[];
23
+ sanitizers?: SanitizerPattern[];
24
+ }
25
+ export interface SinkPattern {
26
+ method: string;
27
+ class?: string;
28
+ type: SinkType;
29
+ cwe: string;
30
+ severity: Severity;
31
+ arg_positions: number[];
32
+ note?: string;
33
+ }
34
+ export interface SanitizerPattern {
35
+ method?: string;
36
+ class?: string;
37
+ annotation?: string;
38
+ removes: SinkType[];
39
+ note?: string;
40
+ }
41
+ export interface TaintConfig {
42
+ sources: SourcePattern[];
43
+ sinks: SinkPattern[];
44
+ sanitizers: SanitizerPattern[];
45
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Types for YAML configuration files (configs/sources/, configs/sinks/)
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG"}