@agentic-qe/v3 3.0.0-alpha.6 → 3.0.0-alpha.8
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/assets/agents/v3/subagents/v3-qe-code-reviewer.md +339 -0
- package/assets/agents/v3/subagents/v3-qe-integration-reviewer.md +344 -0
- package/assets/agents/v3/subagents/v3-qe-performance-reviewer.md +351 -0
- package/assets/agents/v3/subagents/v3-qe-security-reviewer.md +374 -0
- package/assets/agents/v3/subagents/v3-qe-tdd-green.md +334 -0
- package/assets/agents/v3/subagents/v3-qe-tdd-red.md +329 -0
- package/assets/agents/v3/subagents/v3-qe-tdd-refactor.md +361 -0
- package/assets/agents/v3/v3-qe-accessibility-auditor.md +266 -0
- package/assets/agents/v3/v3-qe-bdd-generator.md +279 -0
- package/assets/agents/v3/v3-qe-chaos-engineer.md +265 -0
- package/assets/agents/v3/v3-qe-code-complexity.md +298 -0
- package/assets/agents/v3/v3-qe-code-intelligence.md +262 -0
- package/assets/agents/v3/v3-qe-contract-validator.md +267 -0
- package/assets/agents/v3/v3-qe-coverage-specialist.md +227 -0
- package/assets/agents/v3/v3-qe-defect-predictor.md +251 -0
- package/assets/agents/v3/v3-qe-dependency-mapper.md +277 -0
- package/assets/agents/v3/v3-qe-deployment-advisor.md +275 -0
- package/assets/agents/v3/v3-qe-flaky-hunter.md +248 -0
- package/assets/agents/v3/v3-qe-fleet-commander.md +293 -0
- package/assets/agents/v3/v3-qe-gap-detector.md +260 -0
- package/assets/agents/v3/v3-qe-graphql-tester.md +308 -0
- package/assets/agents/v3/v3-qe-impact-analyzer.md +299 -0
- package/assets/agents/v3/v3-qe-integration-tester.md +238 -0
- package/assets/agents/v3/v3-qe-kg-builder.md +273 -0
- package/assets/agents/v3/v3-qe-learning-coordinator.md +226 -0
- package/assets/agents/v3/v3-qe-load-tester.md +280 -0
- package/assets/agents/v3/v3-qe-metrics-optimizer.md +300 -0
- package/assets/agents/v3/v3-qe-mutation-tester.md +301 -0
- package/assets/agents/v3/v3-qe-parallel-executor.md +240 -0
- package/assets/agents/v3/v3-qe-pattern-learner.md +271 -0
- package/assets/agents/v3/v3-qe-performance-tester.md +262 -0
- package/assets/agents/v3/v3-qe-property-tester.md +247 -0
- package/assets/agents/v3/v3-qe-quality-gate.md +218 -0
- package/assets/agents/v3/v3-qe-queen-coordinator.md +214 -0
- package/assets/agents/v3/v3-qe-qx-partner.md +313 -0
- package/assets/agents/v3/v3-qe-regression-analyzer.md +322 -0
- package/assets/agents/v3/v3-qe-requirements-validator.md +360 -0
- package/assets/agents/v3/v3-qe-responsive-tester.md +311 -0
- package/assets/agents/v3/v3-qe-retry-handler.md +256 -0
- package/assets/agents/v3/v3-qe-risk-assessor.md +273 -0
- package/assets/agents/v3/v3-qe-root-cause-analyzer.md +286 -0
- package/assets/agents/v3/v3-qe-security-auditor.md +299 -0
- package/assets/agents/v3/v3-qe-security-scanner.md +235 -0
- package/assets/agents/v3/v3-qe-tdd-specialist.md +239 -0
- package/assets/agents/v3/v3-qe-test-architect.md +233 -0
- package/assets/agents/v3/v3-qe-transfer-specialist.md +295 -0
- package/assets/agents/v3/v3-qe-visual-tester.md +232 -0
- package/assets/skills/accessibility-testing/SKILL.md +216 -0
- package/assets/skills/agentdb-advanced/SKILL.md +550 -0
- package/assets/skills/agentdb-learning/SKILL.md +545 -0
- package/assets/skills/agentdb-memory-patterns/SKILL.md +339 -0
- package/assets/skills/agentdb-optimization/SKILL.md +509 -0
- package/assets/skills/agentdb-vector-search/SKILL.md +339 -0
- package/assets/skills/agentic-jujutsu/SKILL.md +645 -0
- package/assets/skills/agentic-quality-engineering/SKILL.md +335 -0
- package/assets/skills/api-testing-patterns/SKILL.md +294 -0
- package/assets/skills/aqe-v2-v3-migration/skill.md +322 -0
- package/assets/skills/brutal-honesty-review/README.md +218 -0
- package/assets/skills/brutal-honesty-review/SKILL.md +235 -0
- package/assets/skills/brutal-honesty-review/resources/assessment-rubrics.md +295 -0
- package/assets/skills/brutal-honesty-review/resources/review-template.md +102 -0
- package/assets/skills/brutal-honesty-review/scripts/assess-code.sh +179 -0
- package/assets/skills/brutal-honesty-review/scripts/assess-tests.sh +223 -0
- package/assets/skills/bug-reporting-excellence/SKILL.md +225 -0
- package/assets/skills/chaos-engineering-resilience/SKILL.md +158 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/README.md +304 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/SKILL.md +315 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/resources/workflows/microservice-pipeline.md +239 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/resources/workflows/mobile-pipeline.md +375 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/resources/workflows/monolith-pipeline.md +268 -0
- package/assets/skills/code-review-quality/SKILL.md +227 -0
- package/assets/skills/compatibility-testing/SKILL.md +205 -0
- package/assets/skills/compliance-testing/SKILL.md +225 -0
- package/assets/skills/consultancy-practices/SKILL.md +202 -0
- package/assets/skills/context-driven-testing/SKILL.md +196 -0
- package/assets/skills/contract-testing/SKILL.md +222 -0
- package/assets/skills/database-testing/SKILL.md +244 -0
- package/assets/skills/exploratory-testing-advanced/SKILL.md +201 -0
- package/assets/skills/flow-nexus-neural/SKILL.md +738 -0
- package/assets/skills/flow-nexus-platform/SKILL.md +1157 -0
- package/assets/skills/flow-nexus-swarm/SKILL.md +610 -0
- package/assets/skills/github-code-review/SKILL.md +1140 -0
- package/assets/skills/github-multi-repo/SKILL.md +874 -0
- package/assets/skills/github-project-management/SKILL.md +1277 -0
- package/assets/skills/github-release-management/SKILL.md +1081 -0
- package/assets/skills/github-workflow-automation/SKILL.md +1065 -0
- package/assets/skills/hive-mind-advanced/SKILL.md +712 -0
- package/assets/skills/holistic-testing-pact/SKILL.md +171 -0
- package/assets/skills/hooks-automation/SKILL.md +1201 -0
- package/assets/skills/localization-testing/SKILL.md +221 -0
- package/assets/skills/mobile-testing/SKILL.md +219 -0
- package/assets/skills/mutation-testing/SKILL.md +229 -0
- package/assets/skills/n8n-expression-testing/SKILL.md +434 -0
- package/assets/skills/n8n-integration-testing-patterns/SKILL.md +540 -0
- package/assets/skills/n8n-security-testing/SKILL.md +599 -0
- package/assets/skills/n8n-trigger-testing-strategies/SKILL.md +541 -0
- package/assets/skills/n8n-workflow-testing-fundamentals/SKILL.md +447 -0
- package/assets/skills/pair-programming/SKILL.md +1202 -0
- package/assets/skills/performance-analysis/SKILL.md +563 -0
- package/assets/skills/performance-testing/SKILL.md +310 -0
- package/assets/skills/quality-metrics/SKILL.md +225 -0
- package/assets/skills/reasoningbank-agentdb/SKILL.md +446 -0
- package/assets/skills/reasoningbank-intelligence/SKILL.md +201 -0
- package/assets/skills/refactoring-patterns/SKILL.md +205 -0
- package/assets/skills/regression-testing/SKILL.md +227 -0
- package/assets/skills/risk-based-testing/SKILL.md +206 -0
- package/assets/skills/security-testing/SKILL.md +306 -0
- package/assets/skills/sherlock-review/SKILL.md +250 -0
- package/assets/skills/shift-left-testing/SKILL.md +225 -0
- package/assets/skills/shift-right-testing/SKILL.md +227 -0
- package/assets/skills/six-thinking-hats/README.md +190 -0
- package/assets/skills/six-thinking-hats/SKILL.md +280 -0
- package/assets/skills/six-thinking-hats/resources/examples/api-testing-example.md +345 -0
- package/assets/skills/six-thinking-hats/resources/templates/solo-session-template.md +167 -0
- package/assets/skills/six-thinking-hats/resources/templates/team-session-template.md +336 -0
- package/assets/skills/skill-builder/SKILL.md +910 -0
- package/assets/skills/sparc-methodology/SKILL.md +1115 -0
- package/assets/skills/stream-chain/SKILL.md +563 -0
- package/assets/skills/swarm-advanced/SKILL.md +973 -0
- package/assets/skills/swarm-orchestration/SKILL.md +179 -0
- package/assets/skills/tdd-london-chicago/SKILL.md +244 -0
- package/assets/skills/technical-writing/SKILL.md +178 -0
- package/assets/skills/test-automation-strategy/SKILL.md +230 -0
- package/assets/skills/test-data-management/SKILL.md +270 -0
- package/assets/skills/test-design-techniques/SKILL.md +244 -0
- package/assets/skills/test-environment-management/SKILL.md +243 -0
- package/assets/skills/test-reporting-analytics/SKILL.md +214 -0
- package/assets/skills/testability-scoring/README.md +71 -0
- package/assets/skills/testability-scoring/SKILL.md +346 -0
- package/assets/skills/testability-scoring/resources/templates/config.template.js +84 -0
- package/assets/skills/testability-scoring/resources/templates/testability-scoring.spec.template.js +532 -0
- package/assets/skills/testability-scoring/scripts/generate-html-report.js +1007 -0
- package/assets/skills/testability-scoring/scripts/run-assessment.sh +70 -0
- package/assets/skills/v3-qe-chaos-resilience/SKILL.md +238 -0
- package/assets/skills/v3-qe-code-intelligence/SKILL.md +209 -0
- package/assets/skills/v3-qe-contract-testing/SKILL.md +218 -0
- package/assets/skills/v3-qe-coverage-analysis/SKILL.md +187 -0
- package/assets/skills/v3-qe-defect-intelligence/SKILL.md +205 -0
- package/assets/skills/v3-qe-learning-optimization/SKILL.md +238 -0
- package/assets/skills/v3-qe-quality-assessment/SKILL.md +213 -0
- package/assets/skills/v3-qe-requirements-validation/SKILL.md +248 -0
- package/assets/skills/v3-qe-test-execution/SKILL.md +182 -0
- package/assets/skills/v3-qe-test-generation/SKILL.md +141 -0
- package/assets/skills/v3-qe-visual-accessibility/SKILL.md +242 -0
- package/assets/skills/verification-quality/SKILL.md +649 -0
- package/assets/skills/visual-testing-advanced/SKILL.md +219 -0
- package/assets/skills/xp-practices/SKILL.md +229 -0
- package/dist/cli/bundle.js +23 -13
- package/dist/init/agents-installer.js +4 -4
- package/dist/init/agents-installer.js.map +1 -1
- package/dist/init/init-wizard.d.ts.map +1 -1
- package/dist/init/init-wizard.js +15 -5
- package/dist/init/init-wizard.js.map +1 -1
- package/dist/init/skills-installer.js +4 -4
- package/dist/init/skills-installer.js.map +1 -1
- package/package.json +7 -1
- package/docs/analysis/V3-INIT-REQUIREMENTS-ANALYSIS.md +0 -352
- package/implementation/README.md +0 -90
- package/implementation/adrs/ADR-030-coherence-gated-quality-gates.md +0 -312
- package/implementation/adrs/ADR-031-strange-loop-self-awareness.md +0 -484
- package/implementation/adrs/ADR-032-time-crystal-scheduling.md +0 -530
- package/implementation/adrs/ADR-033-early-exit-testing.md +0 -634
- package/implementation/adrs/ADR-034-neural-topology-optimizer.md +0 -589
- package/implementation/adrs/ADR-035-causal-discovery.md +0 -610
- package/implementation/adrs/ADR-036-result-persistence.md +0 -326
- package/implementation/adrs/ADR-037-v3-qe-agent-naming.md +0 -105
- package/implementation/adrs/ADR-038-v3-qe-memory-unification.md +0 -154
- package/implementation/adrs/ADR-039-v3-qe-mcp-optimization.md +0 -179
- package/implementation/adrs/ADR-040-v3-qe-agentic-flow-integration.md +0 -240
- package/implementation/adrs/ADR-041-v3-qe-cli-enhancement.md +0 -296
- package/implementation/adrs/ADR-042-v3-qe-token-tracking-integration.md +0 -517
- package/implementation/adrs/v3-adrs.md +0 -2783
- package/implementation/planning/AQE-V3-MASTER-PLAN.md +0 -815
- package/security-scan-report-2026-01-11.md +0 -410
- package/security-verification-report-2026-01-11.md +0 -278
- package/src/benchmarks/performance-benchmarks.ts +0 -646
- package/src/benchmarks/run-benchmarks.ts +0 -324
- package/src/causal-discovery/causal-graph.ts +0 -450
- package/src/causal-discovery/discovery-engine.ts +0 -438
- package/src/causal-discovery/index.ts +0 -117
- package/src/causal-discovery/types.ts +0 -456
- package/src/causal-discovery/weight-matrix.ts +0 -453
- package/src/cli/commands/qe-tools.ts +0 -634
- package/src/cli/index.ts +0 -1976
- package/src/compatibility/agent-mapper.ts +0 -291
- package/src/compatibility/cli-adapter.ts +0 -277
- package/src/compatibility/config-migrator.ts +0 -334
- package/src/compatibility/index.ts +0 -112
- package/src/compatibility/mcp-adapter.ts +0 -248
- package/src/compatibility/types.ts +0 -156
- package/src/coordination/claims/claim-repository.ts +0 -636
- package/src/coordination/claims/claim-service.ts +0 -675
- package/src/coordination/claims/handoff-manager.ts +0 -535
- package/src/coordination/claims/index.ts +0 -276
- package/src/coordination/claims/interfaces.ts +0 -687
- package/src/coordination/claims/work-stealing.ts +0 -436
- package/src/coordination/cross-domain-router.ts +0 -492
- package/src/coordination/index.ts +0 -127
- package/src/coordination/interfaces.ts +0 -691
- package/src/coordination/protocol-executor.ts +0 -760
- package/src/coordination/protocols/code-intelligence-index.ts +0 -855
- package/src/coordination/protocols/defect-investigation.ts +0 -1184
- package/src/coordination/protocols/index.ts +0 -11
- package/src/coordination/protocols/learning-consolidation.ts +0 -1181
- package/src/coordination/protocols/morning-sync.ts +0 -1055
- package/src/coordination/protocols/quality-gate.ts +0 -1566
- package/src/coordination/protocols/security-audit.ts +0 -1587
- package/src/coordination/queen-coordinator.ts +0 -1176
- package/src/coordination/result-saver.ts +0 -780
- package/src/coordination/task-executor.ts +0 -1146
- package/src/coordination/workflow-orchestrator.ts +0 -1917
- package/src/domains/chaos-resilience/coordinator.ts +0 -1032
- package/src/domains/chaos-resilience/index.ts +0 -143
- package/src/domains/chaos-resilience/interfaces.ts +0 -659
- package/src/domains/chaos-resilience/plugin.ts +0 -691
- package/src/domains/chaos-resilience/services/chaos-engineer.ts +0 -1097
- package/src/domains/chaos-resilience/services/index.ts +0 -19
- package/src/domains/chaos-resilience/services/load-tester.ts +0 -799
- package/src/domains/chaos-resilience/services/performance-profiler.ts +0 -792
- package/src/domains/code-intelligence/coordinator.ts +0 -631
- package/src/domains/code-intelligence/index.ts +0 -86
- package/src/domains/code-intelligence/interfaces.ts +0 -162
- package/src/domains/code-intelligence/plugin.ts +0 -451
- package/src/domains/code-intelligence/services/impact-analyzer.ts +0 -567
- package/src/domains/code-intelligence/services/index.ts +0 -26
- package/src/domains/code-intelligence/services/knowledge-graph.ts +0 -1067
- package/src/domains/code-intelligence/services/semantic-analyzer.ts +0 -901
- package/src/domains/contract-testing/coordinator.ts +0 -1038
- package/src/domains/contract-testing/index.ts +0 -122
- package/src/domains/contract-testing/interfaces.ts +0 -458
- package/src/domains/contract-testing/plugin.ts +0 -746
- package/src/domains/contract-testing/services/api-compatibility.ts +0 -748
- package/src/domains/contract-testing/services/contract-validator.ts +0 -1700
- package/src/domains/contract-testing/services/index.ts +0 -19
- package/src/domains/contract-testing/services/schema-validator.ts +0 -1102
- package/src/domains/coverage-analysis/coordinator.ts +0 -485
- package/src/domains/coverage-analysis/index.ts +0 -114
- package/src/domains/coverage-analysis/interfaces.ts +0 -142
- package/src/domains/coverage-analysis/plugin.ts +0 -172
- package/src/domains/coverage-analysis/services/coverage-analyzer.ts +0 -449
- package/src/domains/coverage-analysis/services/coverage-embedder.ts +0 -733
- package/src/domains/coverage-analysis/services/coverage-parser.ts +0 -753
- package/src/domains/coverage-analysis/services/gap-detector.ts +0 -592
- package/src/domains/coverage-analysis/services/hnsw-index.ts +0 -728
- package/src/domains/coverage-analysis/services/index.ts +0 -61
- package/src/domains/coverage-analysis/services/risk-scorer.ts +0 -540
- package/src/domains/coverage-analysis/services/sublinear-analyzer.ts +0 -747
- package/src/domains/defect-intelligence/coordinator.ts +0 -635
- package/src/domains/defect-intelligence/index.ts +0 -83
- package/src/domains/defect-intelligence/interfaces.ts +0 -152
- package/src/domains/defect-intelligence/plugin.ts +0 -483
- package/src/domains/defect-intelligence/services/causal-root-cause-analyzer.ts +0 -494
- package/src/domains/defect-intelligence/services/defect-predictor.ts +0 -852
- package/src/domains/defect-intelligence/services/index.ts +0 -37
- package/src/domains/defect-intelligence/services/pattern-learner.ts +0 -738
- package/src/domains/defect-intelligence/services/root-cause-analyzer.ts +0 -637
- package/src/domains/domain-interface.ts +0 -77
- package/src/domains/index.ts +0 -23
- package/src/domains/learning-optimization/coordinator.ts +0 -1215
- package/src/domains/learning-optimization/index.ts +0 -127
- package/src/domains/learning-optimization/interfaces.ts +0 -570
- package/src/domains/learning-optimization/plugin.ts +0 -851
- package/src/domains/learning-optimization/services/index.ts +0 -29
- package/src/domains/learning-optimization/services/learning-coordinator.ts +0 -972
- package/src/domains/learning-optimization/services/metrics-optimizer.ts +0 -915
- package/src/domains/learning-optimization/services/production-intel.ts +0 -971
- package/src/domains/learning-optimization/services/transfer-specialist.ts +0 -723
- package/src/domains/quality-assessment/coherence/gate-controller.ts +0 -549
- package/src/domains/quality-assessment/coherence/index.ts +0 -211
- package/src/domains/quality-assessment/coherence/lambda-calculator.ts +0 -384
- package/src/domains/quality-assessment/coherence/partition-detector.ts +0 -469
- package/src/domains/quality-assessment/coherence/types.ts +0 -384
- package/src/domains/quality-assessment/coordinator.ts +0 -605
- package/src/domains/quality-assessment/index.ts +0 -97
- package/src/domains/quality-assessment/interfaces.ts +0 -152
- package/src/domains/quality-assessment/plugin.ts +0 -496
- package/src/domains/quality-assessment/services/coherence-gate.ts +0 -358
- package/src/domains/quality-assessment/services/deployment-advisor.ts +0 -571
- package/src/domains/quality-assessment/services/index.ts +0 -34
- package/src/domains/quality-assessment/services/quality-analyzer.ts +0 -670
- package/src/domains/quality-assessment/services/quality-gate.ts +0 -384
- package/src/domains/requirements-validation/coordinator.ts +0 -812
- package/src/domains/requirements-validation/index.ts +0 -92
- package/src/domains/requirements-validation/interfaces.ts +0 -303
- package/src/domains/requirements-validation/plugin.ts +0 -576
- package/src/domains/requirements-validation/services/bdd-scenario-writer.ts +0 -676
- package/src/domains/requirements-validation/services/index.ts +0 -20
- package/src/domains/requirements-validation/services/requirements-validator.ts +0 -559
- package/src/domains/requirements-validation/services/testability-scorer.ts +0 -639
- package/src/domains/security-compliance/coordinator.ts +0 -757
- package/src/domains/security-compliance/index.ts +0 -120
- package/src/domains/security-compliance/interfaces.ts +0 -434
- package/src/domains/security-compliance/plugin.ts +0 -509
- package/src/domains/security-compliance/services/compliance-validator.ts +0 -1226
- package/src/domains/security-compliance/services/index.ts +0 -31
- package/src/domains/security-compliance/services/security-auditor.ts +0 -2227
- package/src/domains/security-compliance/services/security-scanner.ts +0 -2354
- package/src/domains/security-compliance/services/semgrep-integration.ts +0 -289
- package/src/domains/test-execution/coordinator.ts +0 -426
- package/src/domains/test-execution/index.ts +0 -76
- package/src/domains/test-execution/interfaces.ts +0 -119
- package/src/domains/test-execution/plugin.ts +0 -208
- package/src/domains/test-execution/services/flaky-detector.ts +0 -1240
- package/src/domains/test-execution/services/index.ts +0 -8
- package/src/domains/test-execution/services/retry-handler.ts +0 -820
- package/src/domains/test-execution/services/test-executor.ts +0 -885
- package/src/domains/test-generation/coordinator.ts +0 -656
- package/src/domains/test-generation/index.ts +0 -77
- package/src/domains/test-generation/interfaces.ts +0 -118
- package/src/domains/test-generation/plugin.ts +0 -397
- package/src/domains/test-generation/services/index.ts +0 -23
- package/src/domains/test-generation/services/pattern-matcher.ts +0 -1725
- package/src/domains/test-generation/services/test-generator.ts +0 -2750
- package/src/domains/visual-accessibility/coordinator.ts +0 -860
- package/src/domains/visual-accessibility/index.ts +0 -116
- package/src/domains/visual-accessibility/interfaces.ts +0 -435
- package/src/domains/visual-accessibility/plugin.ts +0 -568
- package/src/domains/visual-accessibility/services/accessibility-tester.ts +0 -982
- package/src/domains/visual-accessibility/services/axe-core-audit.ts +0 -630
- package/src/domains/visual-accessibility/services/index.ts +0 -28
- package/src/domains/visual-accessibility/services/responsive-tester.ts +0 -934
- package/src/domains/visual-accessibility/services/visual-tester.ts +0 -458
- package/src/early-exit/early-exit-controller.ts +0 -490
- package/src/early-exit/early-exit-decision.ts +0 -391
- package/src/early-exit/index.ts +0 -115
- package/src/early-exit/quality-signal.ts +0 -389
- package/src/early-exit/speculative-executor.ts +0 -505
- package/src/early-exit/types.ts +0 -407
- package/src/feedback/coverage-learner.ts +0 -456
- package/src/feedback/feedback-loop.ts +0 -426
- package/src/feedback/index.ts +0 -72
- package/src/feedback/pattern-promotion.ts +0 -373
- package/src/feedback/quality-score-calculator.ts +0 -334
- package/src/feedback/test-outcome-tracker.ts +0 -450
- package/src/feedback/types.ts +0 -497
- package/src/index.ts +0 -224
- package/src/init/agents-installer.ts +0 -536
- package/src/init/index.ts +0 -80
- package/src/init/init-wizard.ts +0 -1061
- package/src/init/project-analyzer.ts +0 -696
- package/src/init/self-configurator.ts +0 -488
- package/src/init/skills-installer.ts +0 -467
- package/src/init/types.ts +0 -432
- package/src/integrations/ruvector/ast-complexity.ts +0 -470
- package/src/integrations/ruvector/coverage-router.ts +0 -594
- package/src/integrations/ruvector/diff-risk-classifier.ts +0 -759
- package/src/integrations/ruvector/fallback.ts +0 -942
- package/src/integrations/ruvector/graph-boundaries.ts +0 -809
- package/src/integrations/ruvector/index.ts +0 -363
- package/src/integrations/ruvector/interfaces.ts +0 -609
- package/src/integrations/ruvector/q-learning-router.ts +0 -550
- package/src/kernel/agent-coordinator.ts +0 -165
- package/src/kernel/agentdb-backend.ts +0 -504
- package/src/kernel/event-bus.ts +0 -129
- package/src/kernel/hybrid-backend.ts +0 -538
- package/src/kernel/index.ts +0 -28
- package/src/kernel/interfaces.ts +0 -257
- package/src/kernel/kernel.ts +0 -285
- package/src/kernel/memory-backend.ts +0 -169
- package/src/kernel/memory-factory.ts +0 -293
- package/src/kernel/plugin-loader.ts +0 -179
- package/src/learning/index.ts +0 -219
- package/src/learning/pattern-store.ts +0 -990
- package/src/learning/qe-guidance.ts +0 -832
- package/src/learning/qe-hooks.ts +0 -644
- package/src/learning/qe-patterns.ts +0 -449
- package/src/learning/qe-reasoning-bank.ts +0 -951
- package/src/learning/real-embeddings.ts +0 -277
- package/src/learning/real-qe-reasoning-bank.ts +0 -833
- package/src/learning/sqlite-persistence.ts +0 -554
- package/src/mcp/entry.ts +0 -59
- package/src/mcp/handlers/agent-handlers.ts +0 -285
- package/src/mcp/handlers/core-handlers.ts +0 -317
- package/src/mcp/handlers/domain-handlers.ts +0 -1444
- package/src/mcp/handlers/index.ts +0 -57
- package/src/mcp/handlers/memory-handlers.ts +0 -338
- package/src/mcp/handlers/task-handlers.ts +0 -363
- package/src/mcp/index.ts +0 -30
- package/src/mcp/metrics/index.ts +0 -14
- package/src/mcp/metrics/metrics-collector.ts +0 -503
- package/src/mcp/protocol-server.ts +0 -752
- package/src/mcp/security/cve-prevention.ts +0 -742
- package/src/mcp/security/index.ts +0 -356
- package/src/mcp/security/oauth21-provider.ts +0 -821
- package/src/mcp/security/rate-limiter.ts +0 -615
- package/src/mcp/security/sampling-server.ts +0 -662
- package/src/mcp/security/schema-validator.ts +0 -855
- package/src/mcp/server.ts +0 -657
- package/src/mcp/tool-registry.ts +0 -391
- package/src/mcp/tools/base.ts +0 -399
- package/src/mcp/tools/chaos-resilience/inject.ts +0 -699
- package/src/mcp/tools/code-intelligence/analyze.ts +0 -745
- package/src/mcp/tools/contract-testing/validate.ts +0 -708
- package/src/mcp/tools/coverage-analysis/index.ts +0 -770
- package/src/mcp/tools/defect-intelligence/predict.ts +0 -466
- package/src/mcp/tools/index.ts +0 -214
- package/src/mcp/tools/learning-optimization/optimize.ts +0 -772
- package/src/mcp/tools/quality-assessment/evaluate.ts +0 -385
- package/src/mcp/tools/registry.ts +0 -248
- package/src/mcp/tools/requirements-validation/validate.ts +0 -394
- package/src/mcp/tools/security-compliance/scan.ts +0 -365
- package/src/mcp/tools/test-execution/execute.ts +0 -291
- package/src/mcp/tools/test-generation/generate.ts +0 -544
- package/src/mcp/tools/visual-accessibility/index.ts +0 -791
- package/src/mcp/transport/index.ts +0 -31
- package/src/mcp/transport/stdio.ts +0 -318
- package/src/mcp/types.ts +0 -543
- package/src/neural-optimizer/index.ts +0 -111
- package/src/neural-optimizer/replay-buffer.ts +0 -455
- package/src/neural-optimizer/swarm-topology.ts +0 -508
- package/src/neural-optimizer/topology-optimizer.ts +0 -828
- package/src/neural-optimizer/types.ts +0 -481
- package/src/neural-optimizer/value-network.ts +0 -351
- package/src/optimization/auto-tuner.ts +0 -817
- package/src/optimization/index.ts +0 -77
- package/src/optimization/metric-collectors.ts +0 -474
- package/src/optimization/qe-workers.ts +0 -704
- package/src/optimization/tuning-algorithm.ts +0 -401
- package/src/optimization/types.ts +0 -314
- package/src/routing/index.ts +0 -51
- package/src/routing/qe-agent-registry.ts +0 -963
- package/src/routing/qe-task-router.ts +0 -564
- package/src/routing/routing-feedback.ts +0 -365
- package/src/routing/types.ts +0 -406
- package/src/shared/embeddings/embedding-cache.ts +0 -157
- package/src/shared/embeddings/index.ts +0 -50
- package/src/shared/embeddings/nomic-embedder.ts +0 -404
- package/src/shared/embeddings/ollama-client.ts +0 -195
- package/src/shared/embeddings/types.ts +0 -147
- package/src/shared/entities/agent.ts +0 -141
- package/src/shared/entities/base-entity.ts +0 -79
- package/src/shared/entities/index.ts +0 -6
- package/src/shared/events/domain-events.ts +0 -259
- package/src/shared/events/index.ts +0 -5
- package/src/shared/git/git-analyzer.ts +0 -656
- package/src/shared/git/index.ts +0 -11
- package/src/shared/http/http-client.ts +0 -420
- package/src/shared/http/index.ts +0 -13
- package/src/shared/index.ts +0 -41
- package/src/shared/io/file-reader.ts +0 -525
- package/src/shared/io/index.ts +0 -25
- package/src/shared/llm/cache.ts +0 -473
- package/src/shared/llm/circuit-breaker.ts +0 -369
- package/src/shared/llm/cost-tracker.ts +0 -460
- package/src/shared/llm/index.ts +0 -140
- package/src/shared/llm/interfaces.ts +0 -629
- package/src/shared/llm/provider-manager.ts +0 -685
- package/src/shared/llm/providers/claude.ts +0 -524
- package/src/shared/llm/providers/index.ts +0 -8
- package/src/shared/llm/providers/ollama.ts +0 -575
- package/src/shared/llm/providers/openai.ts +0 -609
- package/src/shared/metrics/code-metrics.ts +0 -520
- package/src/shared/metrics/index.ts +0 -23
- package/src/shared/metrics/system-metrics.ts +0 -353
- package/src/shared/parsers/index.ts +0 -6
- package/src/shared/parsers/typescript-parser.ts +0 -841
- package/src/shared/security/compliance-patterns.ts +0 -666
- package/src/shared/security/index.ts +0 -30
- package/src/shared/security/osv-client.ts +0 -468
- package/src/shared/types/index.ts +0 -150
- package/src/shared/value-objects/index.ts +0 -273
- package/src/strange-loop/healing-controller.ts +0 -833
- package/src/strange-loop/index.ts +0 -104
- package/src/strange-loop/self-model.ts +0 -494
- package/src/strange-loop/strange-loop.ts +0 -446
- package/src/strange-loop/swarm-observer.ts +0 -448
- package/src/strange-loop/topology-analyzer.ts +0 -565
- package/src/strange-loop/types.ts +0 -640
- package/src/time-crystal/default-phases.ts +0 -520
- package/src/time-crystal/index.ts +0 -164
- package/src/time-crystal/oscillator.ts +0 -425
- package/src/time-crystal/phase-executor.ts +0 -521
- package/src/time-crystal/scheduler.ts +0 -1025
- package/src/time-crystal/test-runner.ts +0 -787
- package/src/time-crystal/types.ts +0 -421
- package/src/workers/base-worker.ts +0 -304
- package/src/workers/daemon.ts +0 -264
- package/src/workers/index.ts +0 -119
- package/src/workers/interfaces.ts +0 -393
- package/src/workers/worker-manager.ts +0 -424
- package/src/workers/workers/compliance-checker.ts +0 -445
- package/src/workers/workers/coverage-tracker.ts +0 -344
- package/src/workers/workers/defect-predictor.ts +0 -375
- package/src/workers/workers/flaky-detector.ts +0 -390
- package/src/workers/workers/index.ts +0 -17
- package/src/workers/workers/learning-consolidation.ts +0 -442
- package/src/workers/workers/performance-baseline.ts +0 -434
- package/src/workers/workers/quality-gate.ts +0 -419
- package/src/workers/workers/regression-monitor.ts +0 -357
- package/src/workers/workers/security-scan.ts +0 -349
- package/src/workers/workers/test-health.ts +0 -359
- package/tests/integration/code-intelligence/knowledge-graph-real.test.ts +0 -540
- package/tests/integration/coordination/cross-domain-router.test.ts +0 -403
- package/tests/integration/coordination/protocol-executor.test.ts +0 -454
- package/tests/integration/coordination/workflow-orchestrator.test.ts +0 -418
- package/tests/integration/feedback/feedback-loop-integration.test.ts +0 -560
- package/tests/integration/migration/v2-to-v3-migration.test.ts +0 -471
- package/tests/integration/parsers/typescript-parser.test.ts +0 -463
- package/tests/integration/security/vulnerability-detection.test.ts +0 -628
- package/tests/integration/test-execution/coordinator.test.ts +0 -410
- package/tests/integration/test-generation/coordinator.test.ts +0 -361
- package/tests/mocks/index.ts +0 -228
- package/tests/time-crystal/default-phases.test.ts +0 -476
- package/tests/time-crystal/oscillator.test.ts +0 -541
- package/tests/time-crystal/phase-executor.test.ts +0 -653
- package/tests/time-crystal/scheduler.test.ts +0 -626
- package/tests/time-crystal/test-runner.test.ts +0 -594
- package/tests/unit/causal-discovery/causal-graph.test.ts +0 -504
- package/tests/unit/causal-discovery/causal-root-cause-analyzer.test.ts +0 -347
- package/tests/unit/causal-discovery/discovery-engine.test.ts +0 -435
- package/tests/unit/causal-discovery/weight-matrix.test.ts +0 -328
- package/tests/unit/cli/cli.test.ts +0 -341
- package/tests/unit/cli/commands.test.ts +0 -414
- package/tests/unit/cli/init-command.test.ts +0 -274
- package/tests/unit/cli/migrate-command.test.ts +0 -396
- package/tests/unit/coordination/claims/claim-service.test.ts +0 -949
- package/tests/unit/coordination/claims/handoff-manager.test.ts +0 -773
- package/tests/unit/coordination/claims/work-stealing.test.ts +0 -492
- package/tests/unit/coordination/queen-coordinator.test.ts +0 -966
- package/tests/unit/coordination/result-saver.test.ts +0 -653
- package/tests/unit/coordination/task-executor.test.ts +0 -810
- package/tests/unit/domains/chaos-resilience/chaos-engineer.test.ts +0 -484
- package/tests/unit/domains/chaos-resilience/load-tester.test.ts +0 -559
- package/tests/unit/domains/chaos-resilience/performance-profiler.test.ts +0 -490
- package/tests/unit/domains/code-intelligence/impact-analyzer.test.ts +0 -560
- package/tests/unit/domains/code-intelligence/knowledge-graph.test.ts +0 -460
- package/tests/unit/domains/code-intelligence/semantic-analyzer.test.ts +0 -584
- package/tests/unit/domains/contract-testing/api-compatibility.test.ts +0 -483
- package/tests/unit/domains/contract-testing/contract-validator.test.ts +0 -370
- package/tests/unit/domains/contract-testing/schema-validator.test.ts +0 -610
- package/tests/unit/domains/coverage-analysis/coverage-embedder.test.ts +0 -298
- package/tests/unit/domains/coverage-analysis/hnsw-index.test.ts +0 -292
- package/tests/unit/domains/coverage-analysis/sublinear-analyzer.test.ts +0 -506
- package/tests/unit/domains/defect-intelligence/defect-predictor.test.ts +0 -370
- package/tests/unit/domains/defect-intelligence/pattern-learner.test.ts +0 -546
- package/tests/unit/domains/defect-intelligence/root-cause-analyzer.test.ts +0 -534
- package/tests/unit/domains/learning-optimization/learning-coordinator.test.ts +0 -541
- package/tests/unit/domains/learning-optimization/metrics-optimizer.test.ts +0 -552
- package/tests/unit/domains/learning-optimization/production-intel.test.ts +0 -589
- package/tests/unit/domains/learning-optimization/transfer-specialist.test.ts +0 -453
- package/tests/unit/domains/quality-assessment/coherence-gate.test.ts +0 -1006
- package/tests/unit/domains/quality-assessment/deployment-advisor.test.ts +0 -515
- package/tests/unit/domains/quality-assessment/quality-analyzer.test.ts +0 -401
- package/tests/unit/domains/quality-assessment/quality-gate.test.ts +0 -324
- package/tests/unit/domains/requirements-validation/bdd-scenario-writer.test.ts +0 -479
- package/tests/unit/domains/requirements-validation/requirements-validator.test.ts +0 -452
- package/tests/unit/domains/requirements-validation/testability-scorer.test.ts +0 -505
- package/tests/unit/domains/security-compliance/compliance-validator.test.ts +0 -500
- package/tests/unit/domains/security-compliance/security-auditor.test.ts +0 -498
- package/tests/unit/domains/security-compliance/security-scanner.test.ts +0 -412
- package/tests/unit/domains/visual-accessibility/accessibility-tester.test.ts +0 -432
- package/tests/unit/domains/visual-accessibility/responsive-tester.test.ts +0 -506
- package/tests/unit/domains/visual-accessibility/visual-tester.test.ts +0 -412
- package/tests/unit/early-exit/early-exit-controller.test.ts +0 -548
- package/tests/unit/early-exit/early-exit-decision.test.ts +0 -617
- package/tests/unit/early-exit/index.test.ts +0 -254
- package/tests/unit/early-exit/quality-signal.test.ts +0 -589
- package/tests/unit/early-exit/speculative-executor.test.ts +0 -453
- package/tests/unit/feedback/coverage-learner.test.ts +0 -288
- package/tests/unit/feedback/feedback-loop.test.ts +0 -458
- package/tests/unit/feedback/pattern-promotion.test.ts +0 -390
- package/tests/unit/feedback/quality-score-calculator.test.ts +0 -364
- package/tests/unit/feedback/test-outcome-tracker.test.ts +0 -243
- package/tests/unit/init/init-wizard.test.ts +0 -881
- package/tests/unit/init/project-analyzer.test.ts +0 -807
- package/tests/unit/init/self-configurator.test.ts +0 -493
- package/tests/unit/integrations/ruvector/ast-complexity.test.ts +0 -240
- package/tests/unit/integrations/ruvector/coverage-router.test.ts +0 -366
- package/tests/unit/integrations/ruvector/diff-risk-classifier.test.ts +0 -340
- package/tests/unit/integrations/ruvector/graph-boundaries.test.ts +0 -355
- package/tests/unit/integrations/ruvector/q-learning-router.test.ts +0 -314
- package/tests/unit/kernel/agent-coordinator.test.ts +0 -220
- package/tests/unit/kernel/event-bus.test.ts +0 -197
- package/tests/unit/learning/qe-reasoning-bank.test.ts +0 -666
- package/tests/unit/learning/real-qe-reasoning-bank.benchmark.test.ts +0 -415
- package/tests/unit/mcp/mcp-server.test.ts +0 -544
- package/tests/unit/mcp/metrics/metrics-collector.test.ts +0 -340
- package/tests/unit/mcp/security/cve-prevention.test.ts +0 -512
- package/tests/unit/mcp/security/oauth21-provider.test.ts +0 -624
- package/tests/unit/mcp/security/rate-limiter.test.ts +0 -410
- package/tests/unit/mcp/security/sampling-server.test.ts +0 -420
- package/tests/unit/mcp/security/schema-validator.test.ts +0 -494
- package/tests/unit/mcp/tools/base.test.ts +0 -336
- package/tests/unit/mcp/tools/domain-tools.test.ts +0 -759
- package/tests/unit/mcp/tools/registry.test.ts +0 -240
- package/tests/unit/neural-optimizer/replay-buffer.test.ts +0 -403
- package/tests/unit/neural-optimizer/swarm-topology.test.ts +0 -473
- package/tests/unit/neural-optimizer/topology-optimizer.test.ts +0 -595
- package/tests/unit/neural-optimizer/value-network.test.ts +0 -343
- package/tests/unit/optimization/auto-tuner.test.ts +0 -506
- package/tests/unit/optimization/metric-collectors.test.ts +0 -352
- package/tests/unit/optimization/qe-workers.test.ts +0 -407
- package/tests/unit/optimization/tuning-algorithm.test.ts +0 -467
- package/tests/unit/routing/qe-agent-registry.test.ts +0 -229
- package/tests/unit/routing/qe-task-router.test.ts +0 -390
- package/tests/unit/routing/routing-feedback.test.ts +0 -339
- package/tests/unit/shared/embeddings/nomic-embedder.test.ts +0 -419
- package/tests/unit/shared/http/http-client.test.ts +0 -719
- package/tests/unit/shared/io/file-reader.test.ts +0 -511
- package/tests/unit/shared/llm/cache.test.ts +0 -391
- package/tests/unit/shared/llm/circuit-breaker.test.ts +0 -293
- package/tests/unit/shared/llm/cost-tracker.test.ts +0 -431
- package/tests/unit/shared/llm/provider-manager.test.ts +0 -550
- package/tests/unit/shared/llm/providers.test.ts +0 -532
- package/tests/unit/shared/parsers/typescript-parser.test.ts +0 -693
- package/tests/unit/shared/value-objects.test.ts +0 -184
- package/tests/unit/strange-loop/strange-loop.test.ts +0 -1170
- package/tests/unit/workers/base-worker.test.ts +0 -341
- package/tests/unit/workers/daemon.test.ts +0 -291
- package/tests/unit/workers/worker-manager.test.ts +0 -284
- package/tsconfig.json +0 -32
- package/vitest.config.ts +0 -27
|
@@ -1,410 +0,0 @@
|
|
|
1
|
-
# Security Scan Report - Agentic QE v3
|
|
2
|
-
|
|
3
|
-
**Date:** 2026-01-11
|
|
4
|
-
**Scanner:** V3 QE Security Scanner
|
|
5
|
-
**Target:** `/workspaces/agentic-qe/v3/src/`
|
|
6
|
-
**Files Scanned:** 166+ TypeScript files
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## Executive Summary
|
|
11
|
-
|
|
12
|
-
| Severity | Count | Status |
|
|
13
|
-
|----------|-------|--------|
|
|
14
|
-
| Critical | 0 | Pass |
|
|
15
|
-
| High | 3 | Action Required |
|
|
16
|
-
| Medium | 5 | Recommended |
|
|
17
|
-
| Low | 7 | Informational |
|
|
18
|
-
| **Total** | **15** | |
|
|
19
|
-
|
|
20
|
-
**Overall Assessment:** The codebase demonstrates **strong security posture** with comprehensive security controls including path traversal prevention, input validation, rate limiting, OAuth 2.1, and timing-safe authentication. However, several areas require attention.
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## Vulnerability Findings
|
|
25
|
-
|
|
26
|
-
### HIGH Severity (3)
|
|
27
|
-
|
|
28
|
-
#### HIGH-001: Command Injection Risk in Git Analyzer
|
|
29
|
-
**Location:** `/workspaces/agentic-qe/v3/src/shared/git/git-analyzer.ts`
|
|
30
|
-
**Lines:** 96, 122, 156, 204, 212, 266, 299, 309, 319, 331, 359, 401, 428, 455
|
|
31
|
-
**CWE:** CWE-78 (Improper Neutralization of Special Elements used in an OS Command)
|
|
32
|
-
**OWASP:** A03:2021 - Injection
|
|
33
|
-
|
|
34
|
-
**Description:**
|
|
35
|
-
The `GitAnalyzer` class uses `execSync()` to execute git commands with file paths that are passed through string interpolation. While the file paths are sanitized via `getRelativePath()`, the bug keywords in `getBugHistory()` are directly interpolated into the command:
|
|
36
|
-
|
|
37
|
-
```typescript
|
|
38
|
-
// Line 264-271
|
|
39
|
-
const keywords = this.config.bugKeywords.join('|');
|
|
40
|
-
const output = execSync(
|
|
41
|
-
`git log --oneline --grep="${keywords}" -i -- "${relativePath}" 2>/dev/null | wc -l`,
|
|
42
|
-
// ...
|
|
43
|
-
);
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
**Risk:** If `bugKeywords` configuration is externally controllable, an attacker could inject shell commands.
|
|
47
|
-
|
|
48
|
-
**Remediation:**
|
|
49
|
-
1. Use `execFileSync()` with argument arrays instead of `execSync()` with string interpolation
|
|
50
|
-
2. Validate and sanitize all configuration values before use
|
|
51
|
-
3. Use the existing `validateCommand()` from CVE Prevention utilities
|
|
52
|
-
|
|
53
|
-
**Fix Example:**
|
|
54
|
-
```typescript
|
|
55
|
-
import { execFileSync } from 'child_process';
|
|
56
|
-
|
|
57
|
-
// Instead of:
|
|
58
|
-
execSync(`git log --oneline -- "${path}"`)
|
|
59
|
-
|
|
60
|
-
// Use:
|
|
61
|
-
execFileSync('git', ['log', '--oneline', '--', path])
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
#### HIGH-002: Command Injection in Chaos Engineering Service
|
|
67
|
-
**Location:** `/workspaces/agentic-qe/v3/src/domains/chaos-resilience/services/chaos-engineer.ts`
|
|
68
|
-
**Lines:** 567, 995
|
|
69
|
-
**CWE:** CWE-78 (OS Command Injection)
|
|
70
|
-
**OWASP:** A03:2021 - Injection
|
|
71
|
-
|
|
72
|
-
**Description:**
|
|
73
|
-
The chaos engineer service executes commands via `exec()` with potentially untrusted input:
|
|
74
|
-
|
|
75
|
-
```typescript
|
|
76
|
-
// Line 567
|
|
77
|
-
exec(probe.target, { timeout }, (error, stdout, _stderr) => {
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
The `probe.target` value comes from chaos experiment configuration which may be user-controllable.
|
|
81
|
-
|
|
82
|
-
**Risk:** Arbitrary command execution if experiment configurations are not properly validated.
|
|
83
|
-
|
|
84
|
-
**Remediation:**
|
|
85
|
-
1. Whitelist allowed commands for probes
|
|
86
|
-
2. Use the `validateCommand()` utility from `/workspaces/agentic-qe/v3/src/mcp/security/cve-prevention.ts`
|
|
87
|
-
3. Implement strict input validation for experiment configurations
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
#### HIGH-003: Shell Spawn with shell:true Option
|
|
92
|
-
**Location:** `/workspaces/agentic-qe/v3/src/domains/test-execution/services/test-executor.ts`
|
|
93
|
-
**Line:** 352-353
|
|
94
|
-
**CWE:** CWE-78 (OS Command Injection)
|
|
95
|
-
**OWASP:** A03:2021 - Injection
|
|
96
|
-
|
|
97
|
-
**Description:**
|
|
98
|
-
The test executor spawns processes with `shell: true`:
|
|
99
|
-
|
|
100
|
-
```typescript
|
|
101
|
-
const proc: ChildProcess = spawn(command, args, {
|
|
102
|
-
shell: true,
|
|
103
|
-
cwd: process.cwd(),
|
|
104
|
-
// ...
|
|
105
|
-
});
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
**Risk:** Using `shell: true` enables shell metacharacter interpretation, creating command injection vectors if arguments are not properly sanitized.
|
|
109
|
-
|
|
110
|
-
**Remediation:**
|
|
111
|
-
1. Remove `shell: true` option where possible
|
|
112
|
-
2. Use argument arrays without shell interpretation
|
|
113
|
-
3. Sanitize all command arguments using `escapeShellArg()` from CVE Prevention
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
### MEDIUM Severity (5)
|
|
118
|
-
|
|
119
|
-
#### MED-001: SQL Statement Construction via String Concatenation
|
|
120
|
-
**Location:** `/workspaces/agentic-qe/v3/src/learning/sqlite-persistence.ts`
|
|
121
|
-
**Line:** 513
|
|
122
|
-
**CWE:** CWE-89 (SQL Injection)
|
|
123
|
-
|
|
124
|
-
**Description:**
|
|
125
|
-
Dynamic SQL is constructed using string concatenation:
|
|
126
|
-
|
|
127
|
-
```typescript
|
|
128
|
-
const sql = `UPDATE qe_patterns SET ${setClauses.join(', ')} WHERE id = ?`;
|
|
129
|
-
this.db.prepare(sql).run(...values);
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
**Mitigating Factors:**
|
|
133
|
-
- Column names are hardcoded, not user input
|
|
134
|
-
- Values use parameterized queries
|
|
135
|
-
- This is a LOW risk implementation
|
|
136
|
-
|
|
137
|
-
**Remediation:**
|
|
138
|
-
- Validate column names against a whitelist before concatenation
|
|
139
|
-
- Consider using a query builder library
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
#### MED-002: Extensive Use of console.log for Debugging
|
|
144
|
-
**Location:** 45 files across the codebase
|
|
145
|
-
**CWE:** CWE-532 (Insertion of Sensitive Information into Log File)
|
|
146
|
-
|
|
147
|
-
**Description:**
|
|
148
|
-
The codebase contains extensive `console.log()` statements that may inadvertently log sensitive information in production:
|
|
149
|
-
|
|
150
|
-
Key files with logging:
|
|
151
|
-
- `/workspaces/agentic-qe/v3/src/learning/sqlite-persistence.ts`
|
|
152
|
-
- `/workspaces/agentic-qe/v3/src/kernel/kernel.ts`
|
|
153
|
-
- `/workspaces/agentic-qe/v3/src/domains/chaos-resilience/services/chaos-engineer.ts`
|
|
154
|
-
|
|
155
|
-
**Remediation:**
|
|
156
|
-
1. Implement a structured logging framework with log levels
|
|
157
|
-
2. Add sensitive data filters before logging
|
|
158
|
-
3. Remove debug statements or gate behind DEBUG environment variable
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
#### MED-003: Missing Input Validation on MCP Tool Parameters
|
|
163
|
-
**Location:** Various MCP handler files in `/workspaces/agentic-qe/v3/src/mcp/handlers/`
|
|
164
|
-
**CWE:** CWE-20 (Improper Input Validation)
|
|
165
|
-
|
|
166
|
-
**Description:**
|
|
167
|
-
While schema validation exists via `SchemaValidator`, not all MCP tool handlers consistently apply validation before processing.
|
|
168
|
-
|
|
169
|
-
**Remediation:**
|
|
170
|
-
1. Ensure all handlers use `SchemaValidator.validate()` before processing
|
|
171
|
-
2. Add runtime type guards for complex objects
|
|
172
|
-
3. Implement comprehensive input validation middleware
|
|
173
|
-
|
|
174
|
-
---
|
|
175
|
-
|
|
176
|
-
#### MED-004: API Key Exposure via Environment Variables
|
|
177
|
-
**Location:** Multiple files
|
|
178
|
-
**Lines:**
|
|
179
|
-
- `/workspaces/agentic-qe/v3/src/shared/llm/providers/claude.ts:332`
|
|
180
|
-
- `/workspaces/agentic-qe/v3/src/shared/llm/providers/openai.ts:399`
|
|
181
|
-
|
|
182
|
-
**Description:**
|
|
183
|
-
API keys are read from environment variables which is correct, but there's no validation that these aren't accidentally logged:
|
|
184
|
-
|
|
185
|
-
```typescript
|
|
186
|
-
return this.config.apiKey ?? process.env.ANTHROPIC_API_KEY;
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
**Remediation:**
|
|
190
|
-
1. Add redaction filters to logging
|
|
191
|
-
2. Implement secure credential storage patterns
|
|
192
|
-
3. Validate API key formats before use
|
|
193
|
-
|
|
194
|
-
---
|
|
195
|
-
|
|
196
|
-
#### MED-005: JSON.parse Without Error Context
|
|
197
|
-
**Location:** 42 files using JSON.parse
|
|
198
|
-
**CWE:** CWE-754 (Improper Check for Unusual or Exceptional Conditions)
|
|
199
|
-
|
|
200
|
-
**Description:**
|
|
201
|
-
Many `JSON.parse()` calls are wrapped in try-catch but error handling varies in quality. Some catch blocks swallow errors without proper context.
|
|
202
|
-
|
|
203
|
-
**Remediation:**
|
|
204
|
-
1. Standardize JSON parsing with a utility function that provides context
|
|
205
|
-
2. Use the existing `readJSON()` from file-reader.ts pattern throughout
|
|
206
|
-
3. Ensure parse errors include file/source context
|
|
207
|
-
|
|
208
|
-
---
|
|
209
|
-
|
|
210
|
-
### LOW Severity (7)
|
|
211
|
-
|
|
212
|
-
#### LOW-001: Missing Content Security Policy Headers
|
|
213
|
-
**Risk:** XSS vectors in any web-facing components
|
|
214
|
-
**Remediation:** Add CSP headers to HTTP responses
|
|
215
|
-
|
|
216
|
-
#### LOW-002: Regex Complexity in Pattern Matching
|
|
217
|
-
**Location:** Various security scanner files
|
|
218
|
-
**Risk:** Potential ReDoS if patterns become complex
|
|
219
|
-
**Mitigation:** The `createSafeRegex()` function exists but isn't universally applied
|
|
220
|
-
**Remediation:** Use `isRegexSafe()` before compiling user-provided patterns
|
|
221
|
-
|
|
222
|
-
#### LOW-003: File Path Handling Without Symlink Resolution
|
|
223
|
-
**Location:** `/workspaces/agentic-qe/v3/src/shared/io/file-reader.ts`
|
|
224
|
-
**Risk:** Symlink-based path traversal
|
|
225
|
-
**Remediation:** Add `fs.realpath()` check before file operations
|
|
226
|
-
|
|
227
|
-
#### LOW-004: Missing Request Timeout Configuration
|
|
228
|
-
**Location:** Some HTTP client usages
|
|
229
|
-
**Risk:** Resource exhaustion via slow loris attacks
|
|
230
|
-
**Mitigation:** Default timeout of 30s exists in HttpClient
|
|
231
|
-
**Remediation:** Ensure all external HTTP calls use explicit timeouts
|
|
232
|
-
|
|
233
|
-
#### LOW-005: Deprecated Crypto Patterns (SHA-256)
|
|
234
|
-
**Location:** `/workspaces/agentic-qe/v3/src/mcp/security/cve-prevention.ts`
|
|
235
|
-
**Risk:** SHA-256 is secure but consider SHA-3 for future-proofing
|
|
236
|
-
**Note:** Current implementation is acceptable
|
|
237
|
-
|
|
238
|
-
#### LOW-006: Large File Processing Without Size Limits
|
|
239
|
-
**Location:** File reader and coverage parser
|
|
240
|
-
**Risk:** Memory exhaustion with very large files
|
|
241
|
-
**Remediation:** Add configurable file size limits
|
|
242
|
-
|
|
243
|
-
#### LOW-007: No CSRF Protection in MCP Handlers
|
|
244
|
-
**Risk:** Cross-site request forgery if exposed via HTTP
|
|
245
|
-
**Mitigation:** MCP primarily uses stdio transport
|
|
246
|
-
**Remediation:** Add CSRF tokens if HTTP transport is enabled
|
|
247
|
-
|
|
248
|
-
---
|
|
249
|
-
|
|
250
|
-
## Security Controls Assessment
|
|
251
|
-
|
|
252
|
-
### Implemented Controls (Positive Findings)
|
|
253
|
-
|
|
254
|
-
| Control | Implementation | Location | Rating |
|
|
255
|
-
|---------|---------------|----------|--------|
|
|
256
|
-
| Path Traversal Prevention | Comprehensive | `cve-prevention.ts` | Excellent |
|
|
257
|
-
| Input Sanitization | HTML, SQL, Shell | `cve-prevention.ts` | Excellent |
|
|
258
|
-
| Rate Limiting | Token bucket, sliding window | `rate-limiter.ts` | Excellent |
|
|
259
|
-
| OAuth 2.1 + PKCE | Full implementation | `oauth21-provider.ts` | Excellent |
|
|
260
|
-
| JSON Schema Validation | Type-safe validation | `schema-validator.ts` | Good |
|
|
261
|
-
| ReDoS Prevention | Pattern safety checks | `cve-prevention.ts` | Good |
|
|
262
|
-
| Timing-Safe Comparison | Crypto-based | `cve-prevention.ts` | Excellent |
|
|
263
|
-
| Command Validation | Whitelist + sanitization | `cve-prevention.ts` | Good |
|
|
264
|
-
| Circuit Breaker | HTTP resilience | `http-client.ts` | Good |
|
|
265
|
-
| Secure Token Generation | crypto.randomBytes | `cve-prevention.ts` | Excellent |
|
|
266
|
-
|
|
267
|
-
### Missing/Incomplete Controls
|
|
268
|
-
|
|
269
|
-
| Control | Status | Priority |
|
|
270
|
-
|---------|--------|----------|
|
|
271
|
-
| Structured Logging | Partial | Medium |
|
|
272
|
-
| Request Signing | Not implemented | Low |
|
|
273
|
-
| Audit Logging | Partial | Medium |
|
|
274
|
-
| CORS Configuration | Not validated | Low |
|
|
275
|
-
| Security Headers | Incomplete | Medium |
|
|
276
|
-
|
|
277
|
-
---
|
|
278
|
-
|
|
279
|
-
## Dependency Vulnerability Assessment
|
|
280
|
-
|
|
281
|
-
```
|
|
282
|
-
npm audit results:
|
|
283
|
-
{
|
|
284
|
-
"vulnerabilities": {},
|
|
285
|
-
"metadata": {
|
|
286
|
-
"vulnerabilities": {
|
|
287
|
-
"info": 0,
|
|
288
|
-
"low": 0,
|
|
289
|
-
"moderate": 0,
|
|
290
|
-
"high": 0,
|
|
291
|
-
"critical": 0,
|
|
292
|
-
"total": 0
|
|
293
|
-
},
|
|
294
|
-
"dependencies": {
|
|
295
|
-
"prod": 428,
|
|
296
|
-
"dev": 113,
|
|
297
|
-
"total": 577
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
**Result:** No known vulnerabilities in dependencies.
|
|
304
|
-
|
|
305
|
-
### Key Dependencies Reviewed
|
|
306
|
-
|
|
307
|
-
| Package | Version | Status |
|
|
308
|
-
|---------|---------|--------|
|
|
309
|
-
| better-sqlite3 | ^12.5.0 | Secure |
|
|
310
|
-
| playwright | ^1.40.0 | Secure |
|
|
311
|
-
| commander | ^12.1.0 | Secure |
|
|
312
|
-
| uuid | ^9.0.0 | Secure |
|
|
313
|
-
| chalk | ^5.6.2 | Secure |
|
|
314
|
-
|
|
315
|
-
---
|
|
316
|
-
|
|
317
|
-
## OWASP Top 10 (2021) Compliance
|
|
318
|
-
|
|
319
|
-
| Risk | Status | Notes |
|
|
320
|
-
|------|--------|-------|
|
|
321
|
-
| A01: Broken Access Control | Partial | OAuth implemented, needs consistent enforcement |
|
|
322
|
-
| A02: Cryptographic Failures | Pass | Proper crypto usage, timing-safe comparisons |
|
|
323
|
-
| A03: Injection | Needs Work | Git analyzer and chaos engineer need fixes |
|
|
324
|
-
| A04: Insecure Design | Pass | Good security architecture with ADR documentation |
|
|
325
|
-
| A05: Security Misconfiguration | Pass | Environment-based config, sensible defaults |
|
|
326
|
-
| A06: Vulnerable Components | Pass | No known vulnerabilities in dependencies |
|
|
327
|
-
| A07: Auth Failures | Pass | OAuth 2.1 + PKCE, secure token handling |
|
|
328
|
-
| A08: Integrity Failures | Pass | Schema validation on inputs |
|
|
329
|
-
| A09: Logging Failures | Partial | Logging exists but not structured |
|
|
330
|
-
| A10: SSRF | Pass | URL validation in HTTP client |
|
|
331
|
-
|
|
332
|
-
---
|
|
333
|
-
|
|
334
|
-
## Remediation Priority Matrix
|
|
335
|
-
|
|
336
|
-
| Priority | Finding | Effort | Impact |
|
|
337
|
-
|----------|---------|--------|--------|
|
|
338
|
-
| P0 | HIGH-001: Git Analyzer Command Injection | Medium | High |
|
|
339
|
-
| P0 | HIGH-002: Chaos Engineer Command Injection | Medium | High |
|
|
340
|
-
| P0 | HIGH-003: Shell Spawn with shell:true | Low | High |
|
|
341
|
-
| P1 | MED-001: SQL String Concatenation | Low | Medium |
|
|
342
|
-
| P1 | MED-002: Console.log Sensitive Data | Medium | Medium |
|
|
343
|
-
| P2 | MED-003: MCP Input Validation | Medium | Medium |
|
|
344
|
-
| P2 | MED-004: API Key Logging Risk | Low | Medium |
|
|
345
|
-
| P3 | MED-005: JSON.parse Error Handling | Low | Low |
|
|
346
|
-
|
|
347
|
-
---
|
|
348
|
-
|
|
349
|
-
## Recommendations
|
|
350
|
-
|
|
351
|
-
### Immediate Actions (P0)
|
|
352
|
-
1. Refactor `GitAnalyzer` to use `execFileSync()` with argument arrays
|
|
353
|
-
2. Add command validation to `ChaosEngineer` probe execution
|
|
354
|
-
3. Remove `shell: true` from test executor spawn calls
|
|
355
|
-
4. Apply existing CVE prevention utilities consistently
|
|
356
|
-
|
|
357
|
-
### Short-Term (P1-P2)
|
|
358
|
-
1. Implement structured logging framework with sensitive data filters
|
|
359
|
-
2. Create middleware for consistent MCP input validation
|
|
360
|
-
3. Add file size limits to file reader operations
|
|
361
|
-
4. Review and standardize error handling patterns
|
|
362
|
-
|
|
363
|
-
### Long-Term (P3)
|
|
364
|
-
1. Consider migration to SHA-3 for hashing
|
|
365
|
-
2. Implement comprehensive audit logging
|
|
366
|
-
3. Add security headers middleware
|
|
367
|
-
4. Create security testing automation
|
|
368
|
-
|
|
369
|
-
---
|
|
370
|
-
|
|
371
|
-
## Appendix A: Files Requiring Review
|
|
372
|
-
|
|
373
|
-
### Critical Path Files
|
|
374
|
-
1. `/workspaces/agentic-qe/v3/src/shared/git/git-analyzer.ts`
|
|
375
|
-
2. `/workspaces/agentic-qe/v3/src/domains/chaos-resilience/services/chaos-engineer.ts`
|
|
376
|
-
3. `/workspaces/agentic-qe/v3/src/domains/test-execution/services/test-executor.ts`
|
|
377
|
-
|
|
378
|
-
### Security Control Files (Well Implemented)
|
|
379
|
-
1. `/workspaces/agentic-qe/v3/src/mcp/security/cve-prevention.ts` - Excellent
|
|
380
|
-
2. `/workspaces/agentic-qe/v3/src/mcp/security/rate-limiter.ts` - Excellent
|
|
381
|
-
3. `/workspaces/agentic-qe/v3/src/mcp/security/schema-validator.ts` - Good
|
|
382
|
-
4. `/workspaces/agentic-qe/v3/src/mcp/security/oauth21-provider.ts` - Excellent
|
|
383
|
-
|
|
384
|
-
---
|
|
385
|
-
|
|
386
|
-
## Appendix B: Scan Configuration
|
|
387
|
-
|
|
388
|
-
```yaml
|
|
389
|
-
scan_type: comprehensive
|
|
390
|
-
modules:
|
|
391
|
-
- sast: enabled
|
|
392
|
-
- dependency: enabled
|
|
393
|
-
- secrets: enabled
|
|
394
|
-
- owasp: enabled
|
|
395
|
-
- compliance: enabled
|
|
396
|
-
rules:
|
|
397
|
-
- OWASP Top 10 (2021)
|
|
398
|
-
- CWE SANS Top 25
|
|
399
|
-
- Node.js Security Best Practices
|
|
400
|
-
exclusions:
|
|
401
|
-
- "**/node_modules/**"
|
|
402
|
-
- "**/dist/**"
|
|
403
|
-
- "**/*.test.ts"
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
---
|
|
407
|
-
|
|
408
|
-
**Report Generated By:** V3 QE Security Scanner
|
|
409
|
-
**Scan Duration:** ~45 seconds
|
|
410
|
-
**Confidence Level:** High
|
|
@@ -1,278 +0,0 @@
|
|
|
1
|
-
# Security Verification Report - Agentic QE v3
|
|
2
|
-
|
|
3
|
-
**Date:** 2026-01-11
|
|
4
|
-
**Scanner:** V3 QE Security Scanner
|
|
5
|
-
**Scan Type:** HIGH Severity Fix Verification
|
|
6
|
-
**Target:** `/workspaces/agentic-qe/v3/src`
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## Executive Summary
|
|
11
|
-
|
|
12
|
-
This report verifies the remediation status of three HIGH severity command injection vulnerabilities (CWE-78) that were previously identified in the Agentic QE v3 codebase.
|
|
13
|
-
|
|
14
|
-
| Issue ID | Status | File | Vulnerability |
|
|
15
|
-
|----------|--------|------|---------------|
|
|
16
|
-
| HIGH-001 | **RESOLVED** | git-analyzer.ts | Command injection via execSync() with string interpolation |
|
|
17
|
-
| HIGH-002 | **RESOLVED** | chaos-engineer.ts | Command injection via exec() with probe targets |
|
|
18
|
-
| HIGH-003 | **RESOLVED** | test-executor.ts | Shell spawn with shell:true |
|
|
19
|
-
|
|
20
|
-
**Overall Security Posture: IMPROVED**
|
|
21
|
-
|
|
22
|
-
All three HIGH severity issues have been successfully remediated. The codebase now follows secure coding practices for shell command execution.
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Detailed Verification
|
|
27
|
-
|
|
28
|
-
### HIGH-001: Command Injection in git-analyzer.ts
|
|
29
|
-
|
|
30
|
-
**File:** `/workspaces/agentic-qe/v3/src/shared/git/git-analyzer.ts`
|
|
31
|
-
|
|
32
|
-
**Previous Vulnerability:**
|
|
33
|
-
- Used `execSync()` with string interpolation allowing attacker-controlled input in commands
|
|
34
|
-
- Risk: CWE-78 OS Command Injection
|
|
35
|
-
|
|
36
|
-
**Current Implementation (SECURE):**
|
|
37
|
-
|
|
38
|
-
1. **Import Changed:** Uses `execFileSync` from `child_process` instead of `execSync`
|
|
39
|
-
```typescript
|
|
40
|
-
import { execFileSync } from 'child_process';
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
2. **Input Sanitization:** Added `sanitizeGitArg()` function (lines 18-22):
|
|
44
|
-
```typescript
|
|
45
|
-
function sanitizeGitArg(arg: string): string {
|
|
46
|
-
// Remove characters that could be used for command injection
|
|
47
|
-
return arg.replace(/[;&|`$(){}[\]<>\\'"!\n\r]/g, '');
|
|
48
|
-
}
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
3. **Secure Command Execution:** All git commands now use `execFileSync` with argument arrays:
|
|
52
|
-
```typescript
|
|
53
|
-
// Example from getChangeFrequency() - line 132
|
|
54
|
-
const output = execFileSync('git', [
|
|
55
|
-
'log', '--oneline', '--since=90 days ago', '--', relativePath
|
|
56
|
-
], {
|
|
57
|
-
cwd: this.config.repoRoot,
|
|
58
|
-
encoding: 'utf-8',
|
|
59
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
60
|
-
}).trim();
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
4. **All git operations verified:**
|
|
64
|
-
- `isGitRepository()` - uses argument array
|
|
65
|
-
- `getChangeFrequency()` - uses sanitized path + argument array
|
|
66
|
-
- `getDeveloperExperience()` - uses sanitized path + argument array
|
|
67
|
-
- `getCodeAge()` - uses sanitized path + argument array
|
|
68
|
-
- `getBugHistory()` - uses sanitized path + sanitized keywords + argument array
|
|
69
|
-
- `getFileHistory()` - uses sanitized path + argument array
|
|
70
|
-
- `getChangedFiles()` - uses argument array
|
|
71
|
-
- `getCommitFiles()` - uses sanitized commit hash + argument array
|
|
72
|
-
- `getUncommittedFiles()` - uses argument array
|
|
73
|
-
|
|
74
|
-
**Verification Result:** PASS - No command injection vulnerabilities found.
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
### HIGH-002: Command Injection in chaos-engineer.ts
|
|
79
|
-
|
|
80
|
-
**File:** `/workspaces/agentic-qe/v3/src/domains/chaos-resilience/services/chaos-engineer.ts`
|
|
81
|
-
|
|
82
|
-
**Previous Vulnerability:**
|
|
83
|
-
- Used `exec()` with probe targets allowing shell command injection
|
|
84
|
-
- Risk: CWE-78 OS Command Injection
|
|
85
|
-
|
|
86
|
-
**Current Implementation (SECURE):**
|
|
87
|
-
|
|
88
|
-
1. **Import Changed:** Uses `execFile` from `child_process` instead of `exec`
|
|
89
|
-
```typescript
|
|
90
|
-
import { execFile } from 'child_process';
|
|
91
|
-
import { validateCommand } from '../../../mcp/security/cve-prevention';
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
2. **Command Whitelisting:** Strict whitelists for allowed commands (lines 567-578 and 1029-1038):
|
|
95
|
-
```typescript
|
|
96
|
-
private static readonly ALLOWED_PROBE_COMMANDS = [
|
|
97
|
-
'curl', 'wget', // Health check endpoints
|
|
98
|
-
'nc', 'netcat', // Network connectivity
|
|
99
|
-
'ping', // Network reachability
|
|
100
|
-
'nslookup', 'dig', // DNS checks
|
|
101
|
-
'ps', 'pgrep', // Process checks
|
|
102
|
-
'cat', 'head', 'tail', // File content checks
|
|
103
|
-
'ls', 'stat', // File system checks
|
|
104
|
-
'echo', // Simple output
|
|
105
|
-
'test', '[', // Conditional checks
|
|
106
|
-
'node', 'npm', // Node.js checks
|
|
107
|
-
];
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
3. **Command Validation:** Uses `validateCommand()` from CVE prevention module:
|
|
111
|
-
```typescript
|
|
112
|
-
// Example from executeCommandProbe() - lines 584-591
|
|
113
|
-
const validation = validateCommand(probe.target, ChaosEngineerService.ALLOWED_PROBE_COMMANDS);
|
|
114
|
-
if (!validation.valid) {
|
|
115
|
-
console.log(`Command probe ${probe.name} blocked: ${validation.error}`);
|
|
116
|
-
console.log(`Blocked patterns: ${validation.blockedPatterns?.join(', ') || 'none'}`);
|
|
117
|
-
resolve(false);
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
4. **Secure Execution:** Uses `execFile` with parsed arguments instead of shell:
|
|
123
|
-
```typescript
|
|
124
|
-
// Lines 594-600
|
|
125
|
-
const parts = sanitizedCommand.trim().split(/\s+/);
|
|
126
|
-
const executable = parts[0];
|
|
127
|
-
const args = parts.slice(1);
|
|
128
|
-
|
|
129
|
-
// Use execFile instead of exec to avoid shell interpretation
|
|
130
|
-
execFile(executable, args, { timeout }, (error, stdout, _stderr) => {
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
5. **Rollback Commands Protected:** Same pattern applied to `executeCommandRollback()`:
|
|
134
|
-
- Uses separate `ALLOWED_ROLLBACK_COMMANDS` whitelist
|
|
135
|
-
- Validates via `validateCommand()` before execution
|
|
136
|
-
- Uses `execFile` with argument array
|
|
137
|
-
|
|
138
|
-
**Verification Result:** PASS - No command injection vulnerabilities found.
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
### HIGH-003: Shell Spawn with shell:true in test-executor.ts
|
|
143
|
-
|
|
144
|
-
**File:** `/workspaces/agentic-qe/v3/src/domains/test-execution/services/test-executor.ts`
|
|
145
|
-
|
|
146
|
-
**Previous Vulnerability:**
|
|
147
|
-
- Used `spawn()` with `shell: true` option allowing command injection
|
|
148
|
-
- Risk: CWE-78 OS Command Injection
|
|
149
|
-
|
|
150
|
-
**Current Implementation (SECURE):**
|
|
151
|
-
|
|
152
|
-
1. **Shell Option Removed:** No `shell: true` anywhere in the file
|
|
153
|
-
```typescript
|
|
154
|
-
// Lines 351-354 - Explicit security comment
|
|
155
|
-
// Spawn the test runner process
|
|
156
|
-
// Note: shell: false (default) to prevent command injection (CWE-78)
|
|
157
|
-
// Arguments are passed as array to avoid shell interpretation
|
|
158
|
-
const proc: ChildProcess = spawn(command, args, {
|
|
159
|
-
cwd: process.cwd(),
|
|
160
|
-
env: {
|
|
161
|
-
...process.env,
|
|
162
|
-
FORCE_COLOR: '0', // Disable color codes for easier parsing
|
|
163
|
-
CI: 'true', // Enable CI mode for consistent output
|
|
164
|
-
},
|
|
165
|
-
});
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
2. **Command Building with Argument Arrays:** Uses `buildTestCommand()` method:
|
|
169
|
-
```typescript
|
|
170
|
-
// Lines 400-423
|
|
171
|
-
private buildTestCommand(file: string, framework: string): { command: string; args: string[] } {
|
|
172
|
-
switch (framework.toLowerCase()) {
|
|
173
|
-
case 'vitest':
|
|
174
|
-
return {
|
|
175
|
-
command: 'npx',
|
|
176
|
-
args: ['vitest', 'run', file, '--reporter=json', '--no-color'],
|
|
177
|
-
};
|
|
178
|
-
case 'jest':
|
|
179
|
-
return {
|
|
180
|
-
command: 'npx',
|
|
181
|
-
args: ['jest', file, '--json', '--no-colors', '--testLocationInResults'],
|
|
182
|
-
};
|
|
183
|
-
// ...
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
3. **Related Files Also Secure:**
|
|
189
|
-
- `retry-handler.ts` (line 573-577): Uses `spawn` without shell option, has CWE-78 prevention comment
|
|
190
|
-
- `flaky-detector.ts` (line 424-428): Uses `spawn` without shell option
|
|
191
|
-
|
|
192
|
-
**Verification Result:** PASS - No shell:true usage found.
|
|
193
|
-
|
|
194
|
-
---
|
|
195
|
-
|
|
196
|
-
## Additional Security Findings
|
|
197
|
-
|
|
198
|
-
### Semgrep Integration Concern (LOW)
|
|
199
|
-
|
|
200
|
-
**File:** `/workspaces/agentic-qe/v3/src/domains/security-compliance/services/semgrep-integration.ts`
|
|
201
|
-
|
|
202
|
-
**Observation:**
|
|
203
|
-
- Uses `exec()` (promisified) for running semgrep commands
|
|
204
|
-
- Commands are built with string interpolation (line 119-128)
|
|
205
|
-
|
|
206
|
-
**Risk Assessment: LOW**
|
|
207
|
-
- This is for running the security scanner itself (semgrep)
|
|
208
|
-
- Config values come from internal configuration, not user input
|
|
209
|
-
- Exclude patterns and other args could theoretically be exploited if attacker controls config
|
|
210
|
-
- Primary use case is CI/CD pipelines where config is trusted
|
|
211
|
-
|
|
212
|
-
**Recommendation:**
|
|
213
|
-
Consider migrating to `execFile` with argument array for consistency, though this is not a critical vulnerability given the controlled input source.
|
|
214
|
-
|
|
215
|
-
### CVE Prevention Module (POSITIVE)
|
|
216
|
-
|
|
217
|
-
**File:** `/workspaces/agentic-qe/v3/src/mcp/security/cve-prevention.ts`
|
|
218
|
-
|
|
219
|
-
**Security Measures Implemented:**
|
|
220
|
-
- Path traversal protection with multiple encoding detection
|
|
221
|
-
- ReDoS prevention with regex safety checks
|
|
222
|
-
- Timing-safe authentication comparison
|
|
223
|
-
- Input sanitization utilities
|
|
224
|
-
- Command injection prevention with whitelist approach
|
|
225
|
-
- Shell metacharacter blocking
|
|
226
|
-
|
|
227
|
-
---
|
|
228
|
-
|
|
229
|
-
## Compliance Summary
|
|
230
|
-
|
|
231
|
-
| Security Control | Status | Evidence |
|
|
232
|
-
|-----------------|--------|----------|
|
|
233
|
-
| CWE-78 Command Injection Prevention | COMPLIANT | All shell commands use safe APIs |
|
|
234
|
-
| Input Sanitization | COMPLIANT | sanitizeGitArg() and validateCommand() |
|
|
235
|
-
| Principle of Least Privilege | COMPLIANT | Command whitelists restrict allowed executables |
|
|
236
|
-
| Defense in Depth | COMPLIANT | Multiple validation layers (sanitize + whitelist + execFile) |
|
|
237
|
-
|
|
238
|
-
---
|
|
239
|
-
|
|
240
|
-
## Files Scanned
|
|
241
|
-
|
|
242
|
-
| File | Child Process Usage | Status |
|
|
243
|
-
|------|---------------------|--------|
|
|
244
|
-
| `/workspaces/agentic-qe/v3/src/shared/git/git-analyzer.ts` | execFileSync | SECURE |
|
|
245
|
-
| `/workspaces/agentic-qe/v3/src/domains/chaos-resilience/services/chaos-engineer.ts` | execFile | SECURE |
|
|
246
|
-
| `/workspaces/agentic-qe/v3/src/domains/test-execution/services/test-executor.ts` | spawn | SECURE |
|
|
247
|
-
| `/workspaces/agentic-qe/v3/src/domains/test-execution/services/retry-handler.ts` | spawn | SECURE |
|
|
248
|
-
| `/workspaces/agentic-qe/v3/src/domains/test-execution/services/flaky-detector.ts` | spawn | SECURE |
|
|
249
|
-
| `/workspaces/agentic-qe/v3/src/domains/security-compliance/services/semgrep-integration.ts` | exec (promisified) | LOW RISK |
|
|
250
|
-
|
|
251
|
-
---
|
|
252
|
-
|
|
253
|
-
## Recommendations
|
|
254
|
-
|
|
255
|
-
1. **Completed:** All HIGH severity command injection issues are resolved.
|
|
256
|
-
|
|
257
|
-
2. **Consider:** Migrate `semgrep-integration.ts` to use `execFile` for consistency.
|
|
258
|
-
|
|
259
|
-
3. **Maintain:** Continue using the CVE prevention module for all new command execution code.
|
|
260
|
-
|
|
261
|
-
4. **Document:** Update security guidelines to require use of `execFile`/`execFileSync` with argument arrays for all shell operations.
|
|
262
|
-
|
|
263
|
-
---
|
|
264
|
-
|
|
265
|
-
## Conclusion
|
|
266
|
-
|
|
267
|
-
The security scan confirms that all three HIGH severity command injection vulnerabilities (HIGH-001, HIGH-002, HIGH-003) have been successfully remediated. The codebase now follows secure coding practices:
|
|
268
|
-
|
|
269
|
-
- **execFileSync** with argument arrays in git-analyzer.ts
|
|
270
|
-
- **execFile** with command validation and whitelisting in chaos-engineer.ts
|
|
271
|
-
- **spawn** without shell:true in test-executor.ts and related files
|
|
272
|
-
|
|
273
|
-
The overall security posture of the Agentic QE v3 codebase has significantly improved with these fixes.
|
|
274
|
-
|
|
275
|
-
---
|
|
276
|
-
|
|
277
|
-
*Report generated by V3 QE Security Scanner*
|
|
278
|
-
*Scan completed: 2026-01-11*
|