@kevinrabun/judges 3.20.14 → 3.22.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/CHANGELOG.md +68 -0
- package/dist/api.d.ts +42 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +49 -1
- package/dist/api.js.map +1 -1
- package/dist/ast/taint-tracker.d.ts +3 -1
- package/dist/ast/taint-tracker.d.ts.map +1 -1
- package/dist/ast/taint-tracker.js +523 -12
- package/dist/ast/taint-tracker.js.map +1 -1
- package/dist/cli.d.ts +13 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +124 -19
- package/dist/cli.js.map +1 -1
- package/dist/commands/benchmark.d.ts +28 -0
- package/dist/commands/benchmark.d.ts.map +1 -1
- package/dist/commands/benchmark.js +1058 -1
- package/dist/commands/benchmark.js.map +1 -1
- package/dist/config.d.ts +17 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +88 -0
- package/dist/config.js.map +1 -1
- package/dist/dedup.d.ts +23 -0
- package/dist/dedup.d.ts.map +1 -1
- package/dist/dedup.js +123 -0
- package/dist/dedup.js.map +1 -1
- package/dist/evaluators/authentication.d.ts +2 -2
- package/dist/evaluators/authentication.d.ts.map +1 -1
- package/dist/evaluators/authentication.js +26 -2
- package/dist/evaluators/authentication.js.map +1 -1
- package/dist/evaluators/cybersecurity.d.ts +2 -2
- package/dist/evaluators/cybersecurity.d.ts.map +1 -1
- package/dist/evaluators/cybersecurity.js +58 -5
- package/dist/evaluators/cybersecurity.js.map +1 -1
- package/dist/evaluators/framework-safety.d.ts.map +1 -1
- package/dist/evaluators/framework-safety.js +855 -365
- package/dist/evaluators/framework-safety.js.map +1 -1
- package/dist/evaluators/index.d.ts +1 -1
- package/dist/evaluators/index.d.ts.map +1 -1
- package/dist/evaluators/index.js +6 -2
- package/dist/evaluators/index.js.map +1 -1
- package/dist/evaluators/performance.d.ts +2 -2
- package/dist/evaluators/performance.d.ts.map +1 -1
- package/dist/evaluators/performance.js +33 -4
- package/dist/evaluators/performance.js.map +1 -1
- package/dist/evaluators/project.d.ts.map +1 -1
- package/dist/evaluators/project.js +223 -13
- package/dist/evaluators/project.js.map +1 -1
- package/dist/evaluators/shared.d.ts +31 -3
- package/dist/evaluators/shared.d.ts.map +1 -1
- package/dist/evaluators/shared.js +145 -11
- package/dist/evaluators/shared.js.map +1 -1
- package/dist/evaluators/v2.d.ts.map +1 -1
- package/dist/evaluators/v2.js +8 -0
- package/dist/evaluators/v2.js.map +1 -1
- package/dist/formatters/csv.d.ts +17 -0
- package/dist/formatters/csv.d.ts.map +1 -0
- package/dist/formatters/csv.js +54 -0
- package/dist/formatters/csv.js.map +1 -0
- package/dist/language-patterns.d.ts +136 -0
- package/dist/language-patterns.d.ts.map +1 -1
- package/dist/language-patterns.js +155 -1
- package/dist/language-patterns.js.map +1 -1
- package/dist/patches/index.d.ts.map +1 -1
- package/dist/patches/index.js +210 -0
- package/dist/patches/index.js.map +1 -1
- package/dist/presets.d.ts +14 -0
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +72 -0
- package/dist/presets.js.map +1 -1
- package/dist/scoring.d.ts.map +1 -1
- package/dist/scoring.js +43 -4
- package/dist/scoring.js.map +1 -1
- package/dist/tools/register-fix.d.ts +6 -0
- package/dist/tools/register-fix.d.ts.map +1 -0
- package/dist/tools/register-fix.js +153 -0
- package/dist/tools/register-fix.js.map +1 -0
- package/dist/tools/register-workflow.d.ts.map +1 -1
- package/dist/tools/register-workflow.js +79 -0
- package/dist/tools/register-workflow.js.map +1 -1
- package/dist/tools/register-workspace.d.ts +3 -0
- package/dist/tools/register-workspace.d.ts.map +1 -0
- package/dist/tools/register-workspace.js +215 -0
- package/dist/tools/register-workspace.js.map +1 -0
- package/dist/tools/register.d.ts +1 -1
- package/dist/tools/register.d.ts.map +1 -1
- package/dist/tools/register.js +5 -1
- package/dist/tools/register.js.map +1 -1
- package/dist/tools/schemas.d.ts +2 -2
- package/dist/types.d.ts +24 -2
- package/dist/types.d.ts.map +1 -1
- package/judgesrc.schema.json +17 -2
- package/package.json +1 -1
- package/server.json +30 -2
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
// ──────────────────────────────────────────────────────────────────────────────
|
|
7
7
|
import { analyzeCrossFileTaint } from "../ast/index.js";
|
|
8
8
|
import { applyConfidenceThreshold, isAbsenceBasedFinding } from "../scoring.js";
|
|
9
|
+
import { crossFileDedup } from "../dedup.js";
|
|
9
10
|
import { LRUCache, contentHash } from "../cache.js";
|
|
10
11
|
// ─── Module-level tribunal result cache ──────────────────────────────────────
|
|
11
12
|
const tribunalResultCache = new LRUCache(256);
|
|
@@ -235,6 +236,202 @@ function applyProjectWideAbsenceResolution(findings, projectWideCategories) {
|
|
|
235
236
|
return f;
|
|
236
237
|
});
|
|
237
238
|
}
|
|
239
|
+
// ─── Cross-File Shared State & Type Safety Analysis ──────────────────────────
|
|
240
|
+
/**
|
|
241
|
+
* Detect exported mutable state (let/var bindings, mutable objects) that is
|
|
242
|
+
* imported and potentially written from multiple files — a common source of
|
|
243
|
+
* race conditions and hard-to-debug state corruption.
|
|
244
|
+
*/
|
|
245
|
+
function detectSharedMutableState(files) {
|
|
246
|
+
const findings = [];
|
|
247
|
+
// Find exported `let`/`var` variables (mutable by definition)
|
|
248
|
+
const mutableExports = new Map();
|
|
249
|
+
// Use a RegExp that matches `export let` or `export var` variable declarations
|
|
250
|
+
const mutableExportRe = /^[ \t]*export\s+(?:let|var)\s+(\w+)/;
|
|
251
|
+
for (const f of files) {
|
|
252
|
+
const lines = f.content.split("\n");
|
|
253
|
+
for (let i = 0; i < lines.length; i++) {
|
|
254
|
+
const m = mutableExportRe.exec(lines[i]);
|
|
255
|
+
if (m) {
|
|
256
|
+
const key = `${f.path}:${m[1]}`;
|
|
257
|
+
mutableExports.set(key, { file: f.path, line: i + 1, name: m[1] });
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
// Find files that import and mutate these
|
|
262
|
+
for (const [key, info] of mutableExports) {
|
|
263
|
+
const importers = [];
|
|
264
|
+
const nameEsc = info.name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
265
|
+
const importRe = new RegExp(`import\\s+\\{[^}]*\\b${nameEsc}\\b[^}]*\\}\\s+from`, "m");
|
|
266
|
+
const writeRe = new RegExp(`\\b${nameEsc}\\s*(?:=(?!=)|\\+\\+|--|\\+=|-=|\\*=|\\/=|\\|=|&=)`, "m");
|
|
267
|
+
for (const f of files) {
|
|
268
|
+
if (f.path === info.file)
|
|
269
|
+
continue;
|
|
270
|
+
if (importRe.test(f.content) && writeRe.test(f.content)) {
|
|
271
|
+
importers.push(f.path);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
if (importers.length > 0) {
|
|
275
|
+
findings.push({
|
|
276
|
+
ruleId: "STATE-001",
|
|
277
|
+
severity: "high",
|
|
278
|
+
title: `Shared mutable export \`${info.name}\` modified across files`,
|
|
279
|
+
description: `\`${info.name}\` is exported as \`let\`/\`var\` from ${info.file} (line ${info.line}) and mutated ` +
|
|
280
|
+
`in ${importers.length} other file(s): ${importers.join(", ")}. ` +
|
|
281
|
+
`Shared mutable state across modules causes race conditions, non-deterministic behavior, ` +
|
|
282
|
+
`and makes testing extremely difficult.`,
|
|
283
|
+
lineNumbers: [info.line],
|
|
284
|
+
recommendation: "Replace shared mutable state with an immutable export + setter function, use a state management pattern " +
|
|
285
|
+
"(e.g., event bus, Redux store), or pass state explicitly through function parameters.",
|
|
286
|
+
reference: "CWE-362: Concurrent Execution Using Shared Resource with Improper Synchronization",
|
|
287
|
+
confidence: 0.85,
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// Detect exported mutable singleton patterns (module-level objects with mutation methods)
|
|
292
|
+
for (const f of files) {
|
|
293
|
+
if (f.language !== "typescript" && f.language !== "javascript")
|
|
294
|
+
continue;
|
|
295
|
+
// Match `export const state = { ... }` that is later mutated via `state.x = ...`
|
|
296
|
+
const singletonRe = /^[ \t]*export\s+const\s+(\w+)\s*(?::\s*\w[^=]*)?\s*=\s*\{/gm;
|
|
297
|
+
let sm;
|
|
298
|
+
while ((sm = singletonRe.exec(f.content)) !== null) {
|
|
299
|
+
const objName = sm[1];
|
|
300
|
+
const nameEsc = objName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
301
|
+
const mutationRe = new RegExp(`\\b${nameEsc}\\.\\w+\\s*=(?!=)`, "m");
|
|
302
|
+
// Check if any other file imports and mutates this object
|
|
303
|
+
const mutators = [];
|
|
304
|
+
const importRe = new RegExp(`import\\s+\\{[^}]*\\b${nameEsc}\\b[^}]*\\}\\s+from`, "m");
|
|
305
|
+
for (const other of files) {
|
|
306
|
+
if (other.path === f.path)
|
|
307
|
+
continue;
|
|
308
|
+
if (importRe.test(other.content) && mutationRe.test(other.content)) {
|
|
309
|
+
mutators.push(other.path);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
if (mutators.length > 0) {
|
|
313
|
+
const lineNum = f.content.substring(0, sm.index).split("\n").length;
|
|
314
|
+
findings.push({
|
|
315
|
+
ruleId: "STATE-002",
|
|
316
|
+
severity: "high",
|
|
317
|
+
title: `Exported object \`${objName}\` mutated from other modules`,
|
|
318
|
+
description: `\`${objName}\` is exported from ${f.path} (line ${lineNum}) and its properties are ` +
|
|
319
|
+
`mutated in: ${mutators.join(", ")}. Mutating imported objects breaks encapsulation ` +
|
|
320
|
+
`and creates hidden coupling between modules.`,
|
|
321
|
+
lineNumbers: [lineNum],
|
|
322
|
+
recommendation: "Freeze the exported object with Object.freeze(), expose setter functions, or use a " +
|
|
323
|
+
"centralized state management pattern instead of direct property mutation.",
|
|
324
|
+
confidence: 0.8,
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
return findings;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Detect type safety gaps across file boundaries — exported functions or
|
|
333
|
+
* values with `any` type, untyped parameters crossing module boundaries,
|
|
334
|
+
* and inconsistent null checking patterns.
|
|
335
|
+
*/
|
|
336
|
+
function detectTypeSafetyGaps(files) {
|
|
337
|
+
const findings = [];
|
|
338
|
+
// Only applicable to TypeScript files
|
|
339
|
+
const tsFiles = files.filter((f) => f.language === "typescript");
|
|
340
|
+
if (tsFiles.length < 2)
|
|
341
|
+
return findings;
|
|
342
|
+
// Find exported functions with `any` in their signatures
|
|
343
|
+
const anyExportRe = /^[ \t]*export\s+(?:async\s+)?function\s+(\w+)\s*\(([^)]*)\)\s*(?::\s*([^\n{]+))?/gm;
|
|
344
|
+
for (const f of tsFiles) {
|
|
345
|
+
let m;
|
|
346
|
+
anyExportRe.lastIndex = 0;
|
|
347
|
+
while ((m = anyExportRe.exec(f.content)) !== null) {
|
|
348
|
+
const fnName = m[1];
|
|
349
|
+
const params = m[2] ?? "";
|
|
350
|
+
const retType = m[3] ?? "";
|
|
351
|
+
const hasAny = /\bany\b/.test(params) || /\bany\b/.test(retType);
|
|
352
|
+
if (!hasAny)
|
|
353
|
+
continue;
|
|
354
|
+
// Check if other files import this function
|
|
355
|
+
const nameEsc = fnName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
356
|
+
const importers = tsFiles.filter((o) => o.path !== f.path && new RegExp(`import\\s+\\{[^}]*\\b${nameEsc}\\b[^}]*\\}\\s+from`, "m").test(o.content));
|
|
357
|
+
if (importers.length > 0) {
|
|
358
|
+
const lineNum = f.content.substring(0, m.index).split("\n").length;
|
|
359
|
+
findings.push({
|
|
360
|
+
ruleId: "TYPE-001",
|
|
361
|
+
severity: "medium",
|
|
362
|
+
title: `Exported function \`${fnName}\` uses \`any\` type`,
|
|
363
|
+
description: `Function \`${fnName}\` exported from ${f.path} (line ${lineNum}) has \`any\` in its signature ` +
|
|
364
|
+
`and is imported by ${importers.length} file(s). Using \`any\` at module boundaries defeats ` +
|
|
365
|
+
`TypeScript's type safety and can introduce type errors that propagate across the project.`,
|
|
366
|
+
lineNumbers: [lineNum],
|
|
367
|
+
recommendation: "Replace `any` with a specific type, `unknown`, or a generic type parameter. " +
|
|
368
|
+
"At minimum, use `unknown` and narrow the type with runtime checks.",
|
|
369
|
+
reference: "TypeScript Handbook: The any type",
|
|
370
|
+
confidence: 0.75,
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
return findings;
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Detect environment variables used across multiple files without centralized
|
|
379
|
+
* validation. Scattered env var access with no single point of validation
|
|
380
|
+
* leads to runtime crashes and configuration drift.
|
|
381
|
+
*/
|
|
382
|
+
function detectScatteredEnvAccess(files) {
|
|
383
|
+
const findings = [];
|
|
384
|
+
// Track env var access per file
|
|
385
|
+
const envVarUsage = new Map(); // envVar → set of file paths
|
|
386
|
+
const envAccessPatterns = [
|
|
387
|
+
{ pattern: /process\.env\.(\w+)/g, lang: ["typescript", "javascript"] },
|
|
388
|
+
{ pattern: /os\.environ(?:\.get)?\s*\[\s*['"](\w+)['"]\s*\]/g, lang: ["python"] },
|
|
389
|
+
{ pattern: /os\.environ\.get\s*\(\s*['"](\w+)['"]/g, lang: ["python"] },
|
|
390
|
+
{ pattern: /os\.Getenv\s*\(\s*"(\w+)"/g, lang: ["go"] },
|
|
391
|
+
{ pattern: /System\.getenv\s*\(\s*"(\w+)"/g, lang: ["java"] },
|
|
392
|
+
{ pattern: /Environment\.GetEnvironmentVariable\s*\(\s*"(\w+)"/g, lang: ["csharp"] },
|
|
393
|
+
];
|
|
394
|
+
// Detect config files (these centralize env access, which is the desired pattern)
|
|
395
|
+
const configFilePattern = /(?:config|settings|env|environment)\.\w+$/i;
|
|
396
|
+
const configFiles = new Set(files.filter((f) => configFilePattern.test(f.path)).map((f) => f.path));
|
|
397
|
+
for (const f of files) {
|
|
398
|
+
if (configFiles.has(f.path))
|
|
399
|
+
continue; // Skip config files — centralized access is good
|
|
400
|
+
for (const ap of envAccessPatterns) {
|
|
401
|
+
if (!ap.lang.includes(f.language))
|
|
402
|
+
continue;
|
|
403
|
+
ap.pattern.lastIndex = 0;
|
|
404
|
+
let m;
|
|
405
|
+
while ((m = ap.pattern.exec(f.content)) !== null) {
|
|
406
|
+
const envVar = m[1];
|
|
407
|
+
if (!envVarUsage.has(envVar))
|
|
408
|
+
envVarUsage.set(envVar, new Set());
|
|
409
|
+
envVarUsage.get(envVar).add(f.path);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
// Flag env vars accessed in 3+ non-config files without centralized validation
|
|
414
|
+
const scattered = [...envVarUsage.entries()].filter(([, paths]) => paths.size >= 3);
|
|
415
|
+
if (scattered.length > 0) {
|
|
416
|
+
const examples = scattered
|
|
417
|
+
.slice(0, 5)
|
|
418
|
+
.map(([v, paths]) => `${v} (${paths.size} files)`)
|
|
419
|
+
.join(", ");
|
|
420
|
+
findings.push({
|
|
421
|
+
ruleId: "CONFIG-001",
|
|
422
|
+
severity: "medium",
|
|
423
|
+
title: "Environment variables accessed from multiple files without centralization",
|
|
424
|
+
description: `${scattered.length} env variable(s) are accessed directly in 3+ files each: ${examples}. ` +
|
|
425
|
+
`Scattered env access leads to missing validation, inconsistent defaults, and runtime crashes ` +
|
|
426
|
+
`when variables are undefined.`,
|
|
427
|
+
recommendation: "Create a centralized config module that validates all env vars at startup (e.g., using envalid, " +
|
|
428
|
+
"zod, or a Config class), then import typed config values instead of accessing process.env directly.",
|
|
429
|
+
reference: "12-Factor App: Config",
|
|
430
|
+
confidence: 0.7,
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
return findings;
|
|
434
|
+
}
|
|
238
435
|
// ─── Project Evaluation ───────────────────────────────────────────────────────
|
|
239
436
|
/**
|
|
240
437
|
* Evaluate multiple files as a project. Runs the full tribunal on each file,
|
|
@@ -309,6 +506,10 @@ export function evaluateProject(runner, files, context, options) {
|
|
|
309
506
|
recommendation: "Standardize on a single error handling strategy across the project.",
|
|
310
507
|
});
|
|
311
508
|
}
|
|
509
|
+
// ── Cross-file state, type-safety & config analysis ────────────────────
|
|
510
|
+
architecturalFindings.push(...detectSharedMutableState(files));
|
|
511
|
+
architecturalFindings.push(...detectTypeSafetyGaps(files));
|
|
512
|
+
architecturalFindings.push(...detectScatteredEnvAccess(files));
|
|
312
513
|
const filteredArchitecturalFindings = applyConfidenceThreshold(architecturalFindings, options);
|
|
313
514
|
// Check for circular-looking dependency indicators
|
|
314
515
|
const importMap = new Map();
|
|
@@ -437,24 +638,33 @@ export function evaluateProject(runner, files, context, options) {
|
|
|
437
638
|
}
|
|
438
639
|
// Overall scores
|
|
439
640
|
const allFindings = fileResults.flatMap((f) => f.findings);
|
|
440
|
-
// ── Project-level
|
|
441
|
-
// Absence-based findings
|
|
442
|
-
//
|
|
443
|
-
//
|
|
444
|
-
//
|
|
445
|
-
const deduplicatedFindings = [];
|
|
641
|
+
// ── Project-level cross-file dedup ──────────────────────────────────────
|
|
642
|
+
// 1. Absence-based findings fire on every file missing the pattern.
|
|
643
|
+
// Keep only the highest-confidence instance per title.
|
|
644
|
+
// 2. Concrete findings with the same known topic + ruleId across files
|
|
645
|
+
// are consolidated into a single representative finding.
|
|
446
646
|
const absenceBestByTitle = new Map();
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
647
|
+
const nonAbsenceFileFindings = [];
|
|
648
|
+
// Partition each file's findings into absence vs non-absence
|
|
649
|
+
for (const fr of fileResults) {
|
|
650
|
+
const nonAbsence = [];
|
|
651
|
+
for (const f of fr.findings) {
|
|
652
|
+
if (isAbsenceBasedFinding(f)) {
|
|
653
|
+
const existing = absenceBestByTitle.get(f.title);
|
|
654
|
+
if (!existing || (f.confidence ?? 0) > (existing.confidence ?? 0)) {
|
|
655
|
+
absenceBestByTitle.set(f.title, f);
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
else {
|
|
659
|
+
nonAbsence.push(f);
|
|
452
660
|
}
|
|
453
661
|
}
|
|
454
|
-
|
|
455
|
-
|
|
662
|
+
if (nonAbsence.length > 0) {
|
|
663
|
+
nonAbsenceFileFindings.push({ path: fr.path, findings: nonAbsence });
|
|
456
664
|
}
|
|
457
665
|
}
|
|
666
|
+
// Cross-file dedup on concrete findings
|
|
667
|
+
const deduplicatedFindings = crossFileDedup(nonAbsenceFileFindings);
|
|
458
668
|
deduplicatedFindings.push(...absenceBestByTitle.values());
|
|
459
669
|
// ── Cross-file taint analysis ───────────────────────────────────────────
|
|
460
670
|
const crossFileTaintFlows = analyzeCrossFileTaint(files);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/evaluators/project.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/evaluators/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,33 @@ export declare function classifyFile(code: string, language: string, filePath?:
|
|
|
24
24
|
export declare function shouldRunAbsenceRules(category: FileCategory): boolean;
|
|
25
25
|
/** A framework or middleware detected from code patterns (no AST required). */
|
|
26
26
|
export type DetectedFramework = string;
|
|
27
|
+
/** Version hint extracted from code or manifest patterns. */
|
|
28
|
+
export interface FrameworkVersionHint {
|
|
29
|
+
framework: DetectedFramework;
|
|
30
|
+
/** Detected major version (e.g. 4 for Django 4.x). null if unknown. */
|
|
31
|
+
major: number | null;
|
|
32
|
+
/** Detected minor version if available. null if unknown. */
|
|
33
|
+
minor: number | null;
|
|
34
|
+
/** Raw version string found in source (e.g. "4.2.1", ">=3.0"). */
|
|
35
|
+
raw: string | null;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Extract framework version hints from code content.
|
|
39
|
+
* Scans for version specifiers in requirements, package.json, go.mod,
|
|
40
|
+
* Gemfile, composer.json, and version comments.
|
|
41
|
+
*/
|
|
42
|
+
export declare function detectFrameworkVersions(code: string): FrameworkVersionHint[];
|
|
43
|
+
/**
|
|
44
|
+
* Version-aware confidence adjustments. Some security concerns only apply to
|
|
45
|
+
* specific framework versions. Returns the confidence delta (negative = reduce,
|
|
46
|
+
* positive = increase).
|
|
47
|
+
*
|
|
48
|
+
* Examples:
|
|
49
|
+
* - Django ≥4.0 has CSRF enabled by default → reduce CSRF-finding confidence
|
|
50
|
+
* - Spring Boot ≥3.0 requires explicit security configuration → raise concern
|
|
51
|
+
* - Express 5.x deprecates certain middleware → raise concern for old patterns
|
|
52
|
+
*/
|
|
53
|
+
export declare function getVersionConfidenceAdjustment(finding: Finding, versions: FrameworkVersionHint[]): number;
|
|
27
54
|
/**
|
|
28
55
|
* Detect frameworks and security middleware from code patterns.
|
|
29
56
|
* Works across all languages — no AST required.
|
|
@@ -31,9 +58,10 @@ export type DetectedFramework = string;
|
|
|
31
58
|
export declare function detectFrameworks(code: string): DetectedFramework[];
|
|
32
59
|
/**
|
|
33
60
|
* Reduce confidence on findings that are mitigated by a detected framework
|
|
34
|
-
* or middleware.
|
|
35
|
-
*
|
|
36
|
-
*
|
|
61
|
+
* or middleware. Also applies version-aware adjustments when version hints
|
|
62
|
+
* are found in the code. This is complementary to AST-based import
|
|
63
|
+
* awareness — it works for all languages and detects framework-level
|
|
64
|
+
* mitigations (e.g. Django CSRF, FastAPI validation) that import checks miss.
|
|
37
65
|
*/
|
|
38
66
|
export declare function applyFrameworkAwareness(findings: Finding[], code: string): Finding[];
|
|
39
67
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/evaluators/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,OAAO,EAEP,OAAO,EACP,YAAY,EACZ,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAS,MAAM,yBAAyB,CAAC;AAGhF,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC;AAW1C;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAOD,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,QAAQ,GACR,OAAO,GACP,SAAS,GACT,QAAQ,GACR,SAAS,CAAC;AAEd;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,CA+G5F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAErE;AAID,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/evaluators/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -111,6 +111,124 @@ export function classifyFile(code, language, filePath) {
|
|
|
111
111
|
export function shouldRunAbsenceRules(category) {
|
|
112
112
|
return category === "server" || category === "unknown";
|
|
113
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Patterns that extract version hints from code, config, or comments.
|
|
116
|
+
* Each entry: [framework, regex with capture group 1 = version string].
|
|
117
|
+
*/
|
|
118
|
+
const VERSION_DETECT_PATTERNS = [
|
|
119
|
+
// Python requirements / pyproject.toml
|
|
120
|
+
["django", /django\s*[=~><]{1,2}\s*([\d.]+)/i],
|
|
121
|
+
["flask", /flask\s*[=~><]{1,2}\s*([\d.]+)/i],
|
|
122
|
+
["fastapi", /fastapi\s*[=~><]{1,2}\s*([\d.]+)/i],
|
|
123
|
+
// JavaScript package.json style
|
|
124
|
+
["express", /["']express["']\s*:\s*["'][~^]?([\d.]+)/i],
|
|
125
|
+
["next", /["']next["']\s*:\s*["'][~^]?([\d.]+)/i],
|
|
126
|
+
// Java / Kotlin — Spring Boot
|
|
127
|
+
["spring", /spring-boot(?:-starter)?[:\-](\d+\.\d+[\d.]*)/i],
|
|
128
|
+
["spring", /org\.springframework\.boot.*version\s*=?\s*['"]?(\d+\.\d+[\d.]*)/i],
|
|
129
|
+
// C# — ASP.NET
|
|
130
|
+
["aspnet", /Microsoft\.AspNetCore[.\w]*Version=["']?([\d.]+)/i],
|
|
131
|
+
["aspnet", /net(\d+\.\d+)/i],
|
|
132
|
+
// Ruby Gemfile
|
|
133
|
+
["rails", /['"]rails['"],?\s*['"]~>\s*([\d.]+)/i],
|
|
134
|
+
// Go go.mod
|
|
135
|
+
["gin", /github\.com\/gin-gonic\/gin\s+v([\d.]+)/i],
|
|
136
|
+
// PHP composer.json
|
|
137
|
+
["laravel", /["']laravel\/framework["']\s*:\s*["'][~^]?([\d.]+)/i],
|
|
138
|
+
// Generic version comment
|
|
139
|
+
["django", /@version\s+Django\s+([\d.]+)/i],
|
|
140
|
+
["spring", /@version\s+Spring\s+(?:Boot\s+)?([\d.]+)/i],
|
|
141
|
+
];
|
|
142
|
+
/**
|
|
143
|
+
* Extract framework version hints from code content.
|
|
144
|
+
* Scans for version specifiers in requirements, package.json, go.mod,
|
|
145
|
+
* Gemfile, composer.json, and version comments.
|
|
146
|
+
*/
|
|
147
|
+
export function detectFrameworkVersions(code) {
|
|
148
|
+
const hints = [];
|
|
149
|
+
const seen = new Set();
|
|
150
|
+
for (const [fw, regex] of VERSION_DETECT_PATTERNS) {
|
|
151
|
+
const match = code.match(regex);
|
|
152
|
+
if (match && match[1]) {
|
|
153
|
+
const key = `${fw}:${match[1]}`;
|
|
154
|
+
if (seen.has(key))
|
|
155
|
+
continue;
|
|
156
|
+
seen.add(key);
|
|
157
|
+
const parts = match[1].split(".");
|
|
158
|
+
hints.push({
|
|
159
|
+
framework: fw,
|
|
160
|
+
major: parts[0] ? parseInt(parts[0], 10) : null,
|
|
161
|
+
minor: parts[1] ? parseInt(parts[1], 10) : null,
|
|
162
|
+
raw: match[1],
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return hints;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Version-aware confidence adjustments. Some security concerns only apply to
|
|
170
|
+
* specific framework versions. Returns the confidence delta (negative = reduce,
|
|
171
|
+
* positive = increase).
|
|
172
|
+
*
|
|
173
|
+
* Examples:
|
|
174
|
+
* - Django ≥4.0 has CSRF enabled by default → reduce CSRF-finding confidence
|
|
175
|
+
* - Spring Boot ≥3.0 requires explicit security configuration → raise concern
|
|
176
|
+
* - Express 5.x deprecates certain middleware → raise concern for old patterns
|
|
177
|
+
*/
|
|
178
|
+
export function getVersionConfidenceAdjustment(finding, versions) {
|
|
179
|
+
for (const v of versions) {
|
|
180
|
+
if (v.major === null)
|
|
181
|
+
continue;
|
|
182
|
+
if (v.framework === "django") {
|
|
183
|
+
// Django 4.0+ has async view support and improved CSRF
|
|
184
|
+
if (v.major >= 4 && /csrf/i.test(finding.title))
|
|
185
|
+
return -0.15;
|
|
186
|
+
// Django 3.x deprecated certain auth patterns
|
|
187
|
+
if (v.major >= 3 && /password.*reset.*insecure/i.test(finding.title))
|
|
188
|
+
return -0.1;
|
|
189
|
+
}
|
|
190
|
+
if (v.framework === "spring") {
|
|
191
|
+
// Spring Boot 3.x requires Spring Security 6 — no more auto-CSRF
|
|
192
|
+
if (v.major >= 3 && /csrf.*auto|default.*csrf/i.test(finding.title))
|
|
193
|
+
return 0.1;
|
|
194
|
+
// Spring Boot 2.x had auto-configured security
|
|
195
|
+
if (v.major <= 2 && /security.*missing|no.*security/i.test(finding.title))
|
|
196
|
+
return -0.15;
|
|
197
|
+
}
|
|
198
|
+
if (v.framework === "next") {
|
|
199
|
+
// Next.js 13+ App Router has built-in security headers
|
|
200
|
+
if (v.major >= 13 && /security.?header/i.test(finding.title))
|
|
201
|
+
return -0.15;
|
|
202
|
+
// Next.js 14+ has improved Server Action security
|
|
203
|
+
if (v.major >= 14 && /server.?action.*insecure/i.test(finding.title))
|
|
204
|
+
return -0.1;
|
|
205
|
+
}
|
|
206
|
+
if (v.framework === "express") {
|
|
207
|
+
// Express 5.x deprecated several patterns
|
|
208
|
+
if (v.major >= 5 && /deprecated/i.test(finding.title))
|
|
209
|
+
return 0.1;
|
|
210
|
+
}
|
|
211
|
+
if (v.framework === "rails") {
|
|
212
|
+
// Rails 7+ has strong defaults for parameter filtering
|
|
213
|
+
if (v.major >= 7 && /mass.?assign|strong.?param/i.test(finding.title))
|
|
214
|
+
return -0.1;
|
|
215
|
+
// Rails 6+ has per-form CSRF tokens
|
|
216
|
+
if (v.major >= 6 && /csrf/i.test(finding.title))
|
|
217
|
+
return -0.1;
|
|
218
|
+
}
|
|
219
|
+
if (v.framework === "laravel") {
|
|
220
|
+
// Laravel 9+ has improved validation and typed request factories
|
|
221
|
+
if (v.major >= 9 && /input.?valid|request.?valid/i.test(finding.title))
|
|
222
|
+
return -0.1;
|
|
223
|
+
}
|
|
224
|
+
if (v.framework === "aspnet") {
|
|
225
|
+
// .NET 8+ has built-in rate limiting middleware
|
|
226
|
+
if (v.major >= 8 && /rate.?limit/i.test(finding.title))
|
|
227
|
+
return -0.15;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return 0;
|
|
231
|
+
}
|
|
114
232
|
const FRAMEWORK_DETECT_PATTERNS = [
|
|
115
233
|
// ── JavaScript / TypeScript ──
|
|
116
234
|
["express", /\brequire\s*\(\s*['"]express['"]\)|from\s+['"]express['"]/],
|
|
@@ -170,27 +288,43 @@ export function detectFrameworks(code) {
|
|
|
170
288
|
}
|
|
171
289
|
/**
|
|
172
290
|
* Reduce confidence on findings that are mitigated by a detected framework
|
|
173
|
-
* or middleware.
|
|
174
|
-
*
|
|
175
|
-
*
|
|
291
|
+
* or middleware. Also applies version-aware adjustments when version hints
|
|
292
|
+
* are found in the code. This is complementary to AST-based import
|
|
293
|
+
* awareness — it works for all languages and detects framework-level
|
|
294
|
+
* mitigations (e.g. Django CSRF, FastAPI validation) that import checks miss.
|
|
176
295
|
*/
|
|
177
296
|
export function applyFrameworkAwareness(findings, code) {
|
|
178
297
|
const frameworks = detectFrameworks(code);
|
|
179
|
-
|
|
298
|
+
const versions = detectFrameworkVersions(code);
|
|
299
|
+
if (frameworks.length === 0 && versions.length === 0)
|
|
180
300
|
return findings;
|
|
181
301
|
return findings.map((f) => {
|
|
302
|
+
let currentConf = f.confidence ?? 0.5;
|
|
303
|
+
let provenanceNote = "";
|
|
304
|
+
// Framework mitigation adjustments
|
|
182
305
|
for (const fw of frameworks) {
|
|
183
306
|
const pattern = FRAMEWORK_MITIGATIONS[fw];
|
|
184
307
|
if (pattern && pattern.test(f.title)) {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
return {
|
|
188
|
-
...f,
|
|
189
|
-
confidence: newConf,
|
|
190
|
-
provenance: f.provenance ? `${f.provenance}; ${fw}-mitigated` : `${fw}-mitigated`,
|
|
191
|
-
};
|
|
308
|
+
currentConf = Math.max(0, Math.min(1, currentConf - FRAMEWORK_CONFIDENCE_REDUCTION));
|
|
309
|
+
provenanceNote += provenanceNote ? `; ${fw}-mitigated` : `${fw}-mitigated`;
|
|
192
310
|
}
|
|
193
311
|
}
|
|
312
|
+
// Version-aware fine-tuning
|
|
313
|
+
if (versions.length > 0) {
|
|
314
|
+
const versionDelta = getVersionConfidenceAdjustment(f, versions);
|
|
315
|
+
if (versionDelta !== 0) {
|
|
316
|
+
currentConf = Math.max(0, Math.min(1, currentConf + versionDelta));
|
|
317
|
+
const versionLabel = versions.map((v) => `${v.framework}@${v.raw}`).join(",");
|
|
318
|
+
provenanceNote += provenanceNote ? `; version-adjusted(${versionLabel})` : `version-adjusted(${versionLabel})`;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
if (provenanceNote) {
|
|
322
|
+
return {
|
|
323
|
+
...f,
|
|
324
|
+
confidence: currentConf,
|
|
325
|
+
provenance: f.provenance ? `${f.provenance}; ${provenanceNote}` : provenanceNote,
|
|
326
|
+
};
|
|
327
|
+
}
|
|
194
328
|
return f;
|
|
195
329
|
});
|
|
196
330
|
}
|