@oddessentials/odd-ai-reviewers 1.0.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/README.md +190 -0
- package/dist/__tests__/hermetic-setup.d.ts +55 -0
- package/dist/__tests__/hermetic-setup.d.ts.map +1 -0
- package/dist/__tests__/hermetic-setup.js +62 -0
- package/dist/__tests__/hermetic-setup.js.map +1 -0
- package/dist/__tests__/test-utils/hermetic.d.ts +84 -0
- package/dist/__tests__/test-utils/hermetic.d.ts.map +1 -0
- package/dist/__tests__/test-utils/hermetic.js +147 -0
- package/dist/__tests__/test-utils/hermetic.js.map +1 -0
- package/dist/agents/ai_semantic_review.d.ts +12 -0
- package/dist/agents/ai_semantic_review.d.ts.map +1 -0
- package/dist/agents/ai_semantic_review.js +317 -0
- package/dist/agents/ai_semantic_review.js.map +1 -0
- package/dist/agents/control_flow/budget.d.ts +162 -0
- package/dist/agents/control_flow/budget.d.ts.map +1 -0
- package/dist/agents/control_flow/budget.js +331 -0
- package/dist/agents/control_flow/budget.js.map +1 -0
- package/dist/agents/control_flow/cfg-builder.d.ts +26 -0
- package/dist/agents/control_flow/cfg-builder.d.ts.map +1 -0
- package/dist/agents/control_flow/cfg-builder.js +776 -0
- package/dist/agents/control_flow/cfg-builder.js.map +1 -0
- package/dist/agents/control_flow/cfg-types.d.ts +186 -0
- package/dist/agents/control_flow/cfg-types.d.ts.map +1 -0
- package/dist/agents/control_flow/cfg-types.js +114 -0
- package/dist/agents/control_flow/cfg-types.js.map +1 -0
- package/dist/agents/control_flow/finding-generator.d.ts +118 -0
- package/dist/agents/control_flow/finding-generator.d.ts.map +1 -0
- package/dist/agents/control_flow/finding-generator.js +354 -0
- package/dist/agents/control_flow/finding-generator.js.map +1 -0
- package/dist/agents/control_flow/index.d.ts +39 -0
- package/dist/agents/control_flow/index.d.ts.map +1 -0
- package/dist/agents/control_flow/index.js +270 -0
- package/dist/agents/control_flow/index.js.map +1 -0
- package/dist/agents/control_flow/logger.d.ts +333 -0
- package/dist/agents/control_flow/logger.d.ts.map +1 -0
- package/dist/agents/control_flow/logger.js +607 -0
- package/dist/agents/control_flow/logger.js.map +1 -0
- package/dist/agents/control_flow/mitigation-detector.d.ts +207 -0
- package/dist/agents/control_flow/mitigation-detector.d.ts.map +1 -0
- package/dist/agents/control_flow/mitigation-detector.js +625 -0
- package/dist/agents/control_flow/mitigation-detector.js.map +1 -0
- package/dist/agents/control_flow/mitigation-patterns.d.ts +53 -0
- package/dist/agents/control_flow/mitigation-patterns.d.ts.map +1 -0
- package/dist/agents/control_flow/mitigation-patterns.js +620 -0
- package/dist/agents/control_flow/mitigation-patterns.js.map +1 -0
- package/dist/agents/control_flow/path-analyzer.d.ts +287 -0
- package/dist/agents/control_flow/path-analyzer.d.ts.map +1 -0
- package/dist/agents/control_flow/path-analyzer.js +695 -0
- package/dist/agents/control_flow/path-analyzer.js.map +1 -0
- package/dist/agents/control_flow/pattern-validator.d.ts +132 -0
- package/dist/agents/control_flow/pattern-validator.d.ts.map +1 -0
- package/dist/agents/control_flow/pattern-validator.js +420 -0
- package/dist/agents/control_flow/pattern-validator.js.map +1 -0
- package/dist/agents/control_flow/timeout-regex.d.ts +144 -0
- package/dist/agents/control_flow/timeout-regex.d.ts.map +1 -0
- package/dist/agents/control_flow/timeout-regex.js +339 -0
- package/dist/agents/control_flow/timeout-regex.js.map +1 -0
- package/dist/agents/control_flow/types.d.ts +782 -0
- package/dist/agents/control_flow/types.d.ts.map +1 -0
- package/dist/agents/control_flow/types.js +428 -0
- package/dist/agents/control_flow/types.js.map +1 -0
- package/dist/agents/control_flow/vulnerability-detector.d.ts +85 -0
- package/dist/agents/control_flow/vulnerability-detector.d.ts.map +1 -0
- package/dist/agents/control_flow/vulnerability-detector.js +493 -0
- package/dist/agents/control_flow/vulnerability-detector.js.map +1 -0
- package/dist/agents/date-utils.d.ts +19 -0
- package/dist/agents/date-utils.d.ts.map +1 -0
- package/dist/agents/date-utils.js +29 -0
- package/dist/agents/date-utils.js.map +1 -0
- package/dist/agents/index.d.ts +25 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +50 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/json-utils.d.ts +34 -0
- package/dist/agents/json-utils.d.ts.map +1 -0
- package/dist/agents/json-utils.js +62 -0
- package/dist/agents/json-utils.js.map +1 -0
- package/dist/agents/local_llm.d.ts +24 -0
- package/dist/agents/local_llm.d.ts.map +1 -0
- package/dist/agents/local_llm.js +566 -0
- package/dist/agents/local_llm.js.map +1 -0
- package/dist/agents/metadata.d.ts +57 -0
- package/dist/agents/metadata.d.ts.map +1 -0
- package/dist/agents/metadata.js +45 -0
- package/dist/agents/metadata.js.map +1 -0
- package/dist/agents/opencode.d.ts +18 -0
- package/dist/agents/opencode.d.ts.map +1 -0
- package/dist/agents/opencode.js +364 -0
- package/dist/agents/opencode.js.map +1 -0
- package/dist/agents/path-filter.d.ts +25 -0
- package/dist/agents/path-filter.d.ts.map +1 -0
- package/dist/agents/path-filter.js +43 -0
- package/dist/agents/path-filter.js.map +1 -0
- package/dist/agents/pr_agent.d.ts +3 -0
- package/dist/agents/pr_agent.d.ts.map +1 -0
- package/dist/agents/pr_agent.js +312 -0
- package/dist/agents/pr_agent.js.map +1 -0
- package/dist/agents/retry.d.ts +12 -0
- package/dist/agents/retry.d.ts.map +1 -0
- package/dist/agents/retry.js +65 -0
- package/dist/agents/retry.js.map +1 -0
- package/dist/agents/reviewdog.d.ts +24 -0
- package/dist/agents/reviewdog.d.ts.map +1 -0
- package/dist/agents/reviewdog.js +259 -0
- package/dist/agents/reviewdog.js.map +1 -0
- package/dist/agents/security.d.ts +49 -0
- package/dist/agents/security.d.ts.map +1 -0
- package/dist/agents/security.js +302 -0
- package/dist/agents/security.js.map +1 -0
- package/dist/agents/semgrep.d.ts +8 -0
- package/dist/agents/semgrep.d.ts.map +1 -0
- package/dist/agents/semgrep.js +157 -0
- package/dist/agents/semgrep.js.map +1 -0
- package/dist/agents/types.d.ts +450 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +127 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/budget.d.ts +59 -0
- package/dist/budget.d.ts.map +1 -0
- package/dist/budget.js +82 -0
- package/dist/budget.js.map +1 -0
- package/dist/cache/key.d.ts +49 -0
- package/dist/cache/key.d.ts.map +1 -0
- package/dist/cache/key.js +71 -0
- package/dist/cache/key.js.map +1 -0
- package/dist/cache/store.d.ts +47 -0
- package/dist/cache/store.d.ts.map +1 -0
- package/dist/cache/store.js +328 -0
- package/dist/cache/store.js.map +1 -0
- package/dist/cli/commands/check.d.ts +60 -0
- package/dist/cli/commands/check.d.ts.map +1 -0
- package/dist/cli/commands/check.js +163 -0
- package/dist/cli/commands/check.js.map +1 -0
- package/dist/cli/commands/index.d.ts +12 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +12 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/local-review.d.ts +149 -0
- package/dist/cli/commands/local-review.d.ts.map +1 -0
- package/dist/cli/commands/local-review.js +755 -0
- package/dist/cli/commands/local-review.js.map +1 -0
- package/dist/cli/config-wizard.d.ts +87 -0
- package/dist/cli/config-wizard.d.ts.map +1 -0
- package/dist/cli/config-wizard.js +240 -0
- package/dist/cli/config-wizard.js.map +1 -0
- package/dist/cli/dependencies/catalog.d.ts +44 -0
- package/dist/cli/dependencies/catalog.d.ts.map +1 -0
- package/dist/cli/dependencies/catalog.js +89 -0
- package/dist/cli/dependencies/catalog.js.map +1 -0
- package/dist/cli/dependencies/checker.d.ts +42 -0
- package/dist/cli/dependencies/checker.d.ts.map +1 -0
- package/dist/cli/dependencies/checker.js +240 -0
- package/dist/cli/dependencies/checker.js.map +1 -0
- package/dist/cli/dependencies/index.d.ts +16 -0
- package/dist/cli/dependencies/index.d.ts.map +1 -0
- package/dist/cli/dependencies/index.js +16 -0
- package/dist/cli/dependencies/index.js.map +1 -0
- package/dist/cli/dependencies/messages.d.ts +58 -0
- package/dist/cli/dependencies/messages.d.ts.map +1 -0
- package/dist/cli/dependencies/messages.js +183 -0
- package/dist/cli/dependencies/messages.js.map +1 -0
- package/dist/cli/dependencies/platform.d.ts +25 -0
- package/dist/cli/dependencies/platform.d.ts.map +1 -0
- package/dist/cli/dependencies/platform.js +42 -0
- package/dist/cli/dependencies/platform.js.map +1 -0
- package/dist/cli/dependencies/schemas.d.ts +65 -0
- package/dist/cli/dependencies/schemas.d.ts.map +1 -0
- package/dist/cli/dependencies/schemas.js +42 -0
- package/dist/cli/dependencies/schemas.js.map +1 -0
- package/dist/cli/dependencies/types.d.ts +112 -0
- package/dist/cli/dependencies/types.d.ts.map +1 -0
- package/dist/cli/dependencies/types.js +6 -0
- package/dist/cli/dependencies/types.js.map +1 -0
- package/dist/cli/dependencies/version.d.ts +67 -0
- package/dist/cli/dependencies/version.d.ts.map +1 -0
- package/dist/cli/dependencies/version.js +125 -0
- package/dist/cli/dependencies/version.js.map +1 -0
- package/dist/cli/git-context.d.ts +105 -0
- package/dist/cli/git-context.d.ts.map +1 -0
- package/dist/cli/git-context.js +313 -0
- package/dist/cli/git-context.js.map +1 -0
- package/dist/cli/interactive-prompts.d.ts +126 -0
- package/dist/cli/interactive-prompts.d.ts.map +1 -0
- package/dist/cli/interactive-prompts.js +128 -0
- package/dist/cli/interactive-prompts.js.map +1 -0
- package/dist/cli/options/index.d.ts +7 -0
- package/dist/cli/options/index.d.ts.map +1 -0
- package/dist/cli/options/index.js +11 -0
- package/dist/cli/options/index.js.map +1 -0
- package/dist/cli/options/local-review-options.d.ts +221 -0
- package/dist/cli/options/local-review-options.d.ts.map +1 -0
- package/dist/cli/options/local-review-options.js +332 -0
- package/dist/cli/options/local-review-options.js.map +1 -0
- package/dist/cli/output/colors.d.ts +154 -0
- package/dist/cli/output/colors.d.ts.map +1 -0
- package/dist/cli/output/colors.js +255 -0
- package/dist/cli/output/colors.js.map +1 -0
- package/dist/cli/output/errors.d.ts +157 -0
- package/dist/cli/output/errors.d.ts.map +1 -0
- package/dist/cli/output/errors.js +266 -0
- package/dist/cli/output/errors.js.map +1 -0
- package/dist/cli/output/index.d.ts +12 -0
- package/dist/cli/output/index.d.ts.map +1 -0
- package/dist/cli/output/index.js +15 -0
- package/dist/cli/output/index.js.map +1 -0
- package/dist/cli/output/progress.d.ts +237 -0
- package/dist/cli/output/progress.d.ts.map +1 -0
- package/dist/cli/output/progress.js +405 -0
- package/dist/cli/output/progress.js.map +1 -0
- package/dist/cli/signals.d.ts +145 -0
- package/dist/cli/signals.d.ts.map +1 -0
- package/dist/cli/signals.js +223 -0
- package/dist/cli/signals.js.map +1 -0
- package/dist/cli/validation-report.d.ts +106 -0
- package/dist/cli/validation-report.d.ts.map +1 -0
- package/dist/cli/validation-report.js +108 -0
- package/dist/cli/validation-report.js.map +1 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +12 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/mitigation-config.d.ts +94 -0
- package/dist/config/mitigation-config.d.ts.map +1 -0
- package/dist/config/mitigation-config.js +430 -0
- package/dist/config/mitigation-config.js.map +1 -0
- package/dist/config/providers.d.ts +118 -0
- package/dist/config/providers.d.ts.map +1 -0
- package/dist/config/providers.js +229 -0
- package/dist/config/providers.js.map +1 -0
- package/dist/config/schemas.d.ts +278 -0
- package/dist/config/schemas.d.ts.map +1 -0
- package/dist/config/schemas.js +111 -0
- package/dist/config/schemas.js.map +1 -0
- package/dist/config/zero-config.d.ts +126 -0
- package/dist/config/zero-config.d.ts.map +1 -0
- package/dist/config/zero-config.js +243 -0
- package/dist/config/zero-config.js.map +1 -0
- package/dist/config.d.ts +110 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +302 -0
- package/dist/config.js.map +1 -0
- package/dist/diff.d.ts +224 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +832 -0
- package/dist/diff.js.map +1 -0
- package/dist/git-validators.d.ts +106 -0
- package/dist/git-validators.d.ts.map +1 -0
- package/dist/git-validators.js +224 -0
- package/dist/git-validators.js.map +1 -0
- package/dist/main.d.ts +61 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +704 -0
- package/dist/main.js.map +1 -0
- package/dist/phases/execute.d.ts +60 -0
- package/dist/phases/execute.d.ts.map +1 -0
- package/dist/phases/execute.js +168 -0
- package/dist/phases/execute.js.map +1 -0
- package/dist/phases/index.d.ts +9 -0
- package/dist/phases/index.d.ts.map +1 -0
- package/dist/phases/index.js +9 -0
- package/dist/phases/index.js.map +1 -0
- package/dist/phases/preflight.d.ts +40 -0
- package/dist/phases/preflight.d.ts.map +1 -0
- package/dist/phases/preflight.js +122 -0
- package/dist/phases/preflight.js.map +1 -0
- package/dist/phases/report.d.ts +51 -0
- package/dist/phases/report.d.ts.map +1 -0
- package/dist/phases/report.js +152 -0
- package/dist/phases/report.js.map +1 -0
- package/dist/policy.d.ts +33 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +34 -0
- package/dist/policy.js.map +1 -0
- package/dist/preflight.d.ts +181 -0
- package/dist/preflight.d.ts.map +1 -0
- package/dist/preflight.js +627 -0
- package/dist/preflight.js.map +1 -0
- package/dist/report/ado.d.ts +53 -0
- package/dist/report/ado.d.ts.map +1 -0
- package/dist/report/ado.js +411 -0
- package/dist/report/ado.js.map +1 -0
- package/dist/report/agent-icons.d.ts +36 -0
- package/dist/report/agent-icons.d.ts.map +1 -0
- package/dist/report/agent-icons.js +46 -0
- package/dist/report/agent-icons.js.map +1 -0
- package/dist/report/base.d.ts +30 -0
- package/dist/report/base.d.ts.map +1 -0
- package/dist/report/base.js +64 -0
- package/dist/report/base.js.map +1 -0
- package/dist/report/formats.d.ts +206 -0
- package/dist/report/formats.d.ts.map +1 -0
- package/dist/report/formats.js +481 -0
- package/dist/report/formats.js.map +1 -0
- package/dist/report/github.d.ts +44 -0
- package/dist/report/github.d.ts.map +1 -0
- package/dist/report/github.js +409 -0
- package/dist/report/github.js.map +1 -0
- package/dist/report/line-resolver.d.ts +208 -0
- package/dist/report/line-resolver.d.ts.map +1 -0
- package/dist/report/line-resolver.js +578 -0
- package/dist/report/line-resolver.js.map +1 -0
- package/dist/report/resolution.d.ts +158 -0
- package/dist/report/resolution.d.ts.map +1 -0
- package/dist/report/resolution.js +272 -0
- package/dist/report/resolution.js.map +1 -0
- package/dist/report/sanitize.d.ts +32 -0
- package/dist/report/sanitize.d.ts.map +1 -0
- package/dist/report/sanitize.js +84 -0
- package/dist/report/sanitize.js.map +1 -0
- package/dist/report/terminal.d.ts +440 -0
- package/dist/report/terminal.d.ts.map +1 -0
- package/dist/report/terminal.js +840 -0
- package/dist/report/terminal.js.map +1 -0
- package/dist/reviewignore.d.ts +125 -0
- package/dist/reviewignore.d.ts.map +1 -0
- package/dist/reviewignore.js +335 -0
- package/dist/reviewignore.js.map +1 -0
- package/dist/security-logger.d.ts +178 -0
- package/dist/security-logger.d.ts.map +1 -0
- package/dist/security-logger.js +256 -0
- package/dist/security-logger.js.map +1 -0
- package/dist/telemetry/backends/console.d.ts +24 -0
- package/dist/telemetry/backends/console.d.ts.map +1 -0
- package/dist/telemetry/backends/console.js +54 -0
- package/dist/telemetry/backends/console.js.map +1 -0
- package/dist/telemetry/backends/jsonl.d.ts +31 -0
- package/dist/telemetry/backends/jsonl.d.ts.map +1 -0
- package/dist/telemetry/backends/jsonl.js +121 -0
- package/dist/telemetry/backends/jsonl.js.map +1 -0
- package/dist/telemetry/emitter.d.ts +43 -0
- package/dist/telemetry/emitter.d.ts.map +1 -0
- package/dist/telemetry/emitter.js +83 -0
- package/dist/telemetry/emitter.js.map +1 -0
- package/dist/telemetry/hook.d.ts +53 -0
- package/dist/telemetry/hook.d.ts.map +1 -0
- package/dist/telemetry/hook.js +118 -0
- package/dist/telemetry/hook.js.map +1 -0
- package/dist/telemetry/index.d.ts +58 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +143 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/types.d.ts +139 -0
- package/dist/telemetry/types.d.ts.map +1 -0
- package/dist/telemetry/types.js +133 -0
- package/dist/telemetry/types.js.map +1 -0
- package/dist/trust.d.ts +65 -0
- package/dist/trust.d.ts.map +1 -0
- package/dist/trust.js +78 -0
- package/dist/trust.js.map +1 -0
- package/dist/types/assert-never.d.ts +30 -0
- package/dist/types/assert-never.d.ts.map +1 -0
- package/dist/types/assert-never.js +32 -0
- package/dist/types/assert-never.js.map +1 -0
- package/dist/types/branded.d.ts +172 -0
- package/dist/types/branded.d.ts.map +1 -0
- package/dist/types/branded.js +262 -0
- package/dist/types/branded.js.map +1 -0
- package/dist/types/errors.d.ts +320 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +551 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/index.d.ts +37 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +77 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/result.d.ts +323 -0
- package/dist/types/result.d.ts.map +1 -0
- package/dist/types/result.js +423 -0
- package/dist/types/result.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-analyzer.js","sourceRoot":"","sources":["../../../src/agents/control_flow/path-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern Validator
|
|
3
|
+
*
|
|
4
|
+
* Validates regex patterns for ReDoS vulnerabilities before execution.
|
|
5
|
+
* Implements defense-in-depth alongside timeout protection.
|
|
6
|
+
*
|
|
7
|
+
* Implements:
|
|
8
|
+
* - FR-001: Validate user-provided regex patterns against known ReDoS patterns
|
|
9
|
+
* - FR-002: Reject patterns with nested quantifiers
|
|
10
|
+
* - FR-003: Reject patterns with overlapping alternations
|
|
11
|
+
* - FR-004: Provide independent validation function
|
|
12
|
+
* - FR-005: Allow whitelisting of verified-safe patterns
|
|
13
|
+
*/
|
|
14
|
+
import type { PatternValidationResult, ReDoSDetectionResult, ReDoSRiskLevel } from './types.js';
|
|
15
|
+
import { type AnalysisLogger } from './logger.js';
|
|
16
|
+
/**
|
|
17
|
+
* Configuration for the pattern validator.
|
|
18
|
+
*/
|
|
19
|
+
export interface PatternValidatorConfig {
|
|
20
|
+
/** Maximum time allowed for validation in milliseconds (default: 10ms) */
|
|
21
|
+
validationTimeoutMs: number;
|
|
22
|
+
/** Pattern IDs to skip validation (manually verified safe) */
|
|
23
|
+
whitelistedPatterns: string[];
|
|
24
|
+
/** Minimum risk level that causes rejection (default: 'medium') */
|
|
25
|
+
rejectionThreshold: ReDoSRiskLevel;
|
|
26
|
+
/** Whether to log validation results (default: true) */
|
|
27
|
+
enableLogging: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Check if a pattern contains nested quantifiers.
|
|
31
|
+
* Examples: (a+)+, (a*)+, (a+)*, (a*)*
|
|
32
|
+
*
|
|
33
|
+
* These patterns cause exponential backtracking.
|
|
34
|
+
*/
|
|
35
|
+
export declare function hasNestedQuantifiers(pattern: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Check if a pattern contains overlapping alternation.
|
|
38
|
+
* Examples: (a|a)+, (aa|a)+, (a|ab)+
|
|
39
|
+
*
|
|
40
|
+
* These patterns cause ambiguous matching paths.
|
|
41
|
+
*/
|
|
42
|
+
export declare function hasOverlappingAlternation(pattern: string): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Calculate the star-height (max nesting depth of Kleene operators).
|
|
45
|
+
* Star-height > 1 indicates potential exponential complexity.
|
|
46
|
+
*/
|
|
47
|
+
export declare function calculateStarHeight(pattern: string): number;
|
|
48
|
+
/**
|
|
49
|
+
* Compute overall ReDoS risk score (0-100).
|
|
50
|
+
* Higher score indicates higher risk.
|
|
51
|
+
*/
|
|
52
|
+
export declare function computeRiskScore(pattern: string): number;
|
|
53
|
+
/**
|
|
54
|
+
* Perform full ReDoS detection analysis on a pattern.
|
|
55
|
+
*/
|
|
56
|
+
export declare function detectReDoSPatterns(pattern: string): ReDoSDetectionResult;
|
|
57
|
+
/**
|
|
58
|
+
* Pattern Validator Interface
|
|
59
|
+
*
|
|
60
|
+
* Implementations MUST:
|
|
61
|
+
* - Validate patterns synchronously
|
|
62
|
+
* - Complete within configured timeout
|
|
63
|
+
* - Never throw exceptions (return result types)
|
|
64
|
+
* - Log validation decisions when logging enabled
|
|
65
|
+
*/
|
|
66
|
+
export interface IPatternValidator {
|
|
67
|
+
validatePattern(pattern: string, patternId: string): PatternValidationResult;
|
|
68
|
+
validatePatterns(patterns: {
|
|
69
|
+
pattern: string;
|
|
70
|
+
patternId: string;
|
|
71
|
+
}[]): PatternValidationResult[];
|
|
72
|
+
isWhitelisted(patternId: string): boolean;
|
|
73
|
+
getConfig(): PatternValidatorConfig;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Validates regex patterns for ReDoS vulnerabilities.
|
|
77
|
+
*
|
|
78
|
+
* Uses static analysis to detect known ReDoS patterns before execution.
|
|
79
|
+
* Combined with TimeoutRegex provides defense-in-depth protection.
|
|
80
|
+
*/
|
|
81
|
+
export declare class PatternValidator implements IPatternValidator {
|
|
82
|
+
private config;
|
|
83
|
+
private whitelistSet;
|
|
84
|
+
private logger;
|
|
85
|
+
constructor(config?: Partial<PatternValidatorConfig>, logger?: AnalysisLogger);
|
|
86
|
+
/**
|
|
87
|
+
* Clamp validation timeout to allowed range.
|
|
88
|
+
*/
|
|
89
|
+
private clampTimeout;
|
|
90
|
+
/**
|
|
91
|
+
* Check if a pattern ID is whitelisted.
|
|
92
|
+
*/
|
|
93
|
+
isWhitelisted(patternId: string): boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Get current validator configuration.
|
|
96
|
+
*/
|
|
97
|
+
getConfig(): PatternValidatorConfig;
|
|
98
|
+
/**
|
|
99
|
+
* Validate a single regex pattern for ReDoS vulnerabilities.
|
|
100
|
+
*/
|
|
101
|
+
validatePattern(pattern: string, patternId: string): PatternValidationResult;
|
|
102
|
+
/**
|
|
103
|
+
* Validate multiple patterns in batch.
|
|
104
|
+
*/
|
|
105
|
+
validatePatterns(patterns: {
|
|
106
|
+
pattern: string;
|
|
107
|
+
patternId: string;
|
|
108
|
+
}[]): PatternValidationResult[];
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Create a pattern validator with the given configuration.
|
|
112
|
+
*/
|
|
113
|
+
export declare function createPatternValidator(config?: Partial<PatternValidatorConfig>, logger?: AnalysisLogger): PatternValidator;
|
|
114
|
+
import { type MitigationPattern } from './types.js';
|
|
115
|
+
import { z } from 'zod';
|
|
116
|
+
/**
|
|
117
|
+
* Validate a mitigation pattern configuration with ReDoS protection.
|
|
118
|
+
*
|
|
119
|
+
* This extends the basic `validateMitigationPattern` from types.ts by also
|
|
120
|
+
* checking namePattern regex for ReDoS vulnerabilities.
|
|
121
|
+
*
|
|
122
|
+
* @param pattern - The pattern configuration to validate
|
|
123
|
+
* @param rejectionThreshold - Minimum risk level to reject ('low', 'medium', 'high')
|
|
124
|
+
*/
|
|
125
|
+
export declare function validateMitigationPatternWithReDoSCheck(pattern: unknown, rejectionThreshold?: ReDoSRiskLevel): {
|
|
126
|
+
success: true;
|
|
127
|
+
data: MitigationPattern;
|
|
128
|
+
} | {
|
|
129
|
+
success: false;
|
|
130
|
+
error: z.ZodError;
|
|
131
|
+
};
|
|
132
|
+
//# sourceMappingURL=pattern-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-validator.d.ts","sourceRoot":"","sources":["../../../src/agents/control_flow/pattern-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAmB7D;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,0EAA0E;IAC1E,mBAAmB,EAAE,MAAM,CAAC;IAC5B,8DAA8D;IAC9D,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,mEAAmE;IACnE,kBAAkB,EAAE,cAAc,CAAC;IACnC,wDAAwD;IACxD,aAAa,EAAE,OAAO,CAAC;CACxB;AA0CD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM7D;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAwClE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA+B3D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA0BxD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAmCzE;AAMD;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAC7E,gBAAgB,CAAC,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,uBAAuB,EAAE,CAAC;IAChG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1C,SAAS,IAAI,sBAAsB,CAAC;CACrC;AAMD;;;;;GAKG;AACH,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC,EAAE,cAAc;IAO7E;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIzC;;OAEG;IACH,SAAS,IAAI,sBAAsB;IAInC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,uBAAuB;IAqI5E;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,uBAAuB,EAAE;CAGhG;AAMD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,EACxC,MAAM,CAAC,EAAE,cAAc,GACtB,gBAAgB,CAElB;AAMD,OAAO,EAA6B,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,OAAO,EAChB,kBAAkB,GAAE,cAAyB,GAC5C;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAA;CAAE,CAuCpF"}
|
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern Validator
|
|
3
|
+
*
|
|
4
|
+
* Validates regex patterns for ReDoS vulnerabilities before execution.
|
|
5
|
+
* Implements defense-in-depth alongside timeout protection.
|
|
6
|
+
*
|
|
7
|
+
* Implements:
|
|
8
|
+
* - FR-001: Validate user-provided regex patterns against known ReDoS patterns
|
|
9
|
+
* - FR-002: Reject patterns with nested quantifiers
|
|
10
|
+
* - FR-003: Reject patterns with overlapping alternations
|
|
11
|
+
* - FR-004: Provide independent validation function
|
|
12
|
+
* - FR-005: Allow whitelisting of verified-safe patterns
|
|
13
|
+
*/
|
|
14
|
+
import { getLogger } from './logger.js';
|
|
15
|
+
// =============================================================================
|
|
16
|
+
// Constants
|
|
17
|
+
// =============================================================================
|
|
18
|
+
/** Default timeout for validation in milliseconds */
|
|
19
|
+
const DEFAULT_VALIDATION_TIMEOUT_MS = 10;
|
|
20
|
+
/** Minimum allowed validation timeout */
|
|
21
|
+
const MIN_VALIDATION_TIMEOUT_MS = 1;
|
|
22
|
+
/** Maximum allowed validation timeout */
|
|
23
|
+
const MAX_VALIDATION_TIMEOUT_MS = 100;
|
|
24
|
+
const DEFAULT_CONFIG = {
|
|
25
|
+
validationTimeoutMs: DEFAULT_VALIDATION_TIMEOUT_MS,
|
|
26
|
+
whitelistedPatterns: [],
|
|
27
|
+
rejectionThreshold: 'medium',
|
|
28
|
+
enableLogging: true,
|
|
29
|
+
};
|
|
30
|
+
// =============================================================================
|
|
31
|
+
// Risk Level Utilities
|
|
32
|
+
// =============================================================================
|
|
33
|
+
const RISK_LEVEL_ORDER = {
|
|
34
|
+
none: 0,
|
|
35
|
+
low: 1,
|
|
36
|
+
medium: 2,
|
|
37
|
+
high: 3,
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Compare two risk levels.
|
|
41
|
+
* Returns true if level >= threshold.
|
|
42
|
+
*/
|
|
43
|
+
function riskMeetsThreshold(level, threshold) {
|
|
44
|
+
return RISK_LEVEL_ORDER[level] >= RISK_LEVEL_ORDER[threshold];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Convert vulnerability score (0-100) to risk level.
|
|
48
|
+
*/
|
|
49
|
+
function scoreToRiskLevel(score) {
|
|
50
|
+
if (score >= 70)
|
|
51
|
+
return 'high';
|
|
52
|
+
if (score >= 40)
|
|
53
|
+
return 'medium';
|
|
54
|
+
if (score > 0)
|
|
55
|
+
return 'low';
|
|
56
|
+
return 'none';
|
|
57
|
+
}
|
|
58
|
+
// =============================================================================
|
|
59
|
+
// ReDoS Detection Utilities
|
|
60
|
+
// =============================================================================
|
|
61
|
+
/**
|
|
62
|
+
* Check if a pattern contains nested quantifiers.
|
|
63
|
+
* Examples: (a+)+, (a*)+, (a+)*, (a*)*
|
|
64
|
+
*
|
|
65
|
+
* These patterns cause exponential backtracking.
|
|
66
|
+
*/
|
|
67
|
+
export function hasNestedQuantifiers(pattern) {
|
|
68
|
+
// Match groups with quantifiers inside that are themselves quantified
|
|
69
|
+
// Pattern: \( ... [+*?] ... \) [+*?{]
|
|
70
|
+
// This is a simplified check - looks for quantified groups containing quantifiers
|
|
71
|
+
const nestedQuantifierRegex = /\([^)]*[+*][^)]*\)[+*?]|\([^)]*[+*][^)]*\)\{/;
|
|
72
|
+
return nestedQuantifierRegex.test(pattern);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Check if a pattern contains overlapping alternation.
|
|
76
|
+
* Examples: (a|a)+, (aa|a)+, (a|ab)+
|
|
77
|
+
*
|
|
78
|
+
* These patterns cause ambiguous matching paths.
|
|
79
|
+
*/
|
|
80
|
+
export function hasOverlappingAlternation(pattern) {
|
|
81
|
+
// This is a simplified heuristic check
|
|
82
|
+
// Look for alternations where branches share common prefixes and are quantified
|
|
83
|
+
// Pattern: \( branch | branch \) [+*?{]
|
|
84
|
+
const alternationRegex = /\([^|)]+\|[^)]+\)[+*?]|\([^|)]+\|[^)]+\)\{/;
|
|
85
|
+
if (!alternationRegex.test(pattern)) {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
// Extract alternations and check for overlapping patterns
|
|
89
|
+
const altMatch = pattern.match(/\(([^)]+)\)[+*?{]/g);
|
|
90
|
+
if (!altMatch)
|
|
91
|
+
return false;
|
|
92
|
+
for (const alt of altMatch) {
|
|
93
|
+
// Extract the content inside parentheses
|
|
94
|
+
const contentMatch = alt.match(/\(([^)]+)\)/);
|
|
95
|
+
const content = contentMatch?.[1];
|
|
96
|
+
if (!content || !content.includes('|'))
|
|
97
|
+
continue;
|
|
98
|
+
const branches = content.split('|');
|
|
99
|
+
// Check if any branch is a prefix of another
|
|
100
|
+
for (let i = 0; i < branches.length; i++) {
|
|
101
|
+
for (let j = 0; j < branches.length; j++) {
|
|
102
|
+
if (i !== j) {
|
|
103
|
+
const branchA = branches[i];
|
|
104
|
+
const branchB = branches[j];
|
|
105
|
+
if (branchA && branchB) {
|
|
106
|
+
const a = branchA.trim();
|
|
107
|
+
const b = branchB.trim();
|
|
108
|
+
// Check for common prefix
|
|
109
|
+
if (a.length > 0 && b.length > 0 && (a.startsWith(b) || b.startsWith(a))) {
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Calculate the star-height (max nesting depth of Kleene operators).
|
|
121
|
+
* Star-height > 1 indicates potential exponential complexity.
|
|
122
|
+
*/
|
|
123
|
+
export function calculateStarHeight(pattern) {
|
|
124
|
+
let maxHeight = 0;
|
|
125
|
+
let currentHeight = 0;
|
|
126
|
+
let inQuantifiedGroup = false;
|
|
127
|
+
for (let i = 0; i < pattern.length; i++) {
|
|
128
|
+
const char = pattern[i];
|
|
129
|
+
const prevChar = i > 0 ? pattern[i - 1] : '';
|
|
130
|
+
if (char === '(' && prevChar !== '\\') {
|
|
131
|
+
if (inQuantifiedGroup) {
|
|
132
|
+
currentHeight++;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else if (char === ')' && prevChar !== '\\') {
|
|
136
|
+
// Check if this group is quantified
|
|
137
|
+
const nextChar = pattern[i + 1];
|
|
138
|
+
if (nextChar === '+' || nextChar === '*' || nextChar === '?' || nextChar === '{') {
|
|
139
|
+
inQuantifiedGroup = true;
|
|
140
|
+
currentHeight++;
|
|
141
|
+
maxHeight = Math.max(maxHeight, currentHeight);
|
|
142
|
+
}
|
|
143
|
+
if (currentHeight > 0) {
|
|
144
|
+
currentHeight--;
|
|
145
|
+
}
|
|
146
|
+
if (currentHeight === 0) {
|
|
147
|
+
inQuantifiedGroup = false;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return maxHeight;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Compute overall ReDoS risk score (0-100).
|
|
155
|
+
* Higher score indicates higher risk.
|
|
156
|
+
*/
|
|
157
|
+
export function computeRiskScore(pattern) {
|
|
158
|
+
let score = 0;
|
|
159
|
+
// Nested quantifiers: high risk (+50)
|
|
160
|
+
if (hasNestedQuantifiers(pattern)) {
|
|
161
|
+
score += 50;
|
|
162
|
+
}
|
|
163
|
+
// Overlapping alternation: medium-high risk (+30)
|
|
164
|
+
if (hasOverlappingAlternation(pattern)) {
|
|
165
|
+
score += 30;
|
|
166
|
+
}
|
|
167
|
+
// Star height > 1: additional risk
|
|
168
|
+
const starHeight = calculateStarHeight(pattern);
|
|
169
|
+
if (starHeight > 1) {
|
|
170
|
+
score += Math.min(starHeight * 10, 20); // Cap at +20
|
|
171
|
+
}
|
|
172
|
+
// Long patterns with many quantifiers: slight additional risk
|
|
173
|
+
const quantifierCount = (pattern.match(/[+*?]|\{\d+/g) || []).length;
|
|
174
|
+
if (quantifierCount > 5) {
|
|
175
|
+
score += Math.min((quantifierCount - 5) * 2, 10); // Cap at +10
|
|
176
|
+
}
|
|
177
|
+
return Math.min(score, 100);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Perform full ReDoS detection analysis on a pattern.
|
|
181
|
+
*/
|
|
182
|
+
export function detectReDoSPatterns(pattern) {
|
|
183
|
+
const detectedPatterns = [];
|
|
184
|
+
const nested = hasNestedQuantifiers(pattern);
|
|
185
|
+
if (nested) {
|
|
186
|
+
detectedPatterns.push('nested_quantifiers');
|
|
187
|
+
}
|
|
188
|
+
const overlapping = hasOverlappingAlternation(pattern);
|
|
189
|
+
if (overlapping) {
|
|
190
|
+
detectedPatterns.push('overlapping_alternation');
|
|
191
|
+
}
|
|
192
|
+
const starHeight = calculateStarHeight(pattern);
|
|
193
|
+
if (starHeight > 1) {
|
|
194
|
+
detectedPatterns.push(`star_height_${starHeight}`);
|
|
195
|
+
}
|
|
196
|
+
// Check for quantified overlapping groups pattern: (.*a){n}
|
|
197
|
+
const quantifiedOverlapRegex = /\(\.\*[^)]+\)\{|\([^)]*\.\*\)\{/;
|
|
198
|
+
const hasQuantifiedOverlap = quantifiedOverlapRegex.test(pattern);
|
|
199
|
+
if (hasQuantifiedOverlap) {
|
|
200
|
+
detectedPatterns.push('quantified_overlap');
|
|
201
|
+
}
|
|
202
|
+
const vulnerabilityScore = computeRiskScore(pattern);
|
|
203
|
+
return {
|
|
204
|
+
hasNestedQuantifiers: nested,
|
|
205
|
+
hasOverlappingAlternation: overlapping,
|
|
206
|
+
hasQuantifiedOverlap,
|
|
207
|
+
starHeight,
|
|
208
|
+
vulnerabilityScore,
|
|
209
|
+
detectedPatterns,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
// =============================================================================
|
|
213
|
+
// Pattern Validator Class
|
|
214
|
+
// =============================================================================
|
|
215
|
+
/**
|
|
216
|
+
* Validates regex patterns for ReDoS vulnerabilities.
|
|
217
|
+
*
|
|
218
|
+
* Uses static analysis to detect known ReDoS patterns before execution.
|
|
219
|
+
* Combined with TimeoutRegex provides defense-in-depth protection.
|
|
220
|
+
*/
|
|
221
|
+
export class PatternValidator {
|
|
222
|
+
config;
|
|
223
|
+
whitelistSet;
|
|
224
|
+
logger;
|
|
225
|
+
constructor(config, logger) {
|
|
226
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
227
|
+
this.config.validationTimeoutMs = this.clampTimeout(this.config.validationTimeoutMs);
|
|
228
|
+
this.whitelistSet = new Set(this.config.whitelistedPatterns);
|
|
229
|
+
this.logger = logger ?? getLogger();
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Clamp validation timeout to allowed range.
|
|
233
|
+
*/
|
|
234
|
+
clampTimeout(timeout) {
|
|
235
|
+
if (timeout < MIN_VALIDATION_TIMEOUT_MS)
|
|
236
|
+
return MIN_VALIDATION_TIMEOUT_MS;
|
|
237
|
+
if (timeout > MAX_VALIDATION_TIMEOUT_MS)
|
|
238
|
+
return MAX_VALIDATION_TIMEOUT_MS;
|
|
239
|
+
return Math.floor(timeout);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Check if a pattern ID is whitelisted.
|
|
243
|
+
*/
|
|
244
|
+
isWhitelisted(patternId) {
|
|
245
|
+
return this.whitelistSet.has(patternId);
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Get current validator configuration.
|
|
249
|
+
*/
|
|
250
|
+
getConfig() {
|
|
251
|
+
return { ...this.config };
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Validate a single regex pattern for ReDoS vulnerabilities.
|
|
255
|
+
*/
|
|
256
|
+
validatePattern(pattern, patternId) {
|
|
257
|
+
const startTime = process.hrtime.bigint();
|
|
258
|
+
// Check whitelist first
|
|
259
|
+
if (this.isWhitelisted(patternId)) {
|
|
260
|
+
const elapsedMs = Number(process.hrtime.bigint() - startTime) / 1_000_000;
|
|
261
|
+
if (this.config.enableLogging) {
|
|
262
|
+
this.logger.log('debug', 'pattern_timeout', `Pattern ${patternId} whitelisted, skipping validation`, {
|
|
263
|
+
patternId,
|
|
264
|
+
whitelisted: true,
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
return {
|
|
268
|
+
pattern,
|
|
269
|
+
patternId,
|
|
270
|
+
isValid: true,
|
|
271
|
+
rejectionReasons: [],
|
|
272
|
+
redosRisk: 'none',
|
|
273
|
+
validationTimeMs: elapsedMs,
|
|
274
|
+
whitelisted: true,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
// Try to compile the pattern first to catch syntax errors
|
|
278
|
+
try {
|
|
279
|
+
// Trust: REPO_CONFIG - Pattern from validated config, used for syntax validation only
|
|
280
|
+
// Control: Compilation test, pattern not executed against untrusted input here
|
|
281
|
+
// See docs/security/regex-threat-model.md
|
|
282
|
+
// eslint-disable-next-line security/detect-non-literal-regexp -- Validated config pattern
|
|
283
|
+
new RegExp(pattern);
|
|
284
|
+
}
|
|
285
|
+
catch (error) {
|
|
286
|
+
const elapsedMs = Number(process.hrtime.bigint() - startTime) / 1_000_000;
|
|
287
|
+
const errorMessage = error instanceof Error ? error.message : 'Invalid regex syntax';
|
|
288
|
+
if (this.config.enableLogging) {
|
|
289
|
+
this.logger.log('warn', 'pattern_timeout', `Pattern ${patternId} failed compilation: ${errorMessage}`, {
|
|
290
|
+
patternId,
|
|
291
|
+
error: errorMessage,
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
return {
|
|
295
|
+
pattern,
|
|
296
|
+
patternId,
|
|
297
|
+
isValid: false,
|
|
298
|
+
rejectionReasons: [`Compilation error: ${errorMessage}`],
|
|
299
|
+
redosRisk: 'high', // Treat compilation errors as high risk
|
|
300
|
+
validationTimeMs: elapsedMs,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
// Perform ReDoS detection
|
|
304
|
+
const detection = detectReDoSPatterns(pattern);
|
|
305
|
+
const riskLevel = scoreToRiskLevel(detection.vulnerabilityScore);
|
|
306
|
+
const elapsedMs = Number(process.hrtime.bigint() - startTime) / 1_000_000;
|
|
307
|
+
// Build rejection reasons
|
|
308
|
+
const rejectionReasons = [];
|
|
309
|
+
if (detection.hasNestedQuantifiers) {
|
|
310
|
+
rejectionReasons.push('Pattern contains nested quantifiers (e.g., (a+)+) which can cause exponential backtracking');
|
|
311
|
+
}
|
|
312
|
+
if (detection.hasOverlappingAlternation) {
|
|
313
|
+
rejectionReasons.push('Pattern contains overlapping alternation (e.g., (a|ab)+) which can cause ambiguous matching');
|
|
314
|
+
}
|
|
315
|
+
if (detection.hasQuantifiedOverlap) {
|
|
316
|
+
rejectionReasons.push('Pattern contains quantified overlapping groups (e.g., (.*a){n}) which can cause quadratic behavior');
|
|
317
|
+
}
|
|
318
|
+
if (detection.starHeight > 1) {
|
|
319
|
+
rejectionReasons.push(`Pattern has star-height of ${detection.starHeight} (nested Kleene closures)`);
|
|
320
|
+
}
|
|
321
|
+
// Determine if pattern should be rejected based on risk threshold
|
|
322
|
+
const shouldReject = riskMeetsThreshold(riskLevel, this.config.rejectionThreshold);
|
|
323
|
+
const isValid = !shouldReject;
|
|
324
|
+
if (this.config.enableLogging) {
|
|
325
|
+
if (isValid) {
|
|
326
|
+
this.logger.log('debug', 'pattern_timeout', `Pattern ${patternId} validated successfully`, {
|
|
327
|
+
patternId,
|
|
328
|
+
riskLevel,
|
|
329
|
+
score: detection.vulnerabilityScore,
|
|
330
|
+
elapsedMs,
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
this.logger.log('warn', 'pattern_timeout', `Pattern ${patternId} rejected: ${rejectionReasons.join('; ')}`, {
|
|
335
|
+
patternId,
|
|
336
|
+
riskLevel,
|
|
337
|
+
score: detection.vulnerabilityScore,
|
|
338
|
+
reasons: rejectionReasons,
|
|
339
|
+
elapsedMs,
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return {
|
|
344
|
+
pattern,
|
|
345
|
+
patternId,
|
|
346
|
+
isValid,
|
|
347
|
+
rejectionReasons: isValid ? [] : rejectionReasons,
|
|
348
|
+
redosRisk: riskLevel,
|
|
349
|
+
validationTimeMs: elapsedMs,
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Validate multiple patterns in batch.
|
|
354
|
+
*/
|
|
355
|
+
validatePatterns(patterns) {
|
|
356
|
+
return patterns.map(({ pattern, patternId }) => this.validatePattern(pattern, patternId));
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
// =============================================================================
|
|
360
|
+
// Factory Function
|
|
361
|
+
// =============================================================================
|
|
362
|
+
/**
|
|
363
|
+
* Create a pattern validator with the given configuration.
|
|
364
|
+
*/
|
|
365
|
+
export function createPatternValidator(config, logger) {
|
|
366
|
+
return new PatternValidator(config, logger);
|
|
367
|
+
}
|
|
368
|
+
// =============================================================================
|
|
369
|
+
// Mitigation Pattern Validation with ReDoS Check
|
|
370
|
+
// =============================================================================
|
|
371
|
+
import { validateMitigationPattern } from './types.js';
|
|
372
|
+
import { z } from 'zod';
|
|
373
|
+
/**
|
|
374
|
+
* Validate a mitigation pattern configuration with ReDoS protection.
|
|
375
|
+
*
|
|
376
|
+
* This extends the basic `validateMitigationPattern` from types.ts by also
|
|
377
|
+
* checking namePattern regex for ReDoS vulnerabilities.
|
|
378
|
+
*
|
|
379
|
+
* @param pattern - The pattern configuration to validate
|
|
380
|
+
* @param rejectionThreshold - Minimum risk level to reject ('low', 'medium', 'high')
|
|
381
|
+
*/
|
|
382
|
+
export function validateMitigationPatternWithReDoSCheck(pattern, rejectionThreshold = 'medium') {
|
|
383
|
+
// First, validate syntax
|
|
384
|
+
const syntaxResult = validateMitigationPattern(pattern);
|
|
385
|
+
if (!syntaxResult.success) {
|
|
386
|
+
return syntaxResult;
|
|
387
|
+
}
|
|
388
|
+
const data = syntaxResult.data;
|
|
389
|
+
// Check namePattern for ReDoS if present
|
|
390
|
+
if (data.match.namePattern) {
|
|
391
|
+
const score = computeRiskScore(data.match.namePattern);
|
|
392
|
+
// Convert score to risk level (mirrors scoreToRiskLevel)
|
|
393
|
+
let level;
|
|
394
|
+
if (score >= 70)
|
|
395
|
+
level = 'high';
|
|
396
|
+
else if (score >= 40)
|
|
397
|
+
level = 'medium';
|
|
398
|
+
else if (score > 0)
|
|
399
|
+
level = 'low';
|
|
400
|
+
else
|
|
401
|
+
level = 'none';
|
|
402
|
+
// Reject if: threshold is not 'none', level is not 'none', and level meets threshold
|
|
403
|
+
if (rejectionThreshold !== 'none' &&
|
|
404
|
+
level !== 'none' &&
|
|
405
|
+
riskMeetsThreshold(level, rejectionThreshold)) {
|
|
406
|
+
return {
|
|
407
|
+
success: false,
|
|
408
|
+
error: new z.ZodError([
|
|
409
|
+
{
|
|
410
|
+
code: 'custom',
|
|
411
|
+
path: ['match', 'namePattern'],
|
|
412
|
+
message: `Pattern has ${level} ReDoS risk and may cause denial-of-service`,
|
|
413
|
+
},
|
|
414
|
+
]),
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
return { success: true, data };
|
|
419
|
+
}
|
|
420
|
+
//# sourceMappingURL=pattern-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-validator.js","sourceRoot":"","sources":["../../../src/agents/control_flow/pattern-validator.ts"],"names":[],"mappings":"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"}
|