@kernlang/review 3.2.3 → 3.3.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.
- package/dist/cache.js +140 -3
- package/dist/cache.js.map +1 -1
- package/dist/call-graph.d.ts +4 -1
- package/dist/call-graph.js +290 -25
- package/dist/call-graph.js.map +1 -1
- package/dist/concept-rules/contract-drift.d.ts +21 -0
- package/dist/concept-rules/contract-drift.js +66 -0
- package/dist/concept-rules/contract-drift.js.map +1 -0
- package/dist/concept-rules/cross-stack-utils.d.ts +50 -0
- package/dist/concept-rules/cross-stack-utils.js +98 -0
- package/dist/concept-rules/cross-stack-utils.js.map +1 -0
- package/dist/concept-rules/index.js +12 -1
- package/dist/concept-rules/index.js.map +1 -1
- package/dist/concept-rules/tainted-across-wire.d.ts +33 -0
- package/dist/concept-rules/tainted-across-wire.js +98 -0
- package/dist/concept-rules/tainted-across-wire.js.map +1 -0
- package/dist/concept-rules/untyped-api-response.d.ts +30 -0
- package/dist/concept-rules/untyped-api-response.js +71 -0
- package/dist/concept-rules/untyped-api-response.js.map +1 -0
- package/dist/external-tools.d.ts +36 -4
- package/dist/external-tools.js +79 -12
- package/dist/external-tools.js.map +1 -1
- package/dist/graph.js +149 -39
- package/dist/graph.js.map +1 -1
- package/dist/index.d.ts +29 -4
- package/dist/index.js +329 -47
- package/dist/index.js.map +1 -1
- package/dist/inferrer.d.ts +5 -0
- package/dist/inferrer.js +1 -1
- package/dist/inferrer.js.map +1 -1
- package/dist/llm-bridge.d.ts +26 -1
- package/dist/llm-bridge.js +42 -6
- package/dist/llm-bridge.js.map +1 -1
- package/dist/llm-review.js +29 -11
- package/dist/llm-review.js.map +1 -1
- package/dist/mappers/ts-concepts.js +278 -7
- package/dist/mappers/ts-concepts.js.map +1 -1
- package/dist/public-api.d.ts +73 -0
- package/dist/public-api.js +351 -0
- package/dist/public-api.js.map +1 -0
- package/dist/reporter.d.ts +5 -0
- package/dist/reporter.js +119 -84
- package/dist/reporter.js.map +1 -1
- package/dist/review-health.d.ts +38 -0
- package/dist/review-health.js +60 -0
- package/dist/review-health.js.map +1 -0
- package/dist/rules/async.js +4 -16
- package/dist/rules/async.js.map +1 -1
- package/dist/rules/base.js +112 -87
- package/dist/rules/base.js.map +1 -1
- package/dist/rules/confidence.d.ts +2 -2
- package/dist/rules/confidence.js +32 -15
- package/dist/rules/confidence.js.map +1 -1
- package/dist/rules/dead-code.d.ts +2 -1
- package/dist/rules/dead-code.js +49 -3
- package/dist/rules/dead-code.js.map +1 -1
- package/dist/rules/index.js +131 -0
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/kern-source-cross-file.d.ts +2 -0
- package/dist/rules/kern-source-cross-file.js +102 -0
- package/dist/rules/kern-source-cross-file.js.map +1 -0
- package/dist/rules/kern-source.js +86 -9
- package/dist/rules/kern-source.js.map +1 -1
- package/dist/rules/nextjs-app-router.js +936 -31
- package/dist/rules/nextjs-app-router.js.map +1 -1
- package/dist/rules/nextjs.js +193 -10
- package/dist/rules/nextjs.js.map +1 -1
- package/dist/rules/react-composition.js +442 -61
- package/dist/rules/react-composition.js.map +1 -1
- package/dist/rules/react-hooks.js +51 -2
- package/dist/rules/react-hooks.js.map +1 -1
- package/dist/rules/react.js +265 -49
- package/dist/rules/react.js.map +1 -1
- package/dist/rules/utils.d.ts +37 -2
- package/dist/rules/utils.js +113 -0
- package/dist/rules/utils.js.map +1 -1
- package/dist/semantic-diff.js +1 -1
- package/dist/semantic-diff.js.map +1 -1
- package/dist/taint-ast.js +228 -4
- package/dist/taint-ast.js.map +1 -1
- package/dist/taint-crossfile.d.ts +30 -2
- package/dist/taint-crossfile.js +280 -59
- package/dist/taint-crossfile.js.map +1 -1
- package/dist/taint-types.d.ts +2 -1
- package/dist/taint-types.js +32 -2
- package/dist/taint-types.js.map +1 -1
- package/dist/taint.d.ts +1 -1
- package/dist/taint.js +1 -1
- package/dist/taint.js.map +1 -1
- package/dist/types.d.ts +80 -0
- package/dist/types.js.map +1 -1
- package/package.json +3 -3
package/dist/rules/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/rules/react.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/rules/react.ts"],"names":[],"mappings":"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"}
|
package/dist/rules/utils.d.ts
CHANGED
|
@@ -2,8 +2,33 @@
|
|
|
2
2
|
* Shared helpers for review rules — eliminates duplication of span() and finding()
|
|
3
3
|
* across base.ts, react.ts, nextjs.ts, express.ts, security.ts, vue.ts, dead-logic.ts.
|
|
4
4
|
*/
|
|
5
|
-
import
|
|
6
|
-
import type { ReviewFinding, SourceSpan } from '../types.js';
|
|
5
|
+
import { Node } from 'ts-morph';
|
|
6
|
+
import type { ReviewFinding, RuleContext, SourceSpan } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* True when the file's runtime boundary is clearly non-client (server
|
|
9
|
+
* component, API route, Next.js middleware). React hook rules should
|
|
10
|
+
* short-circuit on these files — hooks cannot run there, so any match is
|
|
11
|
+
* either unused code or a false positive.
|
|
12
|
+
*
|
|
13
|
+
* `shared` and `unknown` intentionally return false: shared utilities are
|
|
14
|
+
* often imported from both client and server; unknown happens when reviewing
|
|
15
|
+
* a single file without graph context.
|
|
16
|
+
*/
|
|
17
|
+
export declare function isNonClientBoundary(ctx: RuleContext): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* True when the source file looks like a React file — has JSX, a `react`
|
|
20
|
+
* import, or calls a recognizable React hook. Used to override an aggressive
|
|
21
|
+
* boundary classifier: `src/routes/Home.tsx` gets `boundary=api` from the
|
|
22
|
+
* path-based classifier (because of `/routes/`), but its JSX content tells us
|
|
23
|
+
* it really is a client React file where hook rules should still run.
|
|
24
|
+
*/
|
|
25
|
+
export declare function hasReactContent(ctx: RuleContext): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Convenience: true when hook-specific rules should skip this file. Combines
|
|
28
|
+
* the boundary gate with a React-content override so misclassified React
|
|
29
|
+
* routes (`src/routes/Home.tsx`) still get checked.
|
|
30
|
+
*/
|
|
31
|
+
export declare function shouldSkipHookRules(ctx: RuleContext): boolean;
|
|
7
32
|
export declare function span(file: string, line: number, col?: number, endLine?: number, endCol?: number): SourceSpan;
|
|
8
33
|
/**
|
|
9
34
|
* Compute a precise SourceSpan for a ts-morph Node, using 1-based line/column.
|
|
@@ -21,3 +46,13 @@ export declare function insertBeforeSpan(node: Node, file: string): SourceSpan;
|
|
|
21
46
|
*/
|
|
22
47
|
export declare function insertAfterSpan(node: Node, file: string): SourceSpan;
|
|
23
48
|
export declare function finding(ruleId: string, severity: 'error' | 'warning' | 'info', category: ReviewFinding['category'], message: string, file: string, line: number, col?: number, extra?: Partial<ReviewFinding>): ReviewFinding;
|
|
49
|
+
export interface CleanupMatcherSpec {
|
|
50
|
+
cleanupPatterns: RegExp[];
|
|
51
|
+
cleanupReturnIdentifiers?: string[];
|
|
52
|
+
cleanupReturnCallPattern?: RegExp;
|
|
53
|
+
}
|
|
54
|
+
export declare function escapeRegex(text: string): string;
|
|
55
|
+
export declare function findAssignedIdentifier(node: Node): string | undefined;
|
|
56
|
+
export declare function getTopLevelCleanupExpressions(body: Node): Node[];
|
|
57
|
+
export declare function resolveCleanupExpressionTexts(expr: Node): string[];
|
|
58
|
+
export declare function cleanupExpressionMatches(expr: Node, spec: CleanupMatcherSpec): boolean;
|
package/dist/rules/utils.js
CHANGED
|
@@ -2,7 +2,51 @@
|
|
|
2
2
|
* Shared helpers for review rules — eliminates duplication of span() and finding()
|
|
3
3
|
* across base.ts, react.ts, nextjs.ts, express.ts, security.ts, vue.ts, dead-logic.ts.
|
|
4
4
|
*/
|
|
5
|
+
import { Node, SyntaxKind } from 'ts-morph';
|
|
5
6
|
import { createFingerprint } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* True when the file's runtime boundary is clearly non-client (server
|
|
9
|
+
* component, API route, Next.js middleware). React hook rules should
|
|
10
|
+
* short-circuit on these files — hooks cannot run there, so any match is
|
|
11
|
+
* either unused code or a false positive.
|
|
12
|
+
*
|
|
13
|
+
* `shared` and `unknown` intentionally return false: shared utilities are
|
|
14
|
+
* often imported from both client and server; unknown happens when reviewing
|
|
15
|
+
* a single file without graph context.
|
|
16
|
+
*/
|
|
17
|
+
export function isNonClientBoundary(ctx) {
|
|
18
|
+
const b = ctx.fileContext?.boundary;
|
|
19
|
+
return b === 'server' || b === 'api' || b === 'middleware';
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* True when the source file looks like a React file — has JSX, a `react`
|
|
23
|
+
* import, or calls a recognizable React hook. Used to override an aggressive
|
|
24
|
+
* boundary classifier: `src/routes/Home.tsx` gets `boundary=api` from the
|
|
25
|
+
* path-based classifier (because of `/routes/`), but its JSX content tells us
|
|
26
|
+
* it really is a client React file where hook rules should still run.
|
|
27
|
+
*/
|
|
28
|
+
export function hasReactContent(ctx) {
|
|
29
|
+
const sf = ctx.sourceFile;
|
|
30
|
+
if (sf.getDescendantsOfKind(SyntaxKind.JsxOpeningElement).length > 0)
|
|
31
|
+
return true;
|
|
32
|
+
if (sf.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement).length > 0)
|
|
33
|
+
return true;
|
|
34
|
+
if (sf.getImportDeclarations().some((i) => i.getModuleSpecifierValue() === 'react'))
|
|
35
|
+
return true;
|
|
36
|
+
const fullText = sf.getFullText();
|
|
37
|
+
return /\buse(?:State|Effect|Ref|Callback|Memo|Reducer|Context|LayoutEffect)\s*[<(]/.test(fullText);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Convenience: true when hook-specific rules should skip this file. Combines
|
|
41
|
+
* the boundary gate with a React-content override so misclassified React
|
|
42
|
+
* routes (`src/routes/Home.tsx`) still get checked.
|
|
43
|
+
*/
|
|
44
|
+
export function shouldSkipHookRules(ctx) {
|
|
45
|
+
if (!isNonClientBoundary(ctx))
|
|
46
|
+
return false;
|
|
47
|
+
// Non-client boundary — but if it has React content, the classifier is wrong.
|
|
48
|
+
return !hasReactContent(ctx);
|
|
49
|
+
}
|
|
6
50
|
export function span(file, line, col = 1, endLine, endCol) {
|
|
7
51
|
return { file, startLine: line, startCol: col, endLine: endLine ?? line, endCol: endCol ?? col };
|
|
8
52
|
}
|
|
@@ -64,4 +108,73 @@ export function finding(ruleId, severity, category, message, file, line, col = 1
|
|
|
64
108
|
...extra,
|
|
65
109
|
};
|
|
66
110
|
}
|
|
111
|
+
export function escapeRegex(text) {
|
|
112
|
+
return text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
113
|
+
}
|
|
114
|
+
export function findAssignedIdentifier(node) {
|
|
115
|
+
let cur = node.getParent();
|
|
116
|
+
while (cur && !Node.isVariableDeclaration(cur)) {
|
|
117
|
+
cur = cur.getParent();
|
|
118
|
+
}
|
|
119
|
+
if (!cur || !Node.isVariableDeclaration(cur))
|
|
120
|
+
return undefined;
|
|
121
|
+
const nameNode = cur.getNameNode();
|
|
122
|
+
return Node.isIdentifier(nameNode) ? nameNode.getText() : undefined;
|
|
123
|
+
}
|
|
124
|
+
export function getTopLevelCleanupExpressions(body) {
|
|
125
|
+
if (!Node.isBlock(body))
|
|
126
|
+
return [body];
|
|
127
|
+
const cleanupExprs = [];
|
|
128
|
+
for (const retStmt of body.getDescendantsOfKind(SyntaxKind.ReturnStatement)) {
|
|
129
|
+
let inNested = false;
|
|
130
|
+
let cur = retStmt.getParent();
|
|
131
|
+
while (cur && cur !== body) {
|
|
132
|
+
if (Node.isArrowFunction(cur) || Node.isFunctionExpression(cur) || Node.isFunctionDeclaration(cur)) {
|
|
133
|
+
inNested = true;
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
cur = cur.getParent();
|
|
137
|
+
}
|
|
138
|
+
if (inNested)
|
|
139
|
+
continue;
|
|
140
|
+
const expr = retStmt.getExpression();
|
|
141
|
+
if (expr)
|
|
142
|
+
cleanupExprs.push(expr);
|
|
143
|
+
}
|
|
144
|
+
return cleanupExprs;
|
|
145
|
+
}
|
|
146
|
+
export function resolveCleanupExpressionTexts(expr) {
|
|
147
|
+
if (Node.isArrowFunction(expr) || Node.isFunctionExpression(expr))
|
|
148
|
+
return [expr.getText(), expr.getBody().getText()];
|
|
149
|
+
if (Node.isCallExpression(expr))
|
|
150
|
+
return [expr.getText()];
|
|
151
|
+
if (!Node.isIdentifier(expr))
|
|
152
|
+
return [expr.getText()];
|
|
153
|
+
const texts = [expr.getText()];
|
|
154
|
+
const declarations = expr.getSymbol()?.getDeclarations() ?? [];
|
|
155
|
+
for (const decl of declarations) {
|
|
156
|
+
if (Node.isFunctionDeclaration(decl) && decl.getBody()) {
|
|
157
|
+
texts.push(decl.getText(), decl.getBody().getText());
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
if (!Node.isVariableDeclaration(decl))
|
|
161
|
+
continue;
|
|
162
|
+
const init = decl.getInitializer();
|
|
163
|
+
if (!init)
|
|
164
|
+
continue;
|
|
165
|
+
texts.push(init.getText());
|
|
166
|
+
if (Node.isArrowFunction(init) || Node.isFunctionExpression(init)) {
|
|
167
|
+
texts.push(init.getBody().getText());
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return texts;
|
|
171
|
+
}
|
|
172
|
+
export function cleanupExpressionMatches(expr, spec) {
|
|
173
|
+
if (Node.isIdentifier(expr) && spec.cleanupReturnIdentifiers?.includes(expr.getText()))
|
|
174
|
+
return true;
|
|
175
|
+
if (Node.isCallExpression(expr) && spec.cleanupReturnCallPattern?.test(expr.getText()))
|
|
176
|
+
return true;
|
|
177
|
+
const texts = resolveCleanupExpressionTexts(expr);
|
|
178
|
+
return texts.some((text) => spec.cleanupPatterns.some((pattern) => pattern.test(text)));
|
|
179
|
+
}
|
|
67
180
|
//# sourceMappingURL=utils.js.map
|
package/dist/rules/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/rules/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/rules/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/semantic-diff.js
CHANGED
|
@@ -126,7 +126,7 @@ export function computeSemanticDiff(oldInferred, newInferred, oldConcepts, newCo
|
|
|
126
126
|
if (oldReturns !== newReturns && oldReturns !== '' && newReturns !== '') {
|
|
127
127
|
changes.push({
|
|
128
128
|
type: 'return-type-changed',
|
|
129
|
-
severity: '
|
|
129
|
+
severity: 'info',
|
|
130
130
|
functionName: fnName,
|
|
131
131
|
filePath,
|
|
132
132
|
line: newFn.startLine,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-diff.js","sourceRoot":"","sources":["../src/semantic-diff.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"semantic-diff.js","sourceRoot":"","sources":["../src/semantic-diff.ts"],"names":[],"mappings":"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"}
|
package/dist/taint-ast.js
CHANGED
|
@@ -282,6 +282,18 @@ export function analyzeTaintAST(_inferred, filePath, sourceFile) {
|
|
|
282
282
|
continue;
|
|
283
283
|
// Step 4: Check for sanitizers (AST-based)
|
|
284
284
|
const foundSanitizers = findSanitizersAST(body, taintedNames);
|
|
285
|
+
// Index sink calls by tainted arg for guard lookup below.
|
|
286
|
+
const sinkCallsByArg = new Map();
|
|
287
|
+
for (const call of calls) {
|
|
288
|
+
for (const arg of call.getArguments()) {
|
|
289
|
+
const tArg = findTaintedIdentifier(arg, taintedNames);
|
|
290
|
+
if (tArg) {
|
|
291
|
+
const existing = sinkCallsByArg.get(tArg) ?? [];
|
|
292
|
+
existing.push(call);
|
|
293
|
+
sinkCallsByArg.set(tArg, existing);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
285
297
|
// Build paths
|
|
286
298
|
const paths = [];
|
|
287
299
|
for (const sink of sinks) {
|
|
@@ -298,14 +310,19 @@ export function analyzeTaintAST(_inferred, filePath, sourceFile) {
|
|
|
298
310
|
}
|
|
299
311
|
return false;
|
|
300
312
|
});
|
|
301
|
-
|
|
302
|
-
|
|
313
|
+
// Control-flow guard: was the tainted arg validated in a prior
|
|
314
|
+
// early-exit guard? (e.g. `if (!isValid(x)) return;`) If yes, the sink
|
|
315
|
+
// is dominated by a validation — treat it as sanitized.
|
|
316
|
+
const candidateCalls = sinkCallsByArg.get(sink.taintedArg) ?? [];
|
|
317
|
+
const sinkGuarded = candidateCalls.some((c) => isGuardedByValidation(c, sink.taintedArg, body));
|
|
318
|
+
const hasSanitizer = sanitizer != null || sinkGuarded;
|
|
319
|
+
const sufficient = sanitizer != null ? isSanitizerSufficient(sanitizer.name, sink.category) : sinkGuarded;
|
|
303
320
|
paths.push({
|
|
304
321
|
source,
|
|
305
322
|
sink,
|
|
306
323
|
sanitized: hasSanitizer && sufficient,
|
|
307
|
-
sanitizer: sanitizer?.name,
|
|
308
|
-
insufficientSanitizer:
|
|
324
|
+
sanitizer: sanitizer?.name ?? (sinkGuarded ? 'cfg-guard' : undefined),
|
|
325
|
+
insufficientSanitizer: sanitizer != null && !sufficient ? sanitizer.name : undefined,
|
|
309
326
|
});
|
|
310
327
|
}
|
|
311
328
|
if (paths.length > 0) {
|
|
@@ -450,4 +467,211 @@ function findSanitizersAST(body, taintedNames) {
|
|
|
450
467
|
}
|
|
451
468
|
return sanitizers;
|
|
452
469
|
}
|
|
470
|
+
// ── Control-Flow Guards ─────────────────────────────────────────────────
|
|
471
|
+
//
|
|
472
|
+
// A "validation guard" is an early-exit branch that bails out when a tainted
|
|
473
|
+
// value FAILS a check, e.g.:
|
|
474
|
+
//
|
|
475
|
+
// if (!isValidId(id)) return res.status(400).json({ error: 'bad id' });
|
|
476
|
+
// if (typeof name !== 'string') throw new Error('name must be string');
|
|
477
|
+
// if (!schema.safeParse(body).success) return;
|
|
478
|
+
//
|
|
479
|
+
// The sink is marked sanitized only when:
|
|
480
|
+
// 1. Polarity is correct — the guard exits on the INVALID branch, so
|
|
481
|
+
// subsequent code runs only on validated input. Call-based validators
|
|
482
|
+
// must be negated (`!<validator>(x)`); typeof checks must use `!==`/
|
|
483
|
+
// `!=` so the exit fires when the type is wrong.
|
|
484
|
+
// 2. Dominance holds — the guard's `if` must live in a block that
|
|
485
|
+
// contains the sink, and appear textually before the sink inside that
|
|
486
|
+
// block. Guards in sibling branches or appearing after the sink do not
|
|
487
|
+
// count.
|
|
488
|
+
//
|
|
489
|
+
// Deliberately conservative: null-only checks (`if (!x) return`) never
|
|
490
|
+
// qualify as validators.
|
|
491
|
+
const VALIDATOR_PREFIXES = [
|
|
492
|
+
'is',
|
|
493
|
+
'validate',
|
|
494
|
+
'check',
|
|
495
|
+
'assert',
|
|
496
|
+
'sanitize',
|
|
497
|
+
'clean',
|
|
498
|
+
'escape',
|
|
499
|
+
'normalize',
|
|
500
|
+
'parse',
|
|
501
|
+
'safeParse',
|
|
502
|
+
'verify',
|
|
503
|
+
'match',
|
|
504
|
+
];
|
|
505
|
+
function looksLikeValidatorName(name) {
|
|
506
|
+
return VALIDATOR_PREFIXES.some((p) => name === p || name.startsWith(p));
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* True if `call` is dominated by an earlier early-exit guard that validates
|
|
510
|
+
* `taintedArg` using a recognizable validator/type-guard pattern with the
|
|
511
|
+
* correct exit-on-invalid polarity.
|
|
512
|
+
*/
|
|
513
|
+
function isGuardedByValidation(call, taintedArg, fnBody) {
|
|
514
|
+
const guards = collectEarlyExitGuards(fnBody);
|
|
515
|
+
for (const guard of guards) {
|
|
516
|
+
if (!guardDominatesSink(guard, call))
|
|
517
|
+
continue;
|
|
518
|
+
if (!guardTestsValidatesVar(guard.test, taintedArg))
|
|
519
|
+
continue;
|
|
520
|
+
return true;
|
|
521
|
+
}
|
|
522
|
+
return false;
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* Find every `if (test) <early-exit>` inside `body` where `<early-exit>` is
|
|
526
|
+
* a `return`, `throw`, or `res.status(4xx)`-style statement.
|
|
527
|
+
*/
|
|
528
|
+
function collectEarlyExitGuards(body) {
|
|
529
|
+
const guards = [];
|
|
530
|
+
body.forEachDescendant((node) => {
|
|
531
|
+
if (node.getKind() !== SyntaxKind.IfStatement)
|
|
532
|
+
return;
|
|
533
|
+
const ifStmt = node;
|
|
534
|
+
const thenStmt = ifStmt.getThenStatement();
|
|
535
|
+
if (!isEarlyExit(thenStmt))
|
|
536
|
+
return;
|
|
537
|
+
guards.push({
|
|
538
|
+
test: ifStmt.getExpression(),
|
|
539
|
+
ifStmt,
|
|
540
|
+
});
|
|
541
|
+
});
|
|
542
|
+
return guards;
|
|
543
|
+
}
|
|
544
|
+
/**
|
|
545
|
+
* Structural dominance: the guard's `if` statement must be a direct child of
|
|
546
|
+
* a block that is an ancestor of (or equal to) the sink's containing block,
|
|
547
|
+
* and appear textually before the sink within that block. This rejects
|
|
548
|
+
* guards nested in sibling branches (`if (cond) { guard } else { sink }`)
|
|
549
|
+
* and guards that appear after the sink.
|
|
550
|
+
*/
|
|
551
|
+
function guardDominatesSink(guard, sink) {
|
|
552
|
+
const sinkStart = sink.getStart();
|
|
553
|
+
const guardIf = guard.ifStmt;
|
|
554
|
+
const guardParent = guardIf.getParent();
|
|
555
|
+
if (!guardParent)
|
|
556
|
+
return false;
|
|
557
|
+
let cur = sink;
|
|
558
|
+
while (cur) {
|
|
559
|
+
if (cur === guardIf)
|
|
560
|
+
return false; // sink lives inside guard's test/then
|
|
561
|
+
const parent = cur.getParent();
|
|
562
|
+
if (parent === guardParent) {
|
|
563
|
+
return guardIf.getEnd() < sinkStart;
|
|
564
|
+
}
|
|
565
|
+
cur = parent;
|
|
566
|
+
}
|
|
567
|
+
return false;
|
|
568
|
+
}
|
|
569
|
+
function isEarlyExit(stmt) {
|
|
570
|
+
const k = stmt.getKindName();
|
|
571
|
+
if (k === 'ReturnStatement' || k === 'ThrowStatement')
|
|
572
|
+
return true;
|
|
573
|
+
if (k === 'Block') {
|
|
574
|
+
const statements = stmt.getStatements();
|
|
575
|
+
if (statements.length === 0)
|
|
576
|
+
return false;
|
|
577
|
+
// Accept `{ ...; return; }` patterns. The final stmt must be return/throw.
|
|
578
|
+
const last = statements[statements.length - 1];
|
|
579
|
+
const lk = last.getKindName();
|
|
580
|
+
return lk === 'ReturnStatement' || lk === 'ThrowStatement';
|
|
581
|
+
}
|
|
582
|
+
return false;
|
|
583
|
+
}
|
|
584
|
+
/**
|
|
585
|
+
* True if the guard's test expression references `varName` through a
|
|
586
|
+
* recognizable validator or type-guard pattern WITH exit-on-invalid polarity:
|
|
587
|
+
* - typeof varName !== '<literal>' (exits when type is wrong)
|
|
588
|
+
* - !<validator>(varName) (exits when validator rejects)
|
|
589
|
+
* - !<dotted>.success / !<dotted>.ok (schema result shapes)
|
|
590
|
+
*
|
|
591
|
+
* `if (isValid(x)) return;` is rejected because it exits on VALID input —
|
|
592
|
+
* the subsequent code runs on INVALID input, so taint is still live.
|
|
593
|
+
*/
|
|
594
|
+
function guardTestsValidatesVar(test, varName) {
|
|
595
|
+
if (isNegatedTypeofGuard(test, varName))
|
|
596
|
+
return true;
|
|
597
|
+
return containsNegatedValidator(test, varName);
|
|
598
|
+
}
|
|
599
|
+
/**
|
|
600
|
+
* Matches `typeof x !== '<literal>'` or `typeof x != '<literal>'` where x
|
|
601
|
+
* refers to `varName`. Equality (`===`) is rejected — that polarity exits on
|
|
602
|
+
* VALID input.
|
|
603
|
+
*/
|
|
604
|
+
function isNegatedTypeofGuard(node, varName) {
|
|
605
|
+
if (node.getKind() !== SyntaxKind.BinaryExpression) {
|
|
606
|
+
for (const child of node.getChildren()) {
|
|
607
|
+
if (isNegatedTypeofGuard(child, varName))
|
|
608
|
+
return true;
|
|
609
|
+
}
|
|
610
|
+
return false;
|
|
611
|
+
}
|
|
612
|
+
const bin = node;
|
|
613
|
+
const op = bin.getOperatorToken().getText();
|
|
614
|
+
if (op !== '!==' && op !== '!=')
|
|
615
|
+
return false;
|
|
616
|
+
for (const side of [bin.getLeft(), bin.getRight()]) {
|
|
617
|
+
if (side.getKind() !== SyntaxKind.TypeOfExpression)
|
|
618
|
+
continue;
|
|
619
|
+
const operand = side.getExpression();
|
|
620
|
+
if (refersToVar(operand, varName))
|
|
621
|
+
return true;
|
|
622
|
+
}
|
|
623
|
+
return false;
|
|
624
|
+
}
|
|
625
|
+
/**
|
|
626
|
+
* Matches `!<validator>(...)` (PrefixUnary `!`) where the validator's argument
|
|
627
|
+
* subtree references `varName`. Handles nested negation inside logical-or
|
|
628
|
+
* expressions such as `!isValid(x) || !matchesSchema(x)`.
|
|
629
|
+
*/
|
|
630
|
+
function containsNegatedValidator(node, varName) {
|
|
631
|
+
if (node.getKind() === SyntaxKind.PrefixUnaryExpression) {
|
|
632
|
+
const unary = node;
|
|
633
|
+
if (unary.getOperatorToken() === SyntaxKind.ExclamationToken) {
|
|
634
|
+
const operand = unary.getOperand();
|
|
635
|
+
if (callIsValidatorOf(operand, varName))
|
|
636
|
+
return true;
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
for (const child of node.getChildren()) {
|
|
640
|
+
if (containsNegatedValidator(child, varName))
|
|
641
|
+
return true;
|
|
642
|
+
}
|
|
643
|
+
return false;
|
|
644
|
+
}
|
|
645
|
+
function callIsValidatorOf(expr, varName) {
|
|
646
|
+
// Unwrap property access on call results: `!schema.safeParse(x).success`
|
|
647
|
+
// — the root is a PropertyAccess whose expression is the CallExpression.
|
|
648
|
+
let cur = expr;
|
|
649
|
+
while (cur.getKind() === SyntaxKind.PropertyAccessExpression) {
|
|
650
|
+
cur = cur.getExpression();
|
|
651
|
+
}
|
|
652
|
+
if (cur.getKind() !== SyntaxKind.CallExpression)
|
|
653
|
+
return false;
|
|
654
|
+
const call = cur;
|
|
655
|
+
const calleeText = call.getExpression().getText();
|
|
656
|
+
const lastSegment = calleeText.includes('.') ? calleeText.split('.').pop() : calleeText;
|
|
657
|
+
if (!looksLikeValidatorName(lastSegment))
|
|
658
|
+
return false;
|
|
659
|
+
for (const arg of call.getArguments()) {
|
|
660
|
+
if (refersToVar(arg, varName))
|
|
661
|
+
return true;
|
|
662
|
+
}
|
|
663
|
+
return false;
|
|
664
|
+
}
|
|
665
|
+
function refersToVar(expr, varName) {
|
|
666
|
+
if (expr.getKindName() === 'Identifier' && expr.getText() === varName)
|
|
667
|
+
return true;
|
|
668
|
+
if (expr.getKindName() === 'PropertyAccessExpression') {
|
|
669
|
+
return refersToVar(expr.getExpression(), varName);
|
|
670
|
+
}
|
|
671
|
+
for (const child of expr.getChildren()) {
|
|
672
|
+
if (refersToVar(child, varName))
|
|
673
|
+
return true;
|
|
674
|
+
}
|
|
675
|
+
return false;
|
|
676
|
+
}
|
|
453
677
|
//# sourceMappingURL=taint-ast.js.map
|