@datahogo/core 0.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.
- package/LICENSE +661 -0
- package/README.md +17 -0
- package/dist/engines/config.d.ts +3 -0
- package/dist/engines/config.d.ts.map +1 -0
- package/dist/engines/config.js +433 -0
- package/dist/engines/config.js.map +1 -0
- package/dist/engines/dast.d.ts +3 -0
- package/dist/engines/dast.d.ts.map +1 -0
- package/dist/engines/dast.js +167 -0
- package/dist/engines/dast.js.map +1 -0
- package/dist/engines/db-rules.d.ts +3 -0
- package/dist/engines/db-rules.d.ts.map +1 -0
- package/dist/engines/db-rules.js +166 -0
- package/dist/engines/db-rules.js.map +1 -0
- package/dist/engines/dependencies.d.ts +3 -0
- package/dist/engines/dependencies.d.ts.map +1 -0
- package/dist/engines/dependencies.js +167 -0
- package/dist/engines/dependencies.js.map +1 -0
- package/dist/engines/github-actions.d.ts +3 -0
- package/dist/engines/github-actions.d.ts.map +1 -0
- package/dist/engines/github-actions.js +215 -0
- package/dist/engines/github-actions.js.map +1 -0
- package/dist/engines/gitleaks.d.ts +3 -0
- package/dist/engines/gitleaks.d.ts.map +1 -0
- package/dist/engines/gitleaks.js +107 -0
- package/dist/engines/gitleaks.js.map +1 -0
- package/dist/engines/npm-audit.d.ts +3 -0
- package/dist/engines/npm-audit.d.ts.map +1 -0
- package/dist/engines/npm-audit.js +113 -0
- package/dist/engines/npm-audit.js.map +1 -0
- package/dist/engines/patterns.d.ts +3 -0
- package/dist/engines/patterns.d.ts.map +1 -0
- package/dist/engines/patterns.js +1330 -0
- package/dist/engines/patterns.js.map +1 -0
- package/dist/engines/secrets.d.ts +4 -0
- package/dist/engines/secrets.d.ts.map +1 -0
- package/dist/engines/secrets.js +260 -0
- package/dist/engines/secrets.js.map +1 -0
- package/dist/engines/semgrep.d.ts +3 -0
- package/dist/engines/semgrep.d.ts.map +1 -0
- package/dist/engines/semgrep.js +173 -0
- package/dist/engines/semgrep.js.map +1 -0
- package/dist/engines/types.d.ts +30 -0
- package/dist/engines/types.d.ts.map +1 -0
- package/dist/engines/types.js +3 -0
- package/dist/engines/types.js.map +1 -0
- package/dist/engines/url-scanner.d.ts +3 -0
- package/dist/engines/url-scanner.d.ts.map +1 -0
- package/dist/engines/url-scanner.js +469 -0
- package/dist/engines/url-scanner.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/orchestrator.d.ts +32 -0
- package/dist/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator.js +237 -0
- package/dist/orchestrator.js.map +1 -0
- package/dist/rules/.gitkeep +0 -0
- package/dist/rules/ai-llm-security.yaml +199 -0
- package/dist/rules/api-security.yaml +489 -0
- package/dist/rules/auth-patterns.yaml +406 -0
- package/dist/rules/crypto-patterns.yaml +227 -0
- package/dist/rules/database-cloud-security.yaml +169 -0
- package/dist/rules/general-security.yaml +588 -0
- package/dist/rules/injection-patterns.yaml +318 -0
- package/dist/rules/nextjs-security.yaml +532 -0
- package/dist/rules/node-security.yaml +380 -0
- package/dist/rules/rules/.gitkeep +0 -0
- package/dist/rules/rules/ai-llm-security.yaml +199 -0
- package/dist/rules/rules/api-security.yaml +489 -0
- package/dist/rules/rules/auth-patterns.yaml +406 -0
- package/dist/rules/rules/crypto-patterns.yaml +227 -0
- package/dist/rules/rules/database-cloud-security.yaml +169 -0
- package/dist/rules/rules/general-security.yaml +588 -0
- package/dist/rules/rules/injection-patterns.yaml +318 -0
- package/dist/rules/rules/nextjs-security.yaml +532 -0
- package/dist/rules/rules/node-security.yaml +380 -0
- package/dist/rules/rules/supabase-security.yaml +387 -0
- package/dist/rules/supabase-security.yaml +387 -0
- package/dist/scanning/agents/csharp-agent.d.ts +12 -0
- package/dist/scanning/agents/csharp-agent.d.ts.map +1 -0
- package/dist/scanning/agents/csharp-agent.js +592 -0
- package/dist/scanning/agents/csharp-agent.js.map +1 -0
- package/dist/scanning/agents/go-agent.d.ts +14 -0
- package/dist/scanning/agents/go-agent.d.ts.map +1 -0
- package/dist/scanning/agents/go-agent.js +641 -0
- package/dist/scanning/agents/go-agent.js.map +1 -0
- package/dist/scanning/agents/java-agent.d.ts +8 -0
- package/dist/scanning/agents/java-agent.d.ts.map +1 -0
- package/dist/scanning/agents/java-agent.js +807 -0
- package/dist/scanning/agents/java-agent.js.map +1 -0
- package/dist/scanning/agents/javascript-agent.d.ts +8 -0
- package/dist/scanning/agents/javascript-agent.d.ts.map +1 -0
- package/dist/scanning/agents/javascript-agent.js +77 -0
- package/dist/scanning/agents/javascript-agent.js.map +1 -0
- package/dist/scanning/agents/mobile-agent.d.ts +8 -0
- package/dist/scanning/agents/mobile-agent.d.ts.map +1 -0
- package/dist/scanning/agents/mobile-agent.js +916 -0
- package/dist/scanning/agents/mobile-agent.js.map +1 -0
- package/dist/scanning/agents/php-agent.d.ts +8 -0
- package/dist/scanning/agents/php-agent.d.ts.map +1 -0
- package/dist/scanning/agents/php-agent.js +679 -0
- package/dist/scanning/agents/php-agent.js.map +1 -0
- package/dist/scanning/agents/python-agent.d.ts +8 -0
- package/dist/scanning/agents/python-agent.d.ts.map +1 -0
- package/dist/scanning/agents/python-agent.js +701 -0
- package/dist/scanning/agents/python-agent.js.map +1 -0
- package/dist/scanning/agents/supabase-agent.d.ts +8 -0
- package/dist/scanning/agents/supabase-agent.d.ts.map +1 -0
- package/dist/scanning/agents/supabase-agent.js +484 -0
- package/dist/scanning/agents/supabase-agent.js.map +1 -0
- package/dist/scanning/orchestrator.d.ts +29 -0
- package/dist/scanning/orchestrator.d.ts.map +1 -0
- package/dist/scanning/orchestrator.js +186 -0
- package/dist/scanning/orchestrator.js.map +1 -0
- package/dist/scanning/tech-detector.d.ts +12 -0
- package/dist/scanning/tech-detector.d.ts.map +1 -0
- package/dist/scanning/tech-detector.js +252 -0
- package/dist/scanning/tech-detector.js.map +1 -0
- package/dist/scanning/types.d.ts +87 -0
- package/dist/scanning/types.d.ts.map +1 -0
- package/dist/scanning/types.js +5 -0
- package/dist/scanning/types.js.map +1 -0
- package/dist/utils/child-process.d.ts +2 -0
- package/dist/utils/child-process.d.ts.map +1 -0
- package/dist/utils/child-process.js +4 -0
- package/dist/utils/child-process.js.map +1 -0
- package/dist/utils/context-classifier.d.ts +11 -0
- package/dist/utils/context-classifier.d.ts.map +1 -0
- package/dist/utils/context-classifier.js +79 -0
- package/dist/utils/context-classifier.js.map +1 -0
- package/dist/utils/exec.d.ts +18 -0
- package/dist/utils/exec.d.ts.map +1 -0
- package/dist/utils/exec.js +51 -0
- package/dist/utils/exec.js.map +1 -0
- package/dist/utils/file-filter.d.ts +4 -0
- package/dist/utils/file-filter.d.ts.map +1 -0
- package/dist/utils/file-filter.js +68 -0
- package/dist/utils/file-filter.js.map +1 -0
- package/dist/utils/fs.d.ts +2 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +5 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/logger.d.ts +12 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +27 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/post-processor.d.ts +10 -0
- package/dist/utils/post-processor.d.ts.map +1 -0
- package/dist/utils/post-processor.js +183 -0
- package/dist/utils/post-processor.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python-agent.js","sourceRoot":"","sources":["../../../src/scanning/agents/python-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ScanAgent, ScanResult, AgentMetadata, CheckDefinition } from "../types.js";
|
|
2
|
+
export declare class SupabaseScanAgent implements ScanAgent {
|
|
3
|
+
detect(files: Map<string, string>): Promise<boolean>;
|
|
4
|
+
scan(files: Map<string, string>): Promise<ScanResult[]>;
|
|
5
|
+
getMetadata(): AgentMetadata;
|
|
6
|
+
getChecks(): CheckDefinition[];
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=supabase-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supabase-agent.d.ts","sourceRoot":"","sources":["../../../src/scanning/agents/supabase-agent.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEzF,qBAAa,iBAAkB,YAAW,SAAS;IAC3C,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAQpD,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAiB7D,WAAW,IAAI,aAAa;IAQ5B,SAAS,IAAI,eAAe,EAAE;CAsD/B"}
|
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
// Supabase security scanner agent.
|
|
2
|
+
// Detects projects that use Supabase and scans for misconfigured RLS policies,
|
|
3
|
+
// exposed service role keys, SECURITY DEFINER functions without auth checks,
|
|
4
|
+
// public storage buckets, unfiltered selects, and Edge Functions without JWT verification.
|
|
5
|
+
export class SupabaseScanAgent {
|
|
6
|
+
async detect(files) {
|
|
7
|
+
for (const [filePath, content] of files) {
|
|
8
|
+
if (filePath === "supabase/config.toml")
|
|
9
|
+
return true;
|
|
10
|
+
if (filePath === "package.json" && content.includes("@supabase/supabase-js"))
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
async scan(files) {
|
|
16
|
+
const results = [];
|
|
17
|
+
results.push(...checkAdminApiInClientCode(files));
|
|
18
|
+
results.push(...checkDisableRLS(files));
|
|
19
|
+
results.push(...checkCreateTableWithoutRLS(files));
|
|
20
|
+
results.push(...checkOverlyPermissiveRLSPolicy(files));
|
|
21
|
+
results.push(...checkSecurityDefinerWithoutAuthCheck(files));
|
|
22
|
+
results.push(...checkSignupWithoutEmailConfirmation(files));
|
|
23
|
+
results.push(...checkServiceRoleKeyInClient(files));
|
|
24
|
+
results.push(...checkPublicStorageBucket(files));
|
|
25
|
+
results.push(...checkUnfilteredSelect(files));
|
|
26
|
+
results.push(...checkEdgeFunctionWithoutJwtVerification(files));
|
|
27
|
+
return results;
|
|
28
|
+
}
|
|
29
|
+
getMetadata() {
|
|
30
|
+
return {
|
|
31
|
+
name: "supabase-agent",
|
|
32
|
+
version: "1.0.0",
|
|
33
|
+
technologies: ["supabase"],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
getChecks() {
|
|
37
|
+
return [
|
|
38
|
+
{
|
|
39
|
+
id: "supabase:admin-api-in-client",
|
|
40
|
+
name: "Admin API in client-side code",
|
|
41
|
+
severity: "CRITICAL",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: "supabase:disable-rls",
|
|
45
|
+
name: "DISABLE ROW LEVEL SECURITY",
|
|
46
|
+
severity: "CRITICAL",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: "supabase:create-table-without-rls",
|
|
50
|
+
name: "CREATE TABLE without RLS",
|
|
51
|
+
severity: "CRITICAL",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
id: "supabase:permissive-rls-policy",
|
|
55
|
+
name: "Overly permissive RLS policy",
|
|
56
|
+
severity: "CRITICAL",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: "supabase:security-definer-no-auth",
|
|
60
|
+
name: "SECURITY DEFINER without auth check",
|
|
61
|
+
severity: "HIGH",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
id: "supabase:signup-no-email-confirmation",
|
|
65
|
+
name: "Signup without email confirmation",
|
|
66
|
+
severity: "HIGH",
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
id: "supabase:service-role-key-in-client",
|
|
70
|
+
name: "Service role key in client",
|
|
71
|
+
severity: "CRITICAL",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
id: "supabase:public-storage-bucket",
|
|
75
|
+
name: "Public storage bucket",
|
|
76
|
+
severity: "HIGH",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
id: "supabase:unfiltered-select",
|
|
80
|
+
name: "Unfiltered SELECT query",
|
|
81
|
+
severity: "MEDIUM",
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: "supabase:edge-function-no-jwt",
|
|
85
|
+
name: "Edge Function without JWT verification",
|
|
86
|
+
severity: "HIGH",
|
|
87
|
+
},
|
|
88
|
+
];
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// --- Helper predicates ---
|
|
92
|
+
/** Returns true if the file path ends with .sql */
|
|
93
|
+
function isSQLFile(filePath) {
|
|
94
|
+
return filePath.endsWith(".sql");
|
|
95
|
+
}
|
|
96
|
+
/** Returns true if the file is likely rendered in a browser / client bundle. */
|
|
97
|
+
function isClientFile(filePath, content) {
|
|
98
|
+
// Explicit "use client" directive is the definitive signal
|
|
99
|
+
if (content.includes('"use client"') || content.includes("'use client'"))
|
|
100
|
+
return true;
|
|
101
|
+
// Next.js Route Handlers and server utilities are never client code
|
|
102
|
+
// even if they live under app/ — match paths like app/api/, app/.../route.ts
|
|
103
|
+
if (/app\/api\//.test(filePath))
|
|
104
|
+
return false;
|
|
105
|
+
if (filePath.endsWith("/route.ts") || filePath.endsWith("/route.js"))
|
|
106
|
+
return false;
|
|
107
|
+
// Files in these directories are typically client-rendered by convention
|
|
108
|
+
if (filePath.includes("components/") || filePath.includes("pages/"))
|
|
109
|
+
return true;
|
|
110
|
+
// .tsx/.jsx files directly inside app/ (not in api/) are often client-rendered
|
|
111
|
+
if (filePath.includes("app/") && (filePath.endsWith(".tsx") || filePath.endsWith(".jsx"))) {
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
return filePath.endsWith(".tsx") || filePath.endsWith(".jsx");
|
|
115
|
+
}
|
|
116
|
+
/** Returns true if the file lives inside supabase/functions/. */
|
|
117
|
+
function isEdgeFunction(filePath) {
|
|
118
|
+
return filePath.startsWith("supabase/functions/") || filePath.includes("/supabase/functions/");
|
|
119
|
+
}
|
|
120
|
+
// --- Check 1: Admin API in client code (CRITICAL, CWE-306) ---
|
|
121
|
+
function checkAdminApiInClientCode(files) {
|
|
122
|
+
const results = [];
|
|
123
|
+
for (const [filePath, content] of files) {
|
|
124
|
+
if (!isClientFile(filePath, content))
|
|
125
|
+
continue;
|
|
126
|
+
const lines = content.split("\n");
|
|
127
|
+
for (let i = 0; i < lines.length; i++) {
|
|
128
|
+
const line = lines[i];
|
|
129
|
+
if (line.includes("supabase.auth.admin") || line.includes("auth.admin.")) {
|
|
130
|
+
results.push({
|
|
131
|
+
checkId: "supabase:admin-api-in-client",
|
|
132
|
+
title: "Supabase admin API used in client-side code",
|
|
133
|
+
severity: "CRITICAL",
|
|
134
|
+
file: filePath,
|
|
135
|
+
line: i + 1,
|
|
136
|
+
description: "The Supabase auth.admin API is being called in client-side code. " +
|
|
137
|
+
"Admin methods bypass Row Level Security and require the service role key, " +
|
|
138
|
+
"which must never be exposed to the browser.",
|
|
139
|
+
fix: "Move admin API calls to server-side code. Never use auth.admin in client components.",
|
|
140
|
+
cwe: "CWE-306",
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return results;
|
|
146
|
+
}
|
|
147
|
+
// --- Check 2: DISABLE ROW LEVEL SECURITY (CRITICAL, CWE-284) ---
|
|
148
|
+
const DISABLE_RLS_REGEX = /ALTER\s+TABLE\s+\S+\s+DISABLE\s+ROW\s+LEVEL\s+SECURITY/i;
|
|
149
|
+
function checkDisableRLS(files) {
|
|
150
|
+
const results = [];
|
|
151
|
+
for (const [filePath, content] of files) {
|
|
152
|
+
if (!isSQLFile(filePath))
|
|
153
|
+
continue;
|
|
154
|
+
const lines = content.split("\n");
|
|
155
|
+
for (let i = 0; i < lines.length; i++) {
|
|
156
|
+
// Join with next line to catch multi-line statements
|
|
157
|
+
const chunk = lines.slice(i, i + 3).join(" ");
|
|
158
|
+
if (DISABLE_RLS_REGEX.test(chunk) && DISABLE_RLS_REGEX.test(lines[i] + (lines[i + 1] ?? "") + (lines[i + 2] ?? ""))) {
|
|
159
|
+
// Confirm the match starts on this line
|
|
160
|
+
if (/ALTER\s+TABLE/i.test(lines[i]) || (i > 0 && /ALTER\s+TABLE/i.test(lines[i - 1]))) {
|
|
161
|
+
results.push({
|
|
162
|
+
checkId: "supabase:disable-rls",
|
|
163
|
+
title: "Row Level Security disabled on table",
|
|
164
|
+
severity: "CRITICAL",
|
|
165
|
+
file: filePath,
|
|
166
|
+
line: i + 1,
|
|
167
|
+
description: "DISABLE ROW LEVEL SECURITY removes all data access restrictions from the table. " +
|
|
168
|
+
"Any authenticated or anonymous user can read or modify all rows, bypassing all policies.",
|
|
169
|
+
fix: "Never disable RLS in production. If needed for migration, re-enable immediately after.",
|
|
170
|
+
cwe: "CWE-284",
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return results;
|
|
177
|
+
}
|
|
178
|
+
// --- Check 3: CREATE TABLE without RLS (CRITICAL, CWE-284) ---
|
|
179
|
+
function checkCreateTableWithoutRLS(files) {
|
|
180
|
+
const results = [];
|
|
181
|
+
for (const [filePath, content] of files) {
|
|
182
|
+
if (!isSQLFile(filePath))
|
|
183
|
+
continue;
|
|
184
|
+
if (!content.toUpperCase().includes("CREATE TABLE"))
|
|
185
|
+
continue;
|
|
186
|
+
if (content.toUpperCase().includes("ENABLE ROW LEVEL SECURITY"))
|
|
187
|
+
continue;
|
|
188
|
+
// Find the first CREATE TABLE line to report
|
|
189
|
+
const lines = content.split("\n");
|
|
190
|
+
for (let i = 0; i < lines.length; i++) {
|
|
191
|
+
if (/CREATE\s+TABLE/i.test(lines[i])) {
|
|
192
|
+
results.push({
|
|
193
|
+
checkId: "supabase:create-table-without-rls",
|
|
194
|
+
title: "Table created without enabling Row Level Security",
|
|
195
|
+
severity: "CRITICAL",
|
|
196
|
+
file: filePath,
|
|
197
|
+
line: i + 1,
|
|
198
|
+
description: "This migration creates a table but does not enable Row Level Security. " +
|
|
199
|
+
"Without RLS, any user with database access can read or modify all rows.",
|
|
200
|
+
fix: "Add RLS to every table: ALTER TABLE table_name ENABLE ROW LEVEL SECURITY;",
|
|
201
|
+
cwe: "CWE-284",
|
|
202
|
+
});
|
|
203
|
+
// One finding per file is sufficient — the missing ENABLE RLS is a file-level issue
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return results;
|
|
209
|
+
}
|
|
210
|
+
// --- Check 4: Overly permissive RLS policy (CRITICAL, CWE-284) ---
|
|
211
|
+
// Matches USING (true) or USING(true) with optional whitespace
|
|
212
|
+
const PERMISSIVE_USING_REGEX = /USING\s*\(\s*true\s*\)/i;
|
|
213
|
+
// Matches public table names in the CREATE POLICY statement
|
|
214
|
+
const PUBLIC_TABLE_REGEX = /(?:public_|_public\b|["'\s]public["'\s])/i;
|
|
215
|
+
function checkOverlyPermissiveRLSPolicy(files) {
|
|
216
|
+
const results = [];
|
|
217
|
+
for (const [filePath, content] of files) {
|
|
218
|
+
if (!isSQLFile(filePath))
|
|
219
|
+
continue;
|
|
220
|
+
const lines = content.split("\n");
|
|
221
|
+
for (let i = 0; i < lines.length; i++) {
|
|
222
|
+
const line = lines[i];
|
|
223
|
+
if (!/CREATE\s+POLICY/i.test(line))
|
|
224
|
+
continue;
|
|
225
|
+
// Gather the full policy statement (up to the semicolon or next 10 lines)
|
|
226
|
+
const policyLines = [];
|
|
227
|
+
for (let j = i; j < Math.min(i + 10, lines.length); j++) {
|
|
228
|
+
policyLines.push(lines[j]);
|
|
229
|
+
if (lines[j].includes(";"))
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
const policyBlock = policyLines.join(" ");
|
|
233
|
+
if (!PERMISSIVE_USING_REGEX.test(policyBlock))
|
|
234
|
+
continue;
|
|
235
|
+
// Skip policies explicitly for public-read tables
|
|
236
|
+
if (PUBLIC_TABLE_REGEX.test(policyBlock) || /\bpublic\b/i.test(line))
|
|
237
|
+
continue;
|
|
238
|
+
results.push({
|
|
239
|
+
checkId: "supabase:permissive-rls-policy",
|
|
240
|
+
title: "Overly permissive RLS policy uses USING(true)",
|
|
241
|
+
severity: "CRITICAL",
|
|
242
|
+
file: filePath,
|
|
243
|
+
line: i + 1,
|
|
244
|
+
description: "USING (true) in an RLS policy allows every user — including anonymous users — " +
|
|
245
|
+
"to access every row in the table. This effectively disables row-level access control.",
|
|
246
|
+
fix: "Use auth.uid() in policies: CREATE POLICY ... USING (auth.uid() = user_id)",
|
|
247
|
+
cwe: "CWE-284",
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return results;
|
|
252
|
+
}
|
|
253
|
+
// --- Check 5: SECURITY DEFINER without auth check (HIGH, CWE-306) ---
|
|
254
|
+
function checkSecurityDefinerWithoutAuthCheck(files) {
|
|
255
|
+
const results = [];
|
|
256
|
+
for (const [filePath, content] of files) {
|
|
257
|
+
if (!isSQLFile(filePath))
|
|
258
|
+
continue;
|
|
259
|
+
const lines = content.split("\n");
|
|
260
|
+
for (let i = 0; i < lines.length; i++) {
|
|
261
|
+
if (!/SECURITY\s+DEFINER/i.test(lines[i]))
|
|
262
|
+
continue;
|
|
263
|
+
// Check surrounding 20 lines for auth.uid / auth.jwt
|
|
264
|
+
const start = Math.max(0, i - 10);
|
|
265
|
+
const end = Math.min(lines.length, i + 10);
|
|
266
|
+
const surroundingBlock = lines.slice(start, end).join("\n");
|
|
267
|
+
if (!/auth\.uid|auth\.jwt/i.test(surroundingBlock)) {
|
|
268
|
+
results.push({
|
|
269
|
+
checkId: "supabase:security-definer-no-auth",
|
|
270
|
+
title: "SECURITY DEFINER function without authentication check",
|
|
271
|
+
severity: "HIGH",
|
|
272
|
+
file: filePath,
|
|
273
|
+
line: i + 1,
|
|
274
|
+
description: "A SECURITY DEFINER function runs with the privileges of the function owner, " +
|
|
275
|
+
"bypassing RLS and normal permission checks. Without an auth.uid() or auth.jwt() " +
|
|
276
|
+
"guard, any caller — including anonymous users — can invoke it with elevated privileges.",
|
|
277
|
+
fix: "Add auth checks in SECURITY DEFINER functions: IF auth.uid() IS NULL THEN RAISE EXCEPTION 'Not authenticated'; END IF;",
|
|
278
|
+
cwe: "CWE-306",
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return results;
|
|
284
|
+
}
|
|
285
|
+
// --- Check 6: Signup without email confirmation (HIGH, CWE-287) ---
|
|
286
|
+
function checkSignupWithoutEmailConfirmation(files) {
|
|
287
|
+
const results = [];
|
|
288
|
+
for (const [filePath, content] of files) {
|
|
289
|
+
if (filePath !== "supabase/config.toml")
|
|
290
|
+
continue;
|
|
291
|
+
if (!content.includes("enable_signup = true"))
|
|
292
|
+
continue;
|
|
293
|
+
// Require explicit enable_confirmations = true; absence or false both fail
|
|
294
|
+
if (!content.includes("enable_confirmations = true")) {
|
|
295
|
+
const lines = content.split("\n");
|
|
296
|
+
const lineIndex = lines.findIndex((l) => l.includes("enable_signup = true"));
|
|
297
|
+
results.push({
|
|
298
|
+
checkId: "supabase:signup-no-email-confirmation",
|
|
299
|
+
title: "Supabase signup enabled without email confirmation",
|
|
300
|
+
severity: "HIGH",
|
|
301
|
+
file: filePath,
|
|
302
|
+
line: lineIndex + 1,
|
|
303
|
+
description: "Signups are enabled but email confirmation is not required. " +
|
|
304
|
+
"Anyone can register with any email address — including addresses they do not own — " +
|
|
305
|
+
"without verifying ownership. This enables account hijacking and spam.",
|
|
306
|
+
fix: "Enable email confirmations: [auth] enable_confirmations = true",
|
|
307
|
+
cwe: "CWE-287",
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
return results;
|
|
312
|
+
}
|
|
313
|
+
// --- Check 7: Service role key in client (CRITICAL, CWE-798) ---
|
|
314
|
+
// Matches env var names that expose service role keys to the client
|
|
315
|
+
const SERVICE_ROLE_ENV_REGEX = /NEXT_PUBLIC_SUPABASE_SERVICE_ROLE|NEXT_PUBLIC[_A-Z]*service_role|VITE_SUPABASE_SERVICE_ROLE/i;
|
|
316
|
+
function checkServiceRoleKeyInClient(files) {
|
|
317
|
+
const results = [];
|
|
318
|
+
for (const [filePath, content] of files) {
|
|
319
|
+
const lines = content.split("\n");
|
|
320
|
+
for (let i = 0; i < lines.length; i++) {
|
|
321
|
+
const line = lines[i];
|
|
322
|
+
// Pattern A: env variable with NEXT_PUBLIC or VITE_ prefix exposes service role
|
|
323
|
+
if (SERVICE_ROLE_ENV_REGEX.test(line)) {
|
|
324
|
+
results.push({
|
|
325
|
+
checkId: "supabase:service-role-key-in-client",
|
|
326
|
+
title: "Service role key exposed via public environment variable",
|
|
327
|
+
severity: "CRITICAL",
|
|
328
|
+
file: filePath,
|
|
329
|
+
line: i + 1,
|
|
330
|
+
description: "The Supabase service role key is referenced through a public environment variable " +
|
|
331
|
+
"(NEXT_PUBLIC_ or VITE_ prefixed). These variables are bundled into the client-side " +
|
|
332
|
+
"JavaScript and visible to any user who inspects the page source. " +
|
|
333
|
+
"The service role key bypasses all RLS policies.",
|
|
334
|
+
fix: "Never expose the service role key to the client. Use it only in server-side code.",
|
|
335
|
+
cwe: "CWE-798",
|
|
336
|
+
});
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
// Pattern B: service_role or serviceRoleKey referenced inside client files
|
|
340
|
+
if (isClientFile(filePath, content) &&
|
|
341
|
+
(line.includes("service_role") || line.includes("serviceRoleKey"))) {
|
|
342
|
+
results.push({
|
|
343
|
+
checkId: "supabase:service-role-key-in-client",
|
|
344
|
+
title: "Service role key referenced in client-side code",
|
|
345
|
+
severity: "CRITICAL",
|
|
346
|
+
file: filePath,
|
|
347
|
+
line: i + 1,
|
|
348
|
+
description: "The Supabase service role key is referenced in client-side code. " +
|
|
349
|
+
"It bypasses all Row Level Security policies and grants full database access. " +
|
|
350
|
+
"Exposing it in the browser allows attackers to read, modify, or delete all data.",
|
|
351
|
+
fix: "Never expose the service role key to the client. Use it only in server-side code.",
|
|
352
|
+
cwe: "CWE-798",
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
return results;
|
|
358
|
+
}
|
|
359
|
+
// --- Check 8: Public storage bucket (HIGH, CWE-284) ---
|
|
360
|
+
// Matches storage.objects SELECT policies with USING (true) — publicly readable
|
|
361
|
+
const STORAGE_SELECT_USING_TRUE_REGEX = /storage\.objects[\s\S]{0,200}?FOR\s+SELECT[\s\S]{0,100}?USING\s*\(\s*true\s*\)/i;
|
|
362
|
+
function checkPublicStorageBucket(files) {
|
|
363
|
+
const results = [];
|
|
364
|
+
for (const [filePath, content] of files) {
|
|
365
|
+
if (!isSQLFile(filePath))
|
|
366
|
+
continue;
|
|
367
|
+
if (!content.toLowerCase().includes("storage.objects"))
|
|
368
|
+
continue;
|
|
369
|
+
const lines = content.split("\n");
|
|
370
|
+
for (let i = 0; i < lines.length; i++) {
|
|
371
|
+
// Look for a policy block that references storage.objects
|
|
372
|
+
if (!/storage\.objects/i.test(lines[i]))
|
|
373
|
+
continue;
|
|
374
|
+
// Collect the surrounding policy block (up to 20 lines forward)
|
|
375
|
+
const block = lines.slice(i, Math.min(i + 20, lines.length)).join("\n");
|
|
376
|
+
if (/FOR\s+SELECT/i.test(block) && /USING\s*\(\s*true\s*\)/i.test(block)) {
|
|
377
|
+
results.push({
|
|
378
|
+
checkId: "supabase:public-storage-bucket",
|
|
379
|
+
title: "Public storage bucket allows unrestricted SELECT",
|
|
380
|
+
severity: "HIGH",
|
|
381
|
+
file: filePath,
|
|
382
|
+
line: i + 1,
|
|
383
|
+
description: "A storage.objects policy uses USING (true) for SELECT, making all files in the " +
|
|
384
|
+
"bucket publicly readable without authentication. Sensitive files could be accessed " +
|
|
385
|
+
"by anyone who discovers the storage URL.",
|
|
386
|
+
fix: "Add proper RLS policies to storage buckets based on user authentication.",
|
|
387
|
+
cwe: "CWE-284",
|
|
388
|
+
});
|
|
389
|
+
break; // One finding per storage.objects block
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
return results;
|
|
394
|
+
}
|
|
395
|
+
// --- Check 9: Unfiltered select in server code (MEDIUM, CWE-200) ---
|
|
396
|
+
function checkUnfilteredSelect(files) {
|
|
397
|
+
const results = [];
|
|
398
|
+
for (const [filePath, content] of files) {
|
|
399
|
+
// Only check TypeScript/JavaScript files
|
|
400
|
+
if (!filePath.endsWith(".ts") &&
|
|
401
|
+
!filePath.endsWith(".tsx") &&
|
|
402
|
+
!filePath.endsWith(".js") &&
|
|
403
|
+
!filePath.endsWith(".jsx")) {
|
|
404
|
+
continue;
|
|
405
|
+
}
|
|
406
|
+
const lines = content.split("\n");
|
|
407
|
+
for (let i = 0; i < lines.length; i++) {
|
|
408
|
+
const line = lines[i];
|
|
409
|
+
// Must have .from( to be a Supabase query
|
|
410
|
+
if (!line.includes(".from("))
|
|
411
|
+
continue;
|
|
412
|
+
// Must have .select( with wildcard or empty argument
|
|
413
|
+
const fromIndex = line.indexOf(".from(");
|
|
414
|
+
const selectMatch = line.match(/\.select\s*\(\s*['"`]\*['"`]\s*\)/) ||
|
|
415
|
+
line.match(/\.select\s*\(\s*\)/);
|
|
416
|
+
if (!selectMatch) {
|
|
417
|
+
// Check the next 2 lines for a .select() call
|
|
418
|
+
const nextLines = lines.slice(i + 1, Math.min(i + 3, lines.length)).join(" ");
|
|
419
|
+
if (!/\.select\s*\(\s*['"`]\*['"`]\s*\)/.test(nextLines) &&
|
|
420
|
+
!/\.select\s*\(\s*\)/.test(nextLines)) {
|
|
421
|
+
continue;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
// Check if a filter is present within 3 lines
|
|
425
|
+
const block = lines.slice(i, Math.min(i + 4, lines.length)).join("\n");
|
|
426
|
+
if (/\.eq\s*\(|\.match\s*\(|\.filter\s*\(/.test(block))
|
|
427
|
+
continue;
|
|
428
|
+
// Skip if the file is client-side (client files are already partially
|
|
429
|
+
// restricted by RLS, the bigger concern is server-side unfiltered access)
|
|
430
|
+
// We actually flag both but avoid flagging test/mock files.
|
|
431
|
+
if (filePath.includes(".test.") || filePath.includes(".spec."))
|
|
432
|
+
continue;
|
|
433
|
+
results.push({
|
|
434
|
+
checkId: "supabase:unfiltered-select",
|
|
435
|
+
title: "Unfiltered Supabase SELECT query without row filter",
|
|
436
|
+
severity: "MEDIUM",
|
|
437
|
+
file: filePath,
|
|
438
|
+
line: i + 1,
|
|
439
|
+
description: "A Supabase query selects all rows with no filter condition (.eq(), .match(), .filter()). " +
|
|
440
|
+
"Even with RLS enabled, this pattern may return more data than intended if policies are " +
|
|
441
|
+
"accidentally permissive. Always scope queries to the current user.",
|
|
442
|
+
fix: "Always filter queries by user: supabase.from('table').select('*').eq('user_id', userId)",
|
|
443
|
+
cwe: "CWE-200",
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
return results;
|
|
448
|
+
}
|
|
449
|
+
// --- Check 10: Edge Function without JWT verification (HIGH, CWE-306) ---
|
|
450
|
+
function checkEdgeFunctionWithoutJwtVerification(files) {
|
|
451
|
+
const results = [];
|
|
452
|
+
for (const [filePath, content] of files) {
|
|
453
|
+
if (!isEdgeFunction(filePath))
|
|
454
|
+
continue;
|
|
455
|
+
if (!filePath.endsWith(".ts") && !filePath.endsWith(".js"))
|
|
456
|
+
continue;
|
|
457
|
+
const hasAuthCheck = content.includes("req.headers.get('authorization')") ||
|
|
458
|
+
content.includes('req.headers.get("authorization")') ||
|
|
459
|
+
content.includes("req.headers.get('Authorization')") ||
|
|
460
|
+
content.includes('req.headers.get("Authorization")') ||
|
|
461
|
+
content.includes("Authorization") ||
|
|
462
|
+
content.includes("supabase.auth.getUser") ||
|
|
463
|
+
content.includes("supabase.auth.getSession");
|
|
464
|
+
if (!hasAuthCheck) {
|
|
465
|
+
// Find the first non-blank line to pin the finding
|
|
466
|
+
const lines = content.split("\n");
|
|
467
|
+
const firstLine = lines.findIndex((l) => l.trim() !== "") + 1;
|
|
468
|
+
results.push({
|
|
469
|
+
checkId: "supabase:edge-function-no-jwt",
|
|
470
|
+
title: "Edge Function does not verify JWT authorization",
|
|
471
|
+
severity: "HIGH",
|
|
472
|
+
file: filePath,
|
|
473
|
+
line: firstLine > 0 ? firstLine : 1,
|
|
474
|
+
description: "This Supabase Edge Function does not appear to check the Authorization header " +
|
|
475
|
+
"or verify the caller's JWT. Any unauthenticated request can invoke it, " +
|
|
476
|
+
"potentially exposing sensitive operations to the public.",
|
|
477
|
+
fix: "Verify JWT in Edge Functions: const authHeader = req.headers.get('Authorization')",
|
|
478
|
+
cwe: "CWE-306",
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
return results;
|
|
483
|
+
}
|
|
484
|
+
//# sourceMappingURL=supabase-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supabase-agent.js","sourceRoot":"","sources":["../../../src/scanning/agents/supabase-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ScanAgent, ScanResult, ScanReport, ScanLog } from "./types.js";
|
|
2
|
+
interface AgentRunResult {
|
|
3
|
+
agentName: string;
|
|
4
|
+
results: ScanResult[];
|
|
5
|
+
durationMs: number;
|
|
6
|
+
error?: string;
|
|
7
|
+
}
|
|
8
|
+
/** Register a scan agent. Called by each agent module on import. */
|
|
9
|
+
export declare function registerAgent(agent: ScanAgent): void;
|
|
10
|
+
/** Get all registered agents (for testing). */
|
|
11
|
+
export declare function getRegisteredAgents(): readonly ScanAgent[];
|
|
12
|
+
/** Clear registry (for testing). */
|
|
13
|
+
export declare function clearAgentRegistry(): void;
|
|
14
|
+
/**
|
|
15
|
+
* Run a full multi-technology scan.
|
|
16
|
+
*
|
|
17
|
+
* 1. Detect technologies in the repo
|
|
18
|
+
* 2. Filter agents to only those whose technologies match
|
|
19
|
+
* 3. Run matching agents in parallel (with timeout)
|
|
20
|
+
* 4. Deduplicate and aggregate results into a ScanReport
|
|
21
|
+
*/
|
|
22
|
+
export declare function runMultiTechScan(files: Map<string, string>, options?: {
|
|
23
|
+
exclude?: string[];
|
|
24
|
+
}): Promise<ScanReport & {
|
|
25
|
+
agentResults: AgentRunResult[];
|
|
26
|
+
scanLog: ScanLog;
|
|
27
|
+
}>;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/scanning/orchestrator.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,UAAU,EAEV,OAAO,EAGR,MAAM,YAAY,CAAC;AAYpB,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD,oEAAoE;AACpE,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAEpD;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,IAAI,SAAS,SAAS,EAAE,CAE1D;AAED,oCAAoC;AACpC,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAYD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1B,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACnC,OAAO,CAAC,UAAU,GAAG;IAAE,YAAY,EAAE,cAAc,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA6F5E"}
|