@next-secure-check/rules 0.1.0 → 0.3.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.
@@ -0,0 +1,17 @@
1
+ import type { Severity, SourceFile } from "@next-secure-check/core";
2
+ export type AstMatch = {
3
+ line: number;
4
+ column: number;
5
+ evidence: string;
6
+ sourceLine: string;
7
+ };
8
+ export type DangerouslySetInnerHtmlMatch = AstMatch & {
9
+ severity: Extract<Severity, "LOW" | "MEDIUM">;
10
+ };
11
+ export declare function findCommandExecutionMatches(file: SourceFile): AstMatch[];
12
+ export declare function findRawSqlConcatMatches(file: SourceFile): AstMatch[];
13
+ export declare function findDangerouslySetInnerHtmlMatches(file: SourceFile): DangerouslySetInnerHtmlMatch[];
14
+ export declare function findPasswordHandlingMatches(file: SourceFile): AstMatch[];
15
+ export declare function findRouteHandlerExports(file: SourceFile): AstMatch[];
16
+ export declare function findUploadRouteHandlerMatches(file: SourceFile): AstMatch[];
17
+ //# sourceMappingURL=ast-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-utils.d.ts","sourceRoot":"","sources":["../src/ast-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGpE,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,QAAQ,GAAG;IACpD,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC;CAC/C,CAAC;AASF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,EAAE,CAsBxE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,EAAE,CAmBpE;AAED,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,UAAU,GAAG,4BAA4B,EAAE,CAuBnG;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,EAAE,CAexE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,EAAE,CAYpE;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,EAAE,CAqB1E"}
@@ -0,0 +1,463 @@
1
+ import ts from "typescript";
2
+ const COMMAND_EXECUTION_NAMES = new Set(["exec", "execSync", "spawn", "spawnSync"]);
3
+ const ROUTE_HANDLER_NAMES = new Set(["GET", "POST", "PUT", "DELETE", "PATCH"]);
4
+ const SQL_QUERY_METHOD_NAMES = new Set(["query", "execute"]);
5
+ const SQL_RAW_TAG_NAMES = new Set(["$queryRaw", "$executeRaw"]);
6
+ const SQL_KEYWORD_PATTERN = /\b(SELECT|INSERT|UPDATE|DELETE)\b/i;
7
+ const SANITIZER_MODULE_PATTERN = /^(?:dompurify|sanitize-html)$/i;
8
+ export function findCommandExecutionMatches(file) {
9
+ const sourceFile = ts.createSourceFile(file.path, file.content, ts.ScriptTarget.Latest, true, scriptKindForPath(file.path));
10
+ const commandIdentifiers = new Set();
11
+ const childProcessNamespaces = new Set();
12
+ const declarationNodes = [];
13
+ visit(sourceFile, (node) => {
14
+ collectChildProcessImports(node, commandIdentifiers, childProcessNamespaces, declarationNodes);
15
+ collectChildProcessRequires(node, commandIdentifiers, childProcessNamespaces, declarationNodes);
16
+ });
17
+ const matches = declarationNodes.map((node) => matchFromNode(file, sourceFile, node));
18
+ visit(sourceFile, (node) => {
19
+ if (!ts.isCallExpression(node) || !isCommandExecutionCall(node.expression, commandIdentifiers, childProcessNamespaces)) {
20
+ return;
21
+ }
22
+ matches.push(matchFromNode(file, sourceFile, node));
23
+ });
24
+ return dedupeMatches(matches);
25
+ }
26
+ export function findRawSqlConcatMatches(file) {
27
+ const sourceFile = ts.createSourceFile(file.path, file.content, ts.ScriptTarget.Latest, true, scriptKindForPath(file.path));
28
+ const matches = [];
29
+ visit(sourceFile, (node) => {
30
+ if (ts.isCallExpression(node) && isSqlQuerySinkCall(node)) {
31
+ const [firstArgument] = node.arguments;
32
+ if (isInterpolatedSqlTemplate(firstArgument)) {
33
+ matches.push(matchFromNode(file, sourceFile, node));
34
+ }
35
+ return;
36
+ }
37
+ if (ts.isTaggedTemplateExpression(node) && isRawSqlTaggedTemplate(node) && isInterpolatedSqlTemplate(node.template)) {
38
+ matches.push(matchFromNode(file, sourceFile, node));
39
+ }
40
+ });
41
+ return dedupeMatches(matches);
42
+ }
43
+ export function findDangerouslySetInnerHtmlMatches(file) {
44
+ const sourceFile = ts.createSourceFile(file.path, file.content, ts.ScriptTarget.Latest, true, scriptKindForPath(file.path));
45
+ const sanitizerIdentifiers = collectSanitizerIdentifiers(sourceFile);
46
+ const safeHtmlIdentifiers = collectSafeHtmlIdentifiers(sourceFile, sanitizerIdentifiers);
47
+ const matches = [];
48
+ visit(sourceFile, (node) => {
49
+ if (!ts.isJsxAttribute(node) || !ts.isIdentifier(node.name) || node.name.text !== "dangerouslySetInnerHTML") {
50
+ return;
51
+ }
52
+ const severity = dangerouslySetInnerHtmlSeverity(node.initializer, sanitizerIdentifiers, safeHtmlIdentifiers);
53
+ if (!severity) {
54
+ return;
55
+ }
56
+ matches.push({
57
+ ...matchFromNode(file, sourceFile, node),
58
+ severity
59
+ });
60
+ });
61
+ return dedupeMatches(matches);
62
+ }
63
+ export function findPasswordHandlingMatches(file) {
64
+ const sourceFile = ts.createSourceFile(file.path, file.content, ts.ScriptTarget.Latest, true, scriptKindForPath(file.path));
65
+ const matches = [];
66
+ if (hasPasswordHashingCall(sourceFile)) {
67
+ return matches;
68
+ }
69
+ visit(sourceFile, (node) => {
70
+ if (isPasswordHandlingNode(node)) {
71
+ matches.push(matchFromNode(file, sourceFile, node));
72
+ }
73
+ });
74
+ return dedupeMatches(matches);
75
+ }
76
+ export function findRouteHandlerExports(file) {
77
+ const sourceFile = ts.createSourceFile(file.path, file.content, ts.ScriptTarget.Latest, true, scriptKindForPath(file.path));
78
+ const matches = [];
79
+ visit(sourceFile, (node) => {
80
+ const name = exportedRouteHandlerName(node);
81
+ if (name && (name === "DEFAULT" || ROUTE_HANDLER_NAMES.has(name))) {
82
+ matches.push(matchFromNode(file, sourceFile, node));
83
+ }
84
+ });
85
+ return dedupeMatches(matches);
86
+ }
87
+ export function findUploadRouteHandlerMatches(file) {
88
+ if (!isApiRouteFilePath(file.path)) {
89
+ return [];
90
+ }
91
+ const sourceFile = ts.createSourceFile(file.path, file.content, ts.ScriptTarget.Latest, true, scriptKindForPath(file.path));
92
+ const routeHandlerMatches = [];
93
+ let hasUploadHandling = false;
94
+ visit(sourceFile, (node) => {
95
+ const name = exportedRouteHandlerName(node);
96
+ if (name && (name === "DEFAULT" || name === "POST" || name === "PUT" || name === "PATCH")) {
97
+ routeHandlerMatches.push(matchFromNode(file, sourceFile, node));
98
+ }
99
+ if (!hasUploadHandling && isUploadHandlingNode(node)) {
100
+ hasUploadHandling = true;
101
+ }
102
+ });
103
+ return hasUploadHandling ? dedupeMatches(routeHandlerMatches) : [];
104
+ }
105
+ function collectChildProcessImports(node, commandIdentifiers, childProcessNamespaces, declarationNodes) {
106
+ if (!ts.isImportDeclaration(node) || !isChildProcessSpecifier(node.moduleSpecifier)) {
107
+ return;
108
+ }
109
+ const importClause = node.importClause;
110
+ if (!importClause) {
111
+ return;
112
+ }
113
+ if (importClause.name) {
114
+ childProcessNamespaces.add(importClause.name.text);
115
+ }
116
+ const namedBindings = importClause.namedBindings;
117
+ if (namedBindings && ts.isNamespaceImport(namedBindings)) {
118
+ childProcessNamespaces.add(namedBindings.name.text);
119
+ return;
120
+ }
121
+ if (!namedBindings || !ts.isNamedImports(namedBindings)) {
122
+ return;
123
+ }
124
+ for (const importSpecifier of namedBindings.elements) {
125
+ const importedName = importSpecifier.propertyName?.text ?? importSpecifier.name.text;
126
+ if (!COMMAND_EXECUTION_NAMES.has(importedName)) {
127
+ continue;
128
+ }
129
+ commandIdentifiers.add(importSpecifier.name.text);
130
+ declarationNodes.push(importSpecifier);
131
+ }
132
+ }
133
+ function collectChildProcessRequires(node, commandIdentifiers, childProcessNamespaces, declarationNodes) {
134
+ if (!ts.isVariableDeclaration(node) || !node.initializer) {
135
+ return;
136
+ }
137
+ if (isRequireChildProcessCall(node.initializer)) {
138
+ if (ts.isIdentifier(node.name)) {
139
+ childProcessNamespaces.add(node.name.text);
140
+ return;
141
+ }
142
+ if (ts.isObjectBindingPattern(node.name)) {
143
+ for (const element of node.name.elements) {
144
+ const importedName = bindingElementName(element);
145
+ const localName = bindingElementLocalName(element);
146
+ if (!importedName || !localName || !COMMAND_EXECUTION_NAMES.has(importedName)) {
147
+ continue;
148
+ }
149
+ commandIdentifiers.add(localName);
150
+ declarationNodes.push(element);
151
+ }
152
+ }
153
+ return;
154
+ }
155
+ if (ts.isPropertyAccessExpression(node.initializer) && isRequireChildProcessCall(node.initializer.expression)) {
156
+ const importedName = node.initializer.name.text;
157
+ if (ts.isIdentifier(node.name) && COMMAND_EXECUTION_NAMES.has(importedName)) {
158
+ commandIdentifiers.add(node.name.text);
159
+ declarationNodes.push(node);
160
+ }
161
+ }
162
+ }
163
+ function isCommandExecutionCall(expression, commandIdentifiers, childProcessNamespaces) {
164
+ if (ts.isIdentifier(expression)) {
165
+ return commandIdentifiers.has(expression.text);
166
+ }
167
+ if (!ts.isPropertyAccessExpression(expression) || !COMMAND_EXECUTION_NAMES.has(expression.name.text)) {
168
+ return false;
169
+ }
170
+ return ts.isIdentifier(expression.expression) && childProcessNamespaces.has(expression.expression.text);
171
+ }
172
+ function isSqlQuerySinkCall(node) {
173
+ const expression = node.expression;
174
+ return ts.isPropertyAccessExpression(expression) && SQL_QUERY_METHOD_NAMES.has(expression.name.text);
175
+ }
176
+ function isRawSqlTaggedTemplate(node) {
177
+ const tag = node.tag;
178
+ return ts.isPropertyAccessExpression(tag) && SQL_RAW_TAG_NAMES.has(tag.name.text);
179
+ }
180
+ function isInterpolatedSqlTemplate(node) {
181
+ return node !== undefined && ts.isTemplateExpression(node) && SQL_KEYWORD_PATTERN.test(node.getText());
182
+ }
183
+ function dangerouslySetInnerHtmlSeverity(initializer, sanitizerIdentifiers, safeHtmlIdentifiers) {
184
+ if (!initializer || ts.isStringLiteral(initializer)) {
185
+ return undefined;
186
+ }
187
+ if (!ts.isJsxExpression(initializer) || !initializer.expression) {
188
+ return undefined;
189
+ }
190
+ const expression = initializer.expression;
191
+ if (!ts.isObjectLiteralExpression(expression)) {
192
+ return "LOW";
193
+ }
194
+ const htmlExpression = expression.properties
195
+ .filter(ts.isPropertyAssignment)
196
+ .find((property) => propertyNameText(property.name) === "__html")?.initializer;
197
+ if (!htmlExpression || isStaticHtmlExpression(htmlExpression, safeHtmlIdentifiers) || isSanitizedHtmlExpression(htmlExpression, sanitizerIdentifiers)) {
198
+ return undefined;
199
+ }
200
+ return "MEDIUM";
201
+ }
202
+ function collectSanitizerIdentifiers(sourceFile) {
203
+ const sanitizerIdentifiers = new Set();
204
+ visit(sourceFile, (node) => {
205
+ if (!ts.isImportDeclaration(node) || !ts.isStringLiteralLike(node.moduleSpecifier)) {
206
+ return;
207
+ }
208
+ const moduleName = node.moduleSpecifier.text;
209
+ const importClause = node.importClause;
210
+ if (!importClause) {
211
+ return;
212
+ }
213
+ if (importClause.name && SANITIZER_MODULE_PATTERN.test(moduleName)) {
214
+ sanitizerIdentifiers.add(importClause.name.text);
215
+ }
216
+ const namedBindings = importClause.namedBindings;
217
+ if (!namedBindings || !ts.isNamedImports(namedBindings)) {
218
+ return;
219
+ }
220
+ for (const importSpecifier of namedBindings.elements) {
221
+ const importedName = importSpecifier.propertyName?.text ?? importSpecifier.name.text;
222
+ if (isSanitizerFunctionName(importedName)) {
223
+ sanitizerIdentifiers.add(importSpecifier.name.text);
224
+ }
225
+ }
226
+ });
227
+ return sanitizerIdentifiers;
228
+ }
229
+ function collectSafeHtmlIdentifiers(sourceFile, sanitizerIdentifiers) {
230
+ const safeHtmlIdentifiers = new Set();
231
+ visit(sourceFile, (node) => {
232
+ if (!ts.isVariableStatement(node) || (node.declarationList.flags & ts.NodeFlags.Const) === 0) {
233
+ return;
234
+ }
235
+ for (const declaration of node.declarationList.declarations) {
236
+ if (!ts.isIdentifier(declaration.name) || !declaration.initializer) {
237
+ continue;
238
+ }
239
+ if (isStaticHtmlExpression(declaration.initializer, safeHtmlIdentifiers) || isSanitizedHtmlExpression(declaration.initializer, sanitizerIdentifiers)) {
240
+ safeHtmlIdentifiers.add(declaration.name.text);
241
+ }
242
+ }
243
+ });
244
+ return safeHtmlIdentifiers;
245
+ }
246
+ function propertyNameText(name) {
247
+ if (ts.isIdentifier(name) || ts.isStringLiteralLike(name) || ts.isNumericLiteral(name)) {
248
+ return name.text;
249
+ }
250
+ return undefined;
251
+ }
252
+ function isStaticHtmlExpression(expression, safeHtmlIdentifiers) {
253
+ return ts.isStringLiteralLike(expression) || ts.isNoSubstitutionTemplateLiteral(expression) || (ts.isIdentifier(expression) && safeHtmlIdentifiers.has(expression.text));
254
+ }
255
+ function isSanitizedHtmlExpression(expression, sanitizerIdentifiers) {
256
+ if (!ts.isCallExpression(expression)) {
257
+ return false;
258
+ }
259
+ if (ts.isIdentifier(expression.expression)) {
260
+ return sanitizerIdentifiers.has(expression.expression.text) || isSanitizerFunctionName(expression.expression.text);
261
+ }
262
+ if (ts.isPropertyAccessExpression(expression.expression)) {
263
+ return isSanitizerFunctionName(expression.expression.name.text);
264
+ }
265
+ return false;
266
+ }
267
+ function isSanitizerFunctionName(name) {
268
+ return /^(?:sanitize|sanitizeHtml|sanitizeMarkdown|sanitizeContent|toSafeHtml)$/i.test(name);
269
+ }
270
+ function hasPasswordHashingCall(sourceFile) {
271
+ let hasHashingCall = false;
272
+ visit(sourceFile, (node) => {
273
+ if (hasHashingCall || !ts.isCallExpression(node)) {
274
+ return;
275
+ }
276
+ hasHashingCall = isPasswordHashingCall(node);
277
+ });
278
+ return hasHashingCall;
279
+ }
280
+ function isPasswordHashingCall(node) {
281
+ const expression = node.expression;
282
+ if (ts.isIdentifier(expression)) {
283
+ return /^scrypt(?:Sync)?$/i.test(expression.text);
284
+ }
285
+ if (!ts.isPropertyAccessExpression(expression)) {
286
+ return false;
287
+ }
288
+ const methodName = expression.name.text;
289
+ const targetName = expressionNameText(expression.expression);
290
+ if (/^scrypt(?:Sync)?$/i.test(methodName) && targetName === "crypto") {
291
+ return true;
292
+ }
293
+ return methodName === "hash" && (targetName === "bcrypt" || targetName === "argon2");
294
+ }
295
+ function isPasswordHandlingNode(node) {
296
+ if (ts.isVariableDeclaration(node)) {
297
+ return isPasswordVariableDeclaration(node);
298
+ }
299
+ return (ts.isPropertyAccessExpression(node) &&
300
+ node.name.text === "password" &&
301
+ isRequestBodyExpression(node.expression) &&
302
+ !isVariableDeclarationInitializer(node));
303
+ }
304
+ function isPasswordVariableDeclaration(node) {
305
+ if (!node.initializer) {
306
+ return false;
307
+ }
308
+ if (ts.isIdentifier(node.name) && node.name.text === "password") {
309
+ return isPasswordSourceExpression(node.initializer);
310
+ }
311
+ if (!ts.isObjectBindingPattern(node.name)) {
312
+ return false;
313
+ }
314
+ return node.name.elements.some((element) => bindingElementName(element) === "password") && isCredentialJsonExpression(node.initializer);
315
+ }
316
+ function isPasswordSourceExpression(expression) {
317
+ return isPasswordPropertyAccess(expression) || isPasswordFormDataGetCall(expression);
318
+ }
319
+ function isPasswordPropertyAccess(expression) {
320
+ return ts.isPropertyAccessExpression(expression) && expression.name.text === "password" && isCredentialContainerExpression(expression.expression);
321
+ }
322
+ function isPasswordFormDataGetCall(expression) {
323
+ if (!ts.isCallExpression(expression) || !ts.isPropertyAccessExpression(expression.expression) || expression.expression.name.text !== "get") {
324
+ return false;
325
+ }
326
+ const [fieldName] = expression.arguments;
327
+ return fieldName !== undefined && ts.isStringLiteralLike(fieldName) && fieldName.text === "password";
328
+ }
329
+ function isVariableDeclarationInitializer(expression) {
330
+ return ts.isVariableDeclaration(expression.parent) && expression.parent.initializer === expression;
331
+ }
332
+ function isCredentialContainerExpression(expression) {
333
+ return isRequestBodyExpression(expression) || isCredentialLikeIdentifier(expression);
334
+ }
335
+ function isRequestBodyExpression(expression) {
336
+ return ((ts.isIdentifier(expression) && /^(body|credentials|credential|data|payload|formData)$/i.test(expression.text)) ||
337
+ (ts.isPropertyAccessExpression(expression) &&
338
+ expression.name.text === "body" &&
339
+ ts.isIdentifier(expression.expression) &&
340
+ /^(req|request)$/i.test(expression.expression.text)));
341
+ }
342
+ function isCredentialJsonExpression(expression) {
343
+ const unwrappedExpression = ts.isAwaitExpression(expression) ? expression.expression : expression;
344
+ return (ts.isCallExpression(unwrappedExpression) &&
345
+ ts.isPropertyAccessExpression(unwrappedExpression.expression) &&
346
+ unwrappedExpression.expression.name.text === "json" &&
347
+ ts.isIdentifier(unwrappedExpression.expression.expression) &&
348
+ /^(request|req)$/i.test(unwrappedExpression.expression.expression.text));
349
+ }
350
+ function isCredentialLikeIdentifier(expression) {
351
+ return ts.isIdentifier(expression) && /^(credentials?|user|account)$/i.test(expression.text);
352
+ }
353
+ function expressionNameText(expression) {
354
+ return ts.isIdentifier(expression) ? expression.text : undefined;
355
+ }
356
+ function exportedRouteHandlerName(node) {
357
+ if (ts.isFunctionDeclaration(node) && hasDefaultExportModifier(node)) {
358
+ return "DEFAULT";
359
+ }
360
+ if (ts.isFunctionDeclaration(node) && hasExportModifier(node) && node.name) {
361
+ return node.name.text;
362
+ }
363
+ if (!ts.isVariableStatement(node) || !hasExportModifier(node)) {
364
+ return undefined;
365
+ }
366
+ const [declaration] = node.declarationList.declarations;
367
+ return declaration && ts.isIdentifier(declaration.name) ? declaration.name.text : undefined;
368
+ }
369
+ function hasExportModifier(node) {
370
+ return ts.canHaveModifiers(node) && (ts.getModifiers(node) ?? []).some((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword);
371
+ }
372
+ function hasDefaultExportModifier(node) {
373
+ const modifiers = ts.canHaveModifiers(node) ? (ts.getModifiers(node) ?? []) : [];
374
+ return (modifiers.some((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword) &&
375
+ modifiers.some((modifier) => modifier.kind === ts.SyntaxKind.DefaultKeyword));
376
+ }
377
+ function isApiRouteFilePath(filePath) {
378
+ const normalizedPath = filePath.replace(/\\/g, "/");
379
+ return (/^app\/api\/.*\/route\.[tj]s$/i.test(normalizedPath) ||
380
+ /^src\/app\/api\/.*\/route\.[tj]s$/i.test(normalizedPath) ||
381
+ /^pages\/api\/.*\.([tj]s)$/i.test(normalizedPath) ||
382
+ /^apps\/[^/]+\/app\/api\/.*\/route\.[tj]s$/i.test(normalizedPath) ||
383
+ /^apps\/[^/]+\/src\/app\/api\/.*\/route\.[tj]s$/i.test(normalizedPath) ||
384
+ /^apps\/[^/]+\/pages\/api\/.*\.([tj]s)$/i.test(normalizedPath));
385
+ }
386
+ function isUploadHandlingNode(node) {
387
+ if (ts.isCallExpression(node) && ts.isPropertyAccessExpression(node.expression)) {
388
+ const methodName = node.expression.name.text;
389
+ if (methodName === "formData") {
390
+ return true;
391
+ }
392
+ if (methodName === "get") {
393
+ const [fieldName] = node.arguments;
394
+ return fieldName !== undefined && ts.isStringLiteralLike(fieldName) && /^(file|files|blob|image|avatar|media)$/i.test(fieldName.text);
395
+ }
396
+ }
397
+ if (ts.isIdentifier(node)) {
398
+ return /^(file|files|blob|formData)$/i.test(node.text);
399
+ }
400
+ if (ts.isTypeReferenceNode(node) && ts.isIdentifier(node.typeName)) {
401
+ return /^(File|Blob|FormData)$/i.test(node.typeName.text);
402
+ }
403
+ return false;
404
+ }
405
+ function isRequireChildProcessCall(node) {
406
+ if (!ts.isCallExpression(node) || !ts.isIdentifier(node.expression) || node.expression.text !== "require") {
407
+ return false;
408
+ }
409
+ const [specifier] = node.arguments;
410
+ return isChildProcessSpecifier(specifier);
411
+ }
412
+ function isChildProcessSpecifier(node) {
413
+ return node !== undefined && ts.isStringLiteralLike(node) && /^(?:node:)?child_process$/.test(node.text);
414
+ }
415
+ function bindingElementName(element) {
416
+ if (element.propertyName) {
417
+ return ts.isIdentifier(element.propertyName) || ts.isStringLiteralLike(element.propertyName) ? element.propertyName.text : undefined;
418
+ }
419
+ return ts.isIdentifier(element.name) ? element.name.text : undefined;
420
+ }
421
+ function bindingElementLocalName(element) {
422
+ return ts.isIdentifier(element.name) ? element.name.text : undefined;
423
+ }
424
+ function matchFromNode(file, sourceFile, node) {
425
+ const position = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile));
426
+ const sourceLine = file.lines[position.line] ?? "";
427
+ return {
428
+ line: position.line + 1,
429
+ column: position.character + 1,
430
+ evidence: sourceLine.trim(),
431
+ sourceLine
432
+ };
433
+ }
434
+ function dedupeMatches(matches) {
435
+ const seen = new Set();
436
+ const uniqueMatches = [];
437
+ for (const match of matches) {
438
+ const key = `${match.line}:${match.column}:${match.evidence}`;
439
+ if (seen.has(key)) {
440
+ continue;
441
+ }
442
+ seen.add(key);
443
+ uniqueMatches.push(match);
444
+ }
445
+ return uniqueMatches.sort((left, right) => left.line - right.line || left.column - right.column);
446
+ }
447
+ function scriptKindForPath(filePath) {
448
+ if (/\.tsx$/i.test(filePath)) {
449
+ return ts.ScriptKind.TSX;
450
+ }
451
+ if (/\.jsx$/i.test(filePath)) {
452
+ return ts.ScriptKind.JSX;
453
+ }
454
+ if (/\.ts$/i.test(filePath)) {
455
+ return ts.ScriptKind.TS;
456
+ }
457
+ return ts.ScriptKind.JS;
458
+ }
459
+ function visit(node, callback) {
460
+ callback(node);
461
+ ts.forEachChild(node, (child) => visit(child, callback));
462
+ }
463
+ //# sourceMappingURL=ast-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-utils.js","sourceRoot":"","sources":["../src/ast-utils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"security-rules.d.ts","sourceRoot":"","sources":["../src/security-rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAGpD,eAAO,MAAM,oBAAoB,EAAE,IAmBlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,IAuDjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,IAgC/B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,IAuBxB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,IA2BzC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,IAuBtC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,IAqBvC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,IAsB1C,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,IAsBxC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,IAyB9B,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,IA+BxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,IAyBlC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,IAuB/B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,IA8B7B,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,IAyB3C,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,IAwBtC,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,IAyB3C,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,IAsBvC,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,IAyB7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,IAiCrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,IAAI,EAqBtC,CAAC"}
1
+ {"version":3,"file":"security-rules.d.ts","sourceRoot":"","sources":["../src/security-rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,IAAI,EAAE,MAAM,yBAAyB,CAAC;AActE,eAAO,MAAM,oBAAoB,EAAE,IAmBlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,IAuDjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,IAgC/B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,IAuBxB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,IAwBzC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,IAuBtC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,IAoBvC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,IAqB1C,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,IAyBxC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,IAqB9B,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,IA+BxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,IAyBlC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,IAuB/B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,IAqB7B,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,IA0B3C,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,IA0BtC,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,IAyB3C,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,IAmCvC,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,IAyB7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,IAmCrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,IAAI,EAqBtC,CAAC"}
@@ -1,4 +1,6 @@
1
- import { codeFiles, configFiles, createFinding, findMatches, hasDependency, projectContains } from "./rule-utils.js";
1
+ import { findCommandExecutionMatches, findDangerouslySetInnerHtmlMatches, findPasswordHandlingMatches, findRawSqlConcatMatches, findRouteHandlerExports, findUploadRouteHandlerMatches } from "./ast-utils.js";
2
+ import { codeFiles, configFiles, createFinding, findMatches, hasDependency } from "./rule-utils.js";
3
+ const RATE_LIMIT_SIGNAL_PATTERN = /\b(rateLimit|rate-limit|ratelimit|limiter|checkRateLimit|applyRateLimit|upstash|redis|slowDown|throttle)\b|\b429\b|too many requests/i;
2
4
  export const envFileCommittedRule = {
3
5
  id: "secrets/env-file-committed",
4
6
  title: "Environment file committed",
@@ -119,13 +121,10 @@ export const dangerouslySetInnerHtmlRule = {
119
121
  category: "xss",
120
122
  confidence: "HIGH",
121
123
  scan(context) {
122
- return codeFiles(context).flatMap((file) => findMatches(file, /dangerouslySetInnerHTML/)
123
- .filter((match) => !isInsideQuotedLiteral(match.evidence, match.column))
124
- .filter((match) => !isRegexLiteralLine(match.evidence))
125
- .map((match) => createFinding({
124
+ return codeFiles(context).flatMap((file) => findDangerouslySetInnerHtmlMatches(file).map((match) => createFinding({
126
125
  rule: {
127
126
  ...dangerouslySetInnerHtmlRule,
128
- severity: getDangerouslySetInnerHtmlSeverity(match.sourceLine)
127
+ severity: match.severity
129
128
  },
130
129
  file,
131
130
  line: match.line,
@@ -162,10 +161,10 @@ export const loginWithoutRateLimitRule = {
162
161
  category: "auth",
163
162
  confidence: "MEDIUM",
164
163
  scan(context) {
165
- const rateLimitPattern = /(rateLimit|rate-limit|ratelimit|limiter|upstash|slowDown|throttle)/i;
166
164
  return codeFiles(context)
167
165
  .filter((file) => /(login|signin|sign-in|auth)/i.test(file.path))
168
- .filter((file) => !rateLimitPattern.test(file.content) && !projectContains(context, rateLimitPattern))
166
+ .filter((file) => !hasRateLimitSignal(file.content))
167
+ .filter((file) => !isRouteProtectedByMiddleware(context.middleware, file.path, "rate-limit"))
169
168
  .map((file) => createFinding({
170
169
  rule: loginWithoutRateLimitRule,
171
170
  file,
@@ -181,10 +180,10 @@ export const registerWithoutRateLimitRule = {
181
180
  category: "auth",
182
181
  confidence: "MEDIUM",
183
182
  scan(context) {
184
- const rateLimitPattern = /(rateLimit|rate-limit|ratelimit|limiter|upstash|slowDown|throttle)/i;
185
183
  return codeFiles(context)
186
184
  .filter((file) => /(register|signup|sign-up|create-account)/i.test(file.path))
187
- .filter((file) => !rateLimitPattern.test(file.content) && !projectContains(context, rateLimitPattern))
185
+ .filter((file) => !hasRateLimitSignal(file.content))
186
+ .filter((file) => !isRouteProtectedByMiddleware(context.middleware, file.path, "rate-limit"))
188
187
  .map((file) => createFinding({
189
188
  rule: registerWithoutRateLimitRule,
190
189
  file,
@@ -203,14 +202,15 @@ export const passwordWithoutHashingRule = {
203
202
  if (hasDependency(context, ["bcrypt", "bcryptjs", "argon2"])) {
204
203
  return [];
205
204
  }
206
- return codeFiles(context)
207
- .filter((file) => hasPasswordHandlingContext(file.path, file.content))
208
- .map((file) => createFinding({
205
+ return codeFiles(context).flatMap((file) => findPasswordHandlingMatches(file).map((match) => createFinding({
209
206
  rule: passwordWithoutHashingRule,
210
207
  file,
208
+ line: match.line,
209
+ column: match.column,
210
+ evidence: match.evidence,
211
211
  description: "Password-related code exists, but bcrypt/argon2 dependency usage was not detected.",
212
212
  recommendation: "Hash passwords with argon2 or bcrypt and avoid storing or comparing plaintext passwords."
213
- }));
213
+ })));
214
214
  }
215
215
  };
216
216
  export const rawSqlConcatRule = {
@@ -220,10 +220,7 @@ export const rawSqlConcatRule = {
220
220
  category: "injection",
221
221
  confidence: "MEDIUM",
222
222
  scan(context) {
223
- const pattern = /`[^`]*(SELECT|INSERT|UPDATE|DELETE)[^`]*\$\{[^}]+}[^`]*`|["'][^"']*(SELECT|INSERT|UPDATE|DELETE)[^"']*["']\s*\+/i;
224
- return codeFiles(context).flatMap((file) => findMatches(file, pattern)
225
- .filter((match) => !isLowRiskSqlStringContext(match.sourceLine, match.column))
226
- .map((match) => createFinding({
223
+ return codeFiles(context).flatMap((file) => findRawSqlConcatMatches(file).map((match) => createFinding({
227
224
  rule: rawSqlConcatRule,
228
225
  file,
229
226
  line: match.line,
@@ -308,14 +305,7 @@ export const commandExecRule = {
308
305
  category: "injection",
309
306
  confidence: "MEDIUM",
310
307
  scan(context) {
311
- const commandCallPattern = /\b(exec|execSync|spawn|spawnSync)\s*\(/;
312
- const childProcessImportPattern = /\bfrom\s+["'](?:node:)?child_process["']|require\(\s*["'](?:node:)?child_process["']\s*\)/;
313
- return codeFiles(context).flatMap((file) => [
314
- ...findMatches(file, commandCallPattern)
315
- .filter((match) => !isMethodCall(match.sourceLine, match.column))
316
- .filter((match) => !isInsideQuotedLiteral(match.sourceLine, match.column)),
317
- ...findMatches(file, childProcessImportPattern)
318
- ].map((match) => createFinding({
308
+ return codeFiles(context).flatMap((file) => findCommandExecutionMatches(file).map((match) => createFinding({
319
309
  rule: commandExecRule,
320
310
  file,
321
311
  line: match.line,
@@ -333,18 +323,20 @@ export const missingFileTypeValidationRule = {
333
323
  category: "upload",
334
324
  confidence: "MEDIUM",
335
325
  scan(context) {
336
- const pathSignals = /\b(upload|avatar|media|file|image)\b/i;
337
- const contentSignals = /\b(formData|File|Blob|multer|formidable|busboy)\b/i;
338
- const validationSignals = /\b(mimetype|fileType|allowedTypes|allowedMimeTypes)\b|\.type\b|\.mime\b|content-type|includes\(|startsWith\(["']image\//i;
339
- return codeFiles(context)
340
- .filter((file) => pathSignals.test(file.path) && contentSignals.test(file.content))
341
- .filter((file) => !validationSignals.test(file.content))
342
- .map((file) => createFinding({
343
- rule: missingFileTypeValidationRule,
344
- file,
345
- description: "Upload endpoints should validate file types before accepting user-controlled files.",
346
- recommendation: "Validate MIME type and file extension with an allowlist before storing or processing uploaded files."
347
- }));
326
+ return codeFiles(context).flatMap((file) => {
327
+ if (hasFileTypeValidationSignal(file.content)) {
328
+ return [];
329
+ }
330
+ return findUploadRouteHandlerMatches(file).map((match) => createFinding({
331
+ rule: missingFileTypeValidationRule,
332
+ file,
333
+ line: match.line,
334
+ column: match.column,
335
+ evidence: match.evidence,
336
+ description: "Upload endpoints should validate file types before accepting user-controlled files.",
337
+ recommendation: "Validate MIME type and file extension with an allowlist before storing or processing uploaded files."
338
+ }));
339
+ });
348
340
  }
349
341
  };
350
342
  export const missingFileSizeLimitRule = {
@@ -354,18 +346,20 @@ export const missingFileSizeLimitRule = {
354
346
  category: "upload",
355
347
  confidence: "MEDIUM",
356
348
  scan(context) {
357
- const pathSignals = /\b(upload|avatar|media|file|image)\b/i;
358
- const contentSignals = /\b(formData|File|Blob|multer|formidable|busboy)\b/i;
359
- const sizeLimitSignals = /\b(maxSize|maxFileSize|fileSize|MAX_FILE_SIZE)\b|limit\s*[:=]|\.limit\b|\.size\s*[><=]/i;
360
- return codeFiles(context)
361
- .filter((file) => pathSignals.test(file.path) && contentSignals.test(file.content))
362
- .filter((file) => !sizeLimitSignals.test(file.content))
363
- .map((file) => createFinding({
364
- rule: missingFileSizeLimitRule,
365
- file,
366
- description: "Upload endpoints should enforce file size limits to reduce abuse and resource exhaustion risk.",
367
- recommendation: "Add a strict maximum file size and reject files that exceed it before storage or further processing."
368
- }));
349
+ return codeFiles(context).flatMap((file) => {
350
+ if (hasFileSizeLimitSignal(file.content)) {
351
+ return [];
352
+ }
353
+ return findUploadRouteHandlerMatches(file).map((match) => createFinding({
354
+ rule: missingFileSizeLimitRule,
355
+ file,
356
+ line: match.line,
357
+ column: match.column,
358
+ evidence: match.evidence,
359
+ description: "Upload endpoints should enforce file size limits to reduce abuse and resource exhaustion risk.",
360
+ recommendation: "Add a strict maximum file size and reject files that exceed it before storage or further processing."
361
+ }));
362
+ });
369
363
  }
370
364
  };
371
365
  export const apiRouteWithoutValidationRule = {
@@ -397,17 +391,30 @@ export const adminRouteWithoutAuthRule = {
397
391
  category: "auth",
398
392
  confidence: "MEDIUM",
399
393
  scan(context) {
400
- const pathSignals = /\b(admin|dashboard|manage)\b/i;
401
- const authSignals = /\b(auth\(|getServerSession|currentUser|clerk|requireAuth|middleware|session|jwt\.verify|verifyToken|isAdmin|role)\b/i;
402
- return codeFiles(context)
403
- .filter((file) => pathSignals.test(file.path))
404
- .filter((file) => !authSignals.test(file.content))
405
- .map((file) => createFinding({
406
- rule: adminRouteWithoutAuthRule,
407
- file,
408
- description: "Admin routes should include authentication and authorization checks.",
409
- recommendation: "Protect admin routes with authentication and role/permission checks before returning sensitive data."
410
- }));
394
+ return codeFiles(context).flatMap((file) => {
395
+ if (!isAdminApiRoutePath(file.path) || hasAdminAuthSignal(file.content)) {
396
+ return [];
397
+ }
398
+ if (isRouteProtectedByMiddleware(context.middleware, file.path, "auth")) {
399
+ return [];
400
+ }
401
+ const routeHandlers = findRouteHandlerExports(file);
402
+ const [match] = routeHandlers;
403
+ if (!match) {
404
+ return [];
405
+ }
406
+ return [
407
+ createFinding({
408
+ rule: adminRouteWithoutAuthRule,
409
+ file,
410
+ line: match.line,
411
+ column: match.column,
412
+ evidence: match.evidence,
413
+ description: "Admin routes should include authentication and authorization checks.",
414
+ recommendation: "Protect admin routes with authentication and role/permission checks before returning sensitive data."
415
+ })
416
+ ];
417
+ });
411
418
  }
412
419
  };
413
420
  export const productionBrowserSourceMapsRule = {
@@ -442,7 +449,9 @@ export const nextPoweredByHeaderRule = {
442
449
  if (context.project.framework !== "nextjs") {
443
450
  return [];
444
451
  }
445
- const nextConfigFiles = configFiles(context).filter((file) => /next\.config\.(js|mjs|cjs|ts)$/.test(file.path));
452
+ const nextConfigFiles = configFiles(context)
453
+ .filter((file) => /next\.config\.(js|mjs|cjs|ts)$/.test(file.path))
454
+ .filter((file) => shouldCheckPoweredByHeaderConfig(file.path, context.files));
446
455
  if (nextConfigFiles.length === 0) {
447
456
  return [];
448
457
  }
@@ -482,6 +491,48 @@ export const builtInSecurityRules = [
482
491
  productionBrowserSourceMapsRule,
483
492
  nextPoweredByHeaderRule
484
493
  ];
494
+ function shouldCheckPoweredByHeaderConfig(configPath, files) {
495
+ const normalizedPath = normalizeRulePath(configPath);
496
+ if (isLowSignalNextConfigPath(normalizedPath)) {
497
+ return false;
498
+ }
499
+ const configRoot = normalizedPath.replace(/(^|\/)next\.config\.(js|mjs|cjs|ts)$/, "").replace(/\/$/, "");
500
+ if (configRoot === normalizedPath) {
501
+ return false;
502
+ }
503
+ if (configRoot === "") {
504
+ return true;
505
+ }
506
+ return hasNextAppIndicator(configRoot, files);
507
+ }
508
+ function isLowSignalNextConfigPath(filePath) {
509
+ return (filePath.startsWith("examples/") ||
510
+ filePath.includes("/examples/") ||
511
+ filePath.startsWith("templates/") ||
512
+ filePath.includes("/templates/") ||
513
+ filePath.startsWith("fixtures/") ||
514
+ filePath.includes("/fixtures/") ||
515
+ filePath.startsWith("docs/") ||
516
+ filePath.includes("/docs/") ||
517
+ filePath.includes("/__tests__/") ||
518
+ filePath.includes("/test/") ||
519
+ filePath.includes("/tests/"));
520
+ }
521
+ function hasNextAppIndicator(configRoot, files) {
522
+ const appIndicators = ["app/", "src/app/", "pages/", "src/pages/"];
523
+ const normalizedRoot = configRoot === "" ? "" : `${configRoot}/`;
524
+ return files.some((file) => {
525
+ const filePath = normalizeRulePath(file.path);
526
+ if (!filePath.startsWith(normalizedRoot) || filePath === `${normalizedRoot}next.config.js`) {
527
+ return false;
528
+ }
529
+ const relativePath = filePath.slice(normalizedRoot.length);
530
+ return appIndicators.some((indicator) => relativePath.startsWith(indicator));
531
+ });
532
+ }
533
+ function normalizeRulePath(filePath) {
534
+ return filePath.replace(/\\/g, "/").replace(/^\.\//, "");
535
+ }
485
536
  function isInsideQuotedLiteral(line, column) {
486
537
  const beforeMatch = line.slice(0, Math.max(0, column - 1));
487
538
  let quote;
@@ -511,33 +562,6 @@ function isMethodCall(line, column) {
511
562
  const beforeMatch = line.slice(0, Math.max(0, column - 1));
512
563
  return /\.\s*$/.test(beforeMatch);
513
564
  }
514
- function isRegexLiteralLine(line) {
515
- return /\/[^/\n]*dangerouslySetInnerHTML[^/\n]*\/[a-z]*/.test(line);
516
- }
517
- function getDangerouslySetInnerHtmlSeverity(line) {
518
- const htmlValue = /__html\s*:\s*([^}\n]+)/.exec(line)?.[1]?.trim();
519
- if (!htmlValue) {
520
- return "LOW";
521
- }
522
- if (isStaticHtmlLiteral(htmlValue)) {
523
- return "LOW";
524
- }
525
- if (/(userInput|html|content|body|params|searchParams|query|req|request|props|children|markdown)/i.test(htmlValue)) {
526
- return "MEDIUM";
527
- }
528
- return "LOW";
529
- }
530
- function isStaticHtmlLiteral(value) {
531
- const trimmed = value.replace(/[,;]+$/, "").trim();
532
- if (/^["'][\s\S]*["']$/.test(trimmed)) {
533
- return true;
534
- }
535
- return /^`[\s\S]*`$/.test(trimmed) && !trimmed.includes("${");
536
- }
537
- function isLowRiskSqlStringContext(line, column) {
538
- const beforeMatch = line.slice(0, Math.max(0, column - 1));
539
- return /(?:^|[^\w$.])(?:console\.(?:log|debug|info|warn|error)|logger\.(?:debug|info)|throw\s+new\s+Error)\s*\(\s*$/.test(beforeMatch);
540
- }
541
565
  function isCommittedEnvFileName(fileName) {
542
566
  return /^\.env(?:\.(?:local|production|production\.local|development|development\.local|test|test\.local|staging|staging\.local))?$/.test(fileName);
543
567
  }
@@ -589,6 +613,60 @@ function isLowSignalSecretSample(value) {
589
613
  }
590
614
  return false;
591
615
  }
616
+ function isAdminApiRoutePath(filePath) {
617
+ const normalizedPath = filePath.replace(/\\/g, "/");
618
+ return (/^app\/api\/(?:.*\/)?(?:admin|dashboard|manage)(?:\/.*)?\/route\.[tj]s$/i.test(normalizedPath) ||
619
+ /^src\/app\/api\/(?:.*\/)?(?:admin|dashboard|manage)(?:\/.*)?\/route\.[tj]s$/i.test(normalizedPath) ||
620
+ /^pages\/api\/(?:.*\/)?(?:admin|dashboard|manage)(?:\/|$).*\.([tj]s)$/i.test(normalizedPath) ||
621
+ /^apps\/[^/]+\/app\/api\/(?:.*\/)?(?:admin|dashboard|manage)(?:\/.*)?\/route\.[tj]s$/i.test(normalizedPath) ||
622
+ /^apps\/[^/]+\/src\/app\/api\/(?:.*\/)?(?:admin|dashboard|manage)(?:\/.*)?\/route\.[tj]s$/i.test(normalizedPath) ||
623
+ /^apps\/[^/]+\/pages\/api\/(?:.*\/)?(?:admin|dashboard|manage)(?:\/|$).*\.([tj]s)$/i.test(normalizedPath));
624
+ }
625
+ function isRouteProtectedByMiddleware(middlewareSignals, filePath, signalType) {
626
+ const routePath = routePathFromFilePath(filePath);
627
+ if (!routePath) {
628
+ return false;
629
+ }
630
+ return (middlewareSignals ?? []).some((signal) => {
631
+ const hasSignal = signalType === "auth" ? signal.hasAuthSignal : signal.hasRateLimitSignal;
632
+ return hasSignal && signal.matchers.some((matcher) => middlewareMatcherCoversRoute(matcher, routePath));
633
+ });
634
+ }
635
+ function routePathFromFilePath(filePath) {
636
+ const normalizedPath = filePath.replace(/\\/g, "/");
637
+ const appRouteMatch = /^(?:apps\/[^/]+\/)?(?:src\/)?app\/api\/(.+)\/route\.[tj]s$/i.exec(normalizedPath);
638
+ if (appRouteMatch?.[1]) {
639
+ return `/api/${appRouteMatch[1]}`;
640
+ }
641
+ const pagesRouteMatch = /^(?:apps\/[^/]+\/)?pages\/api\/(.+)\.[tj]s$/i.exec(normalizedPath);
642
+ if (pagesRouteMatch?.[1]) {
643
+ return `/api/${pagesRouteMatch[1]}`;
644
+ }
645
+ return undefined;
646
+ }
647
+ function middlewareMatcherCoversRoute(matcher, routePath) {
648
+ const normalizedMatcher = normalizeMiddlewareMatcher(matcher);
649
+ if (!normalizedMatcher.startsWith("/")) {
650
+ return false;
651
+ }
652
+ const prefix = normalizedMatcher.replace(/\/:path\*$/, "");
653
+ return routePath === prefix || routePath.startsWith(`${prefix}/`);
654
+ }
655
+ function normalizeMiddlewareMatcher(matcher) {
656
+ return matcher.trim().replace(/\/+$/, "") || "/";
657
+ }
658
+ function hasAdminAuthSignal(content) {
659
+ return /\b(auth\(|getServerSession|currentUser|clerk|getUser|requireAuth|middleware|withAuth|session|jwt\.verify|verifyToken|isAdmin|role|permission)\b/i.test(content);
660
+ }
661
+ function hasRateLimitSignal(content) {
662
+ return RATE_LIMIT_SIGNAL_PATTERN.test(content);
663
+ }
664
+ function hasFileTypeValidationSignal(content) {
665
+ return /\b(mimetype|mimeType|fileType|allowedTypes|allowedMimeTypes|allowedExtensions|extension|extname|accept)\b|\.type\b|\.mime\b|content-type|includes\(\s*file\.type|startsWith\(["']image\//i.test(content);
666
+ }
667
+ function hasFileSizeLimitSignal(content) {
668
+ return /\b(maxSize|maxFileSize|sizeLimit|fileSize|MAX_FILE_SIZE)\b|limit\s*[:=]|\.limit\b|\.size\s*[><=]/i.test(content);
669
+ }
592
670
  function countCharacterClasses(value) {
593
671
  return [
594
672
  /[a-z]/.test(value),
@@ -597,15 +675,4 @@ function countCharacterClasses(value) {
597
675
  /[^A-Za-z0-9]/.test(value)
598
676
  ].filter(Boolean).length;
599
677
  }
600
- function hasPasswordHandlingContext(filePath, content) {
601
- if (!/\bpassword\b/i.test(content)) {
602
- return false;
603
- }
604
- const pathSignals = /\b(login|signin|sign-in|register|signup|sign-up|auth|account|user|credentials?)\b/i;
605
- if (pathSignals.test(filePath)) {
606
- return true;
607
- }
608
- const contentSignals = /(\b(body|req\.body|credentials?|user|account)\.password\b|\bpassword\b\s*[:=]\s*(body|req|credentials?|user|account)\b)/i;
609
- return contentSignals.test(content);
610
- }
611
678
  //# sourceMappingURL=security-rules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"security-rules.js","sourceRoot":"","sources":["../src/security-rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security-rules.js","sourceRoot":"","sources":["../src/security-rules.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-secure-check/rules",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Security rules for next-secure-check",
5
5
  "keywords": [
6
6
  "nextjs",
@@ -33,7 +33,8 @@
33
33
  }
34
34
  },
35
35
  "dependencies": {
36
- "@next-secure-check/core": "0.1.0"
36
+ "typescript": "^5.9.0",
37
+ "@next-secure-check/core": "0.3.0"
37
38
  },
38
39
  "scripts": {
39
40
  "build": "tsc -p tsconfig.json",