supasec 1.0.4 → 1.0.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.
Files changed (97) hide show
  1. package/Feature-List.md +233 -0
  2. package/README.md +53 -12
  3. package/dist/cli.js +2 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/index.d.ts +1 -0
  6. package/dist/commands/index.d.ts.map +1 -1
  7. package/dist/commands/index.js +1 -0
  8. package/dist/commands/index.js.map +1 -1
  9. package/dist/commands/scan.d.ts.map +1 -1
  10. package/dist/commands/scan.js +74 -18
  11. package/dist/commands/scan.js.map +1 -1
  12. package/dist/commands/snapshot.d.ts +32 -0
  13. package/dist/commands/snapshot.d.ts.map +1 -0
  14. package/dist/commands/snapshot.js +282 -0
  15. package/dist/commands/snapshot.js.map +1 -0
  16. package/dist/reporters/html.d.ts +3 -2
  17. package/dist/reporters/html.d.ts.map +1 -1
  18. package/dist/reporters/html.js +844 -538
  19. package/dist/reporters/html.js.map +1 -1
  20. package/dist/reporters/terminal.d.ts +38 -2
  21. package/dist/reporters/terminal.d.ts.map +1 -1
  22. package/dist/reporters/terminal.js +292 -131
  23. package/dist/reporters/terminal.js.map +1 -1
  24. package/dist/scanners/auth/analyzer.d.ts +40 -0
  25. package/dist/scanners/auth/analyzer.d.ts.map +1 -0
  26. package/dist/scanners/auth/analyzer.js +673 -0
  27. package/dist/scanners/auth/analyzer.js.map +1 -0
  28. package/dist/scanners/auth/index.d.ts +6 -0
  29. package/dist/scanners/auth/index.d.ts.map +1 -0
  30. package/dist/scanners/auth/index.js +22 -0
  31. package/dist/scanners/auth/index.js.map +1 -0
  32. package/dist/scanners/edge/analyzer.d.ts +35 -0
  33. package/dist/scanners/edge/analyzer.d.ts.map +1 -0
  34. package/dist/scanners/edge/analyzer.js +614 -0
  35. package/dist/scanners/edge/analyzer.js.map +1 -0
  36. package/dist/scanners/edge/index.d.ts +6 -0
  37. package/dist/scanners/edge/index.d.ts.map +1 -0
  38. package/dist/scanners/edge/index.js +22 -0
  39. package/dist/scanners/edge/index.js.map +1 -0
  40. package/dist/scanners/functions/analyzer.d.ts +41 -0
  41. package/dist/scanners/functions/analyzer.d.ts.map +1 -0
  42. package/dist/scanners/functions/analyzer.js +378 -0
  43. package/dist/scanners/functions/analyzer.js.map +1 -0
  44. package/dist/scanners/functions/index.d.ts +6 -0
  45. package/dist/scanners/functions/index.d.ts.map +1 -0
  46. package/dist/scanners/functions/index.js +22 -0
  47. package/dist/scanners/functions/index.js.map +1 -0
  48. package/dist/scanners/git/index.d.ts +6 -0
  49. package/dist/scanners/git/index.d.ts.map +1 -0
  50. package/dist/scanners/git/index.js +22 -0
  51. package/dist/scanners/git/index.js.map +1 -0
  52. package/dist/scanners/git/scanner.d.ts +22 -0
  53. package/dist/scanners/git/scanner.d.ts.map +1 -0
  54. package/dist/scanners/git/scanner.js +531 -0
  55. package/dist/scanners/git/scanner.js.map +1 -0
  56. package/dist/scanners/https/analyzer.d.ts +42 -0
  57. package/dist/scanners/https/analyzer.d.ts.map +1 -0
  58. package/dist/scanners/https/analyzer.js +470 -0
  59. package/dist/scanners/https/analyzer.js.map +1 -0
  60. package/dist/scanners/https/index.d.ts +8 -0
  61. package/dist/scanners/https/index.d.ts.map +1 -0
  62. package/dist/scanners/https/index.js +17 -0
  63. package/dist/scanners/https/index.js.map +1 -0
  64. package/dist/scanners/index.d.ts +6 -0
  65. package/dist/scanners/index.d.ts.map +1 -1
  66. package/dist/scanners/index.js +6 -0
  67. package/dist/scanners/index.js.map +1 -1
  68. package/dist/scanners/rls/fuzzer.d.ts +40 -0
  69. package/dist/scanners/rls/fuzzer.d.ts.map +1 -0
  70. package/dist/scanners/rls/fuzzer.js +360 -0
  71. package/dist/scanners/rls/fuzzer.js.map +1 -0
  72. package/dist/scanners/rls/index.d.ts +1 -0
  73. package/dist/scanners/rls/index.d.ts.map +1 -1
  74. package/dist/scanners/rls/index.js +1 -0
  75. package/dist/scanners/rls/index.js.map +1 -1
  76. package/dist/scanners/secrets/detector.d.ts.map +1 -1
  77. package/dist/scanners/secrets/detector.js +44 -12
  78. package/dist/scanners/secrets/detector.js.map +1 -1
  79. package/dist/scanners/secrets/index.d.ts +1 -0
  80. package/dist/scanners/secrets/index.d.ts.map +1 -1
  81. package/dist/scanners/secrets/index.js +4 -0
  82. package/dist/scanners/secrets/index.js.map +1 -1
  83. package/dist/scanners/secrets/patterns.d.ts +25 -0
  84. package/dist/scanners/secrets/patterns.d.ts.map +1 -1
  85. package/dist/scanners/secrets/patterns.js +138 -27
  86. package/dist/scanners/secrets/patterns.js.map +1 -1
  87. package/dist/scanners/storage/analyzer.d.ts +49 -0
  88. package/dist/scanners/storage/analyzer.d.ts.map +1 -0
  89. package/dist/scanners/storage/analyzer.js +438 -0
  90. package/dist/scanners/storage/analyzer.js.map +1 -0
  91. package/dist/scanners/storage/index.d.ts +6 -0
  92. package/dist/scanners/storage/index.d.ts.map +1 -0
  93. package/dist/scanners/storage/index.js +22 -0
  94. package/dist/scanners/storage/index.js.map +1 -0
  95. package/package.json +1 -1
  96. package/reports/supasec-audityour-app-2026-01-28-19-42-22.html +757 -0
  97. package/reports/supasec-audityour-app-2026-01-28-19-49-18.html +1122 -0
@@ -0,0 +1,41 @@
1
+ /**
2
+ * RPC Function Analyzer
3
+ * Scans for exposed RPC functions and analyzes their security
4
+ */
5
+ import { Finding } from '../../models/finding.js';
6
+ export interface RPCFunctionInfo {
7
+ name: string;
8
+ schema: string;
9
+ arguments: RPCArgument[];
10
+ returnType: string;
11
+ isSecurityDefiner: boolean;
12
+ owner: string;
13
+ description?: string;
14
+ }
15
+ export interface RPCArgument {
16
+ name: string;
17
+ type: string;
18
+ hasDefault: boolean;
19
+ defaultValue?: string;
20
+ }
21
+ export interface RPCScanOptions {
22
+ functions: RPCFunctionInfo[];
23
+ supabaseUrl: string;
24
+ anonKey?: string;
25
+ serviceKey?: string;
26
+ }
27
+ export interface RPCScanResult {
28
+ findings: Finding[];
29
+ functionsScanned: number;
30
+ exposedFunctions: number;
31
+ dangerousFunctions: number;
32
+ }
33
+ /**
34
+ * Analyze RPC functions for security issues
35
+ */
36
+ export declare function analyzeRPCFunctions(options: RPCScanOptions): Promise<RPCScanResult>;
37
+ /**
38
+ * Mock RPC functions for testing
39
+ */
40
+ export declare function getMockRPCFunctions(): RPCFunctionInfo[];
41
+ //# sourceMappingURL=analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../../src/scanners/functions/analyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAqB,MAAM,yBAAyB,CAAC;AAErE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAsCzF;AA0TD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,EAAE,CAgDvD"}
@@ -0,0 +1,378 @@
1
+ "use strict";
2
+ /**
3
+ * RPC Function Analyzer
4
+ * Scans for exposed RPC functions and analyzes their security
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.analyzeRPCFunctions = analyzeRPCFunctions;
8
+ exports.getMockRPCFunctions = getMockRPCFunctions;
9
+ const finding_js_1 = require("../../models/finding.js");
10
+ /**
11
+ * Analyze RPC functions for security issues
12
+ */
13
+ async function analyzeRPCFunctions(options) {
14
+ const findings = [];
15
+ let findingCounter = 1;
16
+ let exposedCount = 0;
17
+ let dangerousCount = 0;
18
+ for (const func of options.functions) {
19
+ // Check if function is exposed (in public schema)
20
+ if (func.schema === 'public') {
21
+ exposedCount++;
22
+ // Check for dangerous function patterns
23
+ const dangerousFindings = checkDangerousPatterns(func, findingCounter);
24
+ findings.push(...dangerousFindings.findings);
25
+ findingCounter = dangerousFindings.nextCounter;
26
+ if (dangerousFindings.findings.length > 0) {
27
+ dangerousCount++;
28
+ }
29
+ // Check for missing security definer
30
+ if (!func.isSecurityDefiner) {
31
+ findings.push(createNoSecurityDefinerFinding(func, findingCounter++));
32
+ }
33
+ // Check for SQL injection vulnerabilities in arguments
34
+ const injectionFindings = checkSQLInjectionRisk(func, findingCounter);
35
+ findings.push(...injectionFindings.findings);
36
+ findingCounter = injectionFindings.nextCounter;
37
+ }
38
+ }
39
+ return {
40
+ findings,
41
+ functionsScanned: options.functions.length,
42
+ exposedFunctions: exposedCount,
43
+ dangerousFunctions: dangerousCount
44
+ };
45
+ }
46
+ /**
47
+ * Check for dangerous function name patterns
48
+ */
49
+ function checkDangerousPatterns(func, startCounter) {
50
+ const findings = [];
51
+ let counter = startCounter;
52
+ const dangerousPatterns = [
53
+ {
54
+ pattern: /admin|superuser|root/i,
55
+ severity: 'CRITICAL',
56
+ description: 'Function name suggests administrative privileges'
57
+ },
58
+ {
59
+ pattern: /delete.*all|drop.*table|truncate/i,
60
+ severity: 'CRITICAL',
61
+ description: 'Function name suggests destructive operations'
62
+ },
63
+ {
64
+ pattern: /exec|execute|run|system/i,
65
+ severity: 'HIGH',
66
+ description: 'Function name suggests command execution capability'
67
+ },
68
+ {
69
+ pattern: /raw.*sql|query.*exec|dynamic.*sql/i,
70
+ severity: 'HIGH',
71
+ description: 'Function name suggests raw SQL execution'
72
+ },
73
+ {
74
+ pattern: /bypass|skip.*rls|ignore.*policy/i,
75
+ severity: 'CRITICAL',
76
+ description: 'Function name suggests RLS bypass capability'
77
+ }
78
+ ];
79
+ for (const { pattern, severity, description } of dangerousPatterns) {
80
+ if (pattern.test(func.name)) {
81
+ findings.push(createDangerousFunctionFinding(func, severity, description, counter++));
82
+ }
83
+ }
84
+ return { findings, nextCounter: counter };
85
+ }
86
+ /**
87
+ * Check for SQL injection risks in function arguments
88
+ */
89
+ function checkSQLInjectionRisk(func, startCounter) {
90
+ const findings = [];
91
+ let counter = startCounter;
92
+ // Check for text/varchar parameters that might be used in dynamic SQL
93
+ const textParams = func.arguments.filter(arg => arg.type.toLowerCase().includes('text') ||
94
+ arg.type.toLowerCase().includes('varchar') ||
95
+ arg.type.toLowerCase().includes('char'));
96
+ if (textParams.length > 0 && func.name.toLowerCase().includes('query')) {
97
+ findings.push(createSQLInjectionRiskFinding(func, textParams, counter++));
98
+ }
99
+ return { findings, nextCounter: counter };
100
+ }
101
+ /**
102
+ * Create finding for dangerous function
103
+ */
104
+ function createDangerousFunctionFinding(func, severity, description, counter) {
105
+ return {
106
+ finding_id: (0, finding_js_1.generateFindingId)('functions', counter),
107
+ timestamp: new Date().toISOString(),
108
+ severity,
109
+ category: 'functions',
110
+ subcategory: 'dangerous_function',
111
+ title: `Potentially dangerous RPC function '${func.name}'`,
112
+ description: `The RPC function '${func.name}' has a name pattern that suggests ${description.toLowerCase()}. This could allow unauthorized access or operations.`,
113
+ location: {
114
+ table: `${func.schema}.${func.name}`
115
+ },
116
+ evidence: {
117
+ function_name: func.name,
118
+ schema: func.schema,
119
+ return_type: func.returnType,
120
+ is_security_definer: func.isSecurityDefiner,
121
+ argument_count: func.arguments.length,
122
+ description
123
+ },
124
+ impact: {
125
+ severity_score: severity === 'CRITICAL' ? 9.5 : 7.5,
126
+ description: `${description}. Could lead to unauthorized data access or system compromise.`,
127
+ affected_resources: [`${func.schema}.${func.name}`],
128
+ compliance_violations: ['OWASP-A01-2021', 'SOC2-CC6.1']
129
+ },
130
+ remediation: {
131
+ summary: `Review and secure RPC function '${func.name}'`,
132
+ priority: severity === 'CRITICAL' ? 'IMMEDIATE' : 'HIGH',
133
+ effort: 'MEDIUM',
134
+ steps: [
135
+ {
136
+ order: 1,
137
+ action: 'Review function implementation for security issues',
138
+ sql: `-- Review function definition
139
+ \df+ ${func.schema}.${func.name}`
140
+ },
141
+ {
142
+ order: 2,
143
+ action: 'Add proper access controls and input validation',
144
+ sql: `-- Example: Add security definer and validation
145
+ CREATE OR REPLACE FUNCTION ${func.schema}.${func.name}(${func.arguments.map(a => `${a.name} ${a.type}`).join(', ')})
146
+ RETURNS ${func.returnType}
147
+ SECURITY DEFINER
148
+ SET search_path = public
149
+ AS $$
150
+ BEGIN
151
+ -- Add validation logic here
152
+ -- Check user permissions
153
+ -- Validate inputs
154
+
155
+ -- Original function logic
156
+ END;
157
+ $$ LANGUAGE plpgsql;`
158
+ },
159
+ {
160
+ order: 3,
161
+ action: 'Restrict function to authenticated users only',
162
+ sql: `-- Revoke public access
163
+ REVOKE EXECUTE ON FUNCTION ${func.schema}.${func.name}(${func.arguments.map(a => a.type).join(', ')}) FROM PUBLIC;
164
+
165
+ -- Grant to authenticated users only
166
+ GRANT EXECUTE ON FUNCTION ${func.schema}.${func.name}(${func.arguments.map(a => a.type).join(', ')}) TO authenticated;`
167
+ }
168
+ ],
169
+ auto_fixable: false
170
+ },
171
+ references: [
172
+ {
173
+ title: 'PostgreSQL Function Security',
174
+ url: 'https://www.postgresql.org/docs/current/sql-createfunction.html#SQL-CREATEFUNCTION-SECURITY'
175
+ },
176
+ {
177
+ title: 'Supabase RPC Security Best Practices',
178
+ url: 'https://supabase.com/docs/guides/database/functions#security'
179
+ }
180
+ ],
181
+ false_positive_likelihood: 'MEDIUM',
182
+ confidence: 0.75
183
+ };
184
+ }
185
+ /**
186
+ * Create finding for missing security definer
187
+ */
188
+ function createNoSecurityDefinerFinding(func, counter) {
189
+ return {
190
+ finding_id: (0, finding_js_1.generateFindingId)('functions', counter),
191
+ timestamp: new Date().toISOString(),
192
+ severity: 'MEDIUM',
193
+ category: 'functions',
194
+ subcategory: 'no_security_definer',
195
+ title: `RPC function '${func.name}' lacks SECURITY DEFINER`,
196
+ description: `The RPC function '${func.name}' does not use SECURITY DEFINER. This means it executes with the privileges of the caller, which may allow privilege escalation or unauthorized access.`,
197
+ location: {
198
+ table: `${func.schema}.${func.name}`
199
+ },
200
+ evidence: {
201
+ function_name: func.name,
202
+ schema: func.schema,
203
+ is_security_definer: false,
204
+ owner: func.owner
205
+ },
206
+ impact: {
207
+ severity_score: 5.0,
208
+ description: 'Function executes with caller privileges - potential privilege escalation',
209
+ affected_resources: [`${func.schema}.${func.name}`]
210
+ },
211
+ remediation: {
212
+ summary: `Add SECURITY DEFINER to function '${func.name}'`,
213
+ priority: 'MEDIUM',
214
+ effort: 'LOW',
215
+ steps: [
216
+ {
217
+ order: 1,
218
+ action: 'Review if SECURITY DEFINER is appropriate',
219
+ sql: `-- Check current function definition
220
+ \df+ ${func.schema}.${func.name}`
221
+ },
222
+ {
223
+ order: 2,
224
+ action: 'Add SECURITY DEFINER if needed',
225
+ sql: `-- Add security definer
226
+ CREATE OR REPLACE FUNCTION ${func.schema}.${func.name}(${func.arguments.map(a => `${a.name} ${a.type}`).join(', ')})
227
+ RETURNS ${func.returnType}
228
+ SECURITY DEFINER
229
+ SET search_path = public
230
+ AS $$
231
+ -- Function body
232
+ $$ LANGUAGE plpgsql;`
233
+ }
234
+ ],
235
+ auto_fixable: true
236
+ },
237
+ references: [
238
+ {
239
+ title: 'PostgreSQL SECURITY DEFINER',
240
+ url: 'https://www.postgresql.org/docs/current/sql-createfunction.html#SQL-CREATEFUNCTION-SECURITY'
241
+ }
242
+ ],
243
+ false_positive_likelihood: 'HIGH',
244
+ confidence: 0.6
245
+ };
246
+ }
247
+ /**
248
+ * Create finding for SQL injection risk
249
+ */
250
+ function createSQLInjectionRiskFinding(func, textParams, counter) {
251
+ const paramNames = textParams.map(p => p.name).join(', ');
252
+ return {
253
+ finding_id: (0, finding_js_1.generateFindingId)('functions', counter),
254
+ timestamp: new Date().toISOString(),
255
+ severity: 'HIGH',
256
+ category: 'functions',
257
+ subcategory: 'sql_injection_risk',
258
+ title: `Potential SQL injection in RPC function '${func.name}'`,
259
+ description: `The RPC function '${func.name}' accepts text parameters (${paramNames}) and has a name suggesting query execution. This may be vulnerable to SQL injection if inputs are not properly sanitized.`,
260
+ location: {
261
+ table: `${func.schema}.${func.name}`
262
+ },
263
+ evidence: {
264
+ function_name: func.name,
265
+ schema: func.schema,
266
+ text_parameters: textParams.map(p => ({ name: p.name, type: p.type })),
267
+ argument_count: func.arguments.length
268
+ },
269
+ impact: {
270
+ severity_score: 8.0,
271
+ description: 'SQL injection vulnerability could allow arbitrary SQL execution',
272
+ affected_resources: [`${func.schema}.${func.name}`],
273
+ compliance_violations: ['OWASP-A03-2021', 'PCI-DSS-6.5.1']
274
+ },
275
+ remediation: {
276
+ summary: `Secure function '${func.name}' against SQL injection`,
277
+ priority: 'HIGH',
278
+ effort: 'MEDIUM',
279
+ steps: [
280
+ {
281
+ order: 1,
282
+ action: 'Review function implementation for dynamic SQL',
283
+ sql: `-- Check function source code
284
+ SELECT prosrc FROM pg_proc WHERE proname = '${func.name}';`
285
+ },
286
+ {
287
+ order: 2,
288
+ action: 'Use parameterized queries or proper escaping',
289
+ sql: `-- Example: Use format() with proper escaping
290
+ CREATE OR REPLACE FUNCTION ${func.schema}.${func.name}(query_text text)
291
+ RETURNS TABLE (...) AS $$
292
+ BEGIN
293
+ -- Use format() with %I for identifiers, %L for literals
294
+ RETURN QUERY EXECUTE format('SELECT * FROM %I WHERE id = %L',
295
+ 'my_table',
296
+ query_text
297
+ );
298
+ END;
299
+ $$ LANGUAGE plpgsql SECURITY DEFINER;`
300
+ },
301
+ {
302
+ order: 3,
303
+ action: 'Add input validation',
304
+ code: `-- Validate inputs before using in dynamic SQL
305
+ IF query_text !~ '^[a-zA-Z0-9_]+$' THEN
306
+ RAISE EXCEPTION 'Invalid input format';
307
+ END IF;`
308
+ }
309
+ ],
310
+ auto_fixable: false
311
+ },
312
+ references: [
313
+ {
314
+ title: 'OWASP SQL Injection Prevention',
315
+ url: 'https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html'
316
+ },
317
+ {
318
+ title: 'PostgreSQL Dynamic SQL',
319
+ url: 'https://www.postgresql.org/docs/current/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN'
320
+ }
321
+ ],
322
+ false_positive_likelihood: 'MEDIUM',
323
+ confidence: 0.7
324
+ };
325
+ }
326
+ /**
327
+ * Mock RPC functions for testing
328
+ */
329
+ function getMockRPCFunctions() {
330
+ return [
331
+ {
332
+ name: 'get_user_profile',
333
+ schema: 'public',
334
+ arguments: [
335
+ { name: 'user_id', type: 'uuid', hasDefault: false }
336
+ ],
337
+ returnType: 'json',
338
+ isSecurityDefiner: true,
339
+ owner: 'postgres',
340
+ description: 'Get user profile information'
341
+ },
342
+ {
343
+ name: 'admin_delete_user',
344
+ schema: 'public',
345
+ arguments: [
346
+ { name: 'target_user_id', type: 'uuid', hasDefault: false }
347
+ ],
348
+ returnType: 'boolean',
349
+ isSecurityDefiner: false,
350
+ owner: 'postgres',
351
+ description: 'Admin function to delete users'
352
+ },
353
+ {
354
+ name: 'execute_raw_query',
355
+ schema: 'public',
356
+ arguments: [
357
+ { name: 'sql_query', type: 'text', hasDefault: false }
358
+ ],
359
+ returnType: 'json',
360
+ isSecurityDefiner: true,
361
+ owner: 'postgres',
362
+ description: 'Execute arbitrary SQL query'
363
+ },
364
+ {
365
+ name: 'search_posts',
366
+ schema: 'public',
367
+ arguments: [
368
+ { name: 'search_term', type: 'text', hasDefault: false },
369
+ { name: 'limit_count', type: 'integer', hasDefault: true, defaultValue: '10' }
370
+ ],
371
+ returnType: 'json',
372
+ isSecurityDefiner: false,
373
+ owner: 'postgres',
374
+ description: 'Search posts by term'
375
+ }
376
+ ];
377
+ }
378
+ //# sourceMappingURL=analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../../src/scanners/functions/analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Functions Scanner Module
3
+ * Export all RPC function analysis functionality
4
+ */
5
+ export * from './analyzer.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scanners/functions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,eAAe,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /**
3
+ * Functions Scanner Module
4
+ * Export all RPC function analysis functionality
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ __exportStar(require("./analyzer.js"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scanners/functions/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;AAEH,gDAA8B"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Git Scanner Module
3
+ * Export all git history scanning functionality
4
+ */
5
+ export * from './scanner.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scanners/git/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,cAAc,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /**
3
+ * Git Scanner Module
4
+ * Export all git history scanning functionality
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ __exportStar(require("./scanner.js"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scanners/git/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;AAEH,+CAA6B"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Git History Scanner
3
+ * Scans git history for secrets and sensitive data
4
+ */
5
+ import { Finding } from '../../models/finding.js';
6
+ export interface GitScanOptions {
7
+ repoPath: string;
8
+ since?: string;
9
+ maxCommits?: number;
10
+ scanBranches?: boolean;
11
+ }
12
+ export interface GitScanResult {
13
+ findings: Finding[];
14
+ commitsScanned: number;
15
+ branchesScanned: number;
16
+ secretsFound: number;
17
+ }
18
+ /**
19
+ * Scan git history for secrets
20
+ */
21
+ export declare function scanGitHistory(options: GitScanOptions): Promise<GitScanResult>;
22
+ //# sourceMappingURL=scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../src/scanners/git/scanner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAqB,MAAM,yBAAyB,CAAC;AAKrE,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB;AAUD;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA+DpF"}