@accelerationguy/accel 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/CLAUDE.md +19 -0
- package/LICENSE +33 -0
- package/README.md +275 -0
- package/bin/install.js +661 -0
- package/docs/getting-started.md +164 -0
- package/docs/module-guide.md +139 -0
- package/modules/drive/LICENSE +21 -0
- package/modules/drive/PAUL-VS-GSD.md +171 -0
- package/modules/drive/README.md +555 -0
- package/modules/drive/assets/terminal.svg +67 -0
- package/modules/drive/bin/install.js +210 -0
- package/modules/drive/integration.js +76 -0
- package/modules/drive/package.json +38 -0
- package/modules/drive/src/commands/add-phase.md +36 -0
- package/modules/drive/src/commands/apply.md +83 -0
- package/modules/drive/src/commands/assumptions.md +37 -0
- package/modules/drive/src/commands/audit.md +57 -0
- package/modules/drive/src/commands/complete-milestone.md +36 -0
- package/modules/drive/src/commands/config.md +175 -0
- package/modules/drive/src/commands/consider-issues.md +41 -0
- package/modules/drive/src/commands/discover.md +48 -0
- package/modules/drive/src/commands/discuss-milestone.md +33 -0
- package/modules/drive/src/commands/discuss.md +34 -0
- package/modules/drive/src/commands/flows.md +73 -0
- package/modules/drive/src/commands/handoff.md +201 -0
- package/modules/drive/src/commands/help.md +525 -0
- package/modules/drive/src/commands/init.md +54 -0
- package/modules/drive/src/commands/map-codebase.md +34 -0
- package/modules/drive/src/commands/milestone.md +34 -0
- package/modules/drive/src/commands/pause.md +44 -0
- package/modules/drive/src/commands/plan-fix.md +216 -0
- package/modules/drive/src/commands/plan.md +36 -0
- package/modules/drive/src/commands/progress.md +138 -0
- package/modules/drive/src/commands/register.md +29 -0
- package/modules/drive/src/commands/remove-phase.md +37 -0
- package/modules/drive/src/commands/research-phase.md +209 -0
- package/modules/drive/src/commands/research.md +47 -0
- package/modules/drive/src/commands/resume.md +49 -0
- package/modules/drive/src/commands/status.md +78 -0
- package/modules/drive/src/commands/unify.md +87 -0
- package/modules/drive/src/commands/verify.md +60 -0
- package/modules/drive/src/references/checkpoints.md +234 -0
- package/modules/drive/src/references/context-management.md +219 -0
- package/modules/drive/src/references/git-strategy.md +206 -0
- package/modules/drive/src/references/loop-phases.md +254 -0
- package/modules/drive/src/references/plan-format.md +263 -0
- package/modules/drive/src/references/quality-principles.md +152 -0
- package/modules/drive/src/references/research-quality-control.md +247 -0
- package/modules/drive/src/references/sonarqube-integration.md +244 -0
- package/modules/drive/src/references/specialized-workflow-integration.md +186 -0
- package/modules/drive/src/references/subagent-criteria.md +179 -0
- package/modules/drive/src/references/tdd.md +219 -0
- package/modules/drive/src/references/work-units.md +161 -0
- package/modules/drive/src/rules/commands.md +108 -0
- package/modules/drive/src/rules/references.md +107 -0
- package/modules/drive/src/rules/style.md +123 -0
- package/modules/drive/src/rules/templates.md +51 -0
- package/modules/drive/src/rules/workflows.md +133 -0
- package/modules/drive/src/templates/CONTEXT.md +88 -0
- package/modules/drive/src/templates/DEBUG.md +164 -0
- package/modules/drive/src/templates/DISCOVERY.md +148 -0
- package/modules/drive/src/templates/HANDOFF.md +77 -0
- package/modules/drive/src/templates/ISSUES.md +93 -0
- package/modules/drive/src/templates/MILESTONES.md +167 -0
- package/modules/drive/src/templates/PLAN.md +328 -0
- package/modules/drive/src/templates/PROJECT.md +219 -0
- package/modules/drive/src/templates/RESEARCH.md +130 -0
- package/modules/drive/src/templates/ROADMAP.md +328 -0
- package/modules/drive/src/templates/SPECIAL-FLOWS.md +70 -0
- package/modules/drive/src/templates/STATE.md +210 -0
- package/modules/drive/src/templates/SUMMARY.md +221 -0
- package/modules/drive/src/templates/UAT-ISSUES.md +139 -0
- package/modules/drive/src/templates/codebase/architecture.md +259 -0
- package/modules/drive/src/templates/codebase/concerns.md +329 -0
- package/modules/drive/src/templates/codebase/conventions.md +311 -0
- package/modules/drive/src/templates/codebase/integrations.md +284 -0
- package/modules/drive/src/templates/codebase/stack.md +190 -0
- package/modules/drive/src/templates/codebase/structure.md +287 -0
- package/modules/drive/src/templates/codebase/testing.md +484 -0
- package/modules/drive/src/templates/config.md +181 -0
- package/modules/drive/src/templates/milestone-archive.md +236 -0
- package/modules/drive/src/templates/milestone-context.md +190 -0
- package/modules/drive/src/templates/paul-json.md +147 -0
- package/modules/drive/src/vector-config/PAUL +26 -0
- package/modules/drive/src/vector-config/PAUL.manifest +11 -0
- package/modules/drive/src/workflows/apply-phase.md +393 -0
- package/modules/drive/src/workflows/audit-plan.md +344 -0
- package/modules/drive/src/workflows/complete-milestone.md +479 -0
- package/modules/drive/src/workflows/configure-special-flows.md +283 -0
- package/modules/drive/src/workflows/consider-issues.md +172 -0
- package/modules/drive/src/workflows/create-milestone.md +268 -0
- package/modules/drive/src/workflows/debug.md +292 -0
- package/modules/drive/src/workflows/discovery.md +187 -0
- package/modules/drive/src/workflows/discuss-milestone.md +245 -0
- package/modules/drive/src/workflows/discuss-phase.md +231 -0
- package/modules/drive/src/workflows/init-project.md +698 -0
- package/modules/drive/src/workflows/map-codebase.md +459 -0
- package/modules/drive/src/workflows/pause-work.md +259 -0
- package/modules/drive/src/workflows/phase-assumptions.md +181 -0
- package/modules/drive/src/workflows/plan-phase.md +385 -0
- package/modules/drive/src/workflows/quality-gate.md +263 -0
- package/modules/drive/src/workflows/register-manifest.md +107 -0
- package/modules/drive/src/workflows/research.md +241 -0
- package/modules/drive/src/workflows/resume-project.md +200 -0
- package/modules/drive/src/workflows/roadmap-management.md +334 -0
- package/modules/drive/src/workflows/transition-phase.md +368 -0
- package/modules/drive/src/workflows/unify-phase.md +290 -0
- package/modules/drive/src/workflows/verify-work.md +241 -0
- package/modules/forge/README.md +281 -0
- package/modules/forge/bin/install.js +200 -0
- package/modules/forge/package.json +32 -0
- package/modules/forge/skillsmith/rules/checklists-rules.md +42 -0
- package/modules/forge/skillsmith/rules/context-rules.md +43 -0
- package/modules/forge/skillsmith/rules/entry-point-rules.md +44 -0
- package/modules/forge/skillsmith/rules/frameworks-rules.md +43 -0
- package/modules/forge/skillsmith/rules/tasks-rules.md +52 -0
- package/modules/forge/skillsmith/rules/templates-rules.md +43 -0
- package/modules/forge/skillsmith/skillsmith.md +82 -0
- package/modules/forge/skillsmith/tasks/audit.md +277 -0
- package/modules/forge/skillsmith/tasks/discover.md +145 -0
- package/modules/forge/skillsmith/tasks/distill.md +276 -0
- package/modules/forge/skillsmith/tasks/scaffold.md +349 -0
- package/modules/forge/specs/checklists.md +193 -0
- package/modules/forge/specs/context.md +223 -0
- package/modules/forge/specs/entry-point.md +320 -0
- package/modules/forge/specs/frameworks.md +228 -0
- package/modules/forge/specs/rules.md +245 -0
- package/modules/forge/specs/tasks.md +344 -0
- package/modules/forge/specs/templates.md +335 -0
- package/modules/forge/terminal.svg +70 -0
- package/modules/ignition/README.md +245 -0
- package/modules/ignition/bin/install.js +184 -0
- package/modules/ignition/checklists/planning-quality.md +55 -0
- package/modules/ignition/data/application/config.md +21 -0
- package/modules/ignition/data/application/guide.md +51 -0
- package/modules/ignition/data/application/skill-loadout.md +11 -0
- package/modules/ignition/data/campaign/config.md +18 -0
- package/modules/ignition/data/campaign/guide.md +36 -0
- package/modules/ignition/data/campaign/skill-loadout.md +10 -0
- package/modules/ignition/data/client/config.md +18 -0
- package/modules/ignition/data/client/guide.md +36 -0
- package/modules/ignition/data/client/skill-loadout.md +11 -0
- package/modules/ignition/data/utility/config.md +18 -0
- package/modules/ignition/data/utility/guide.md +31 -0
- package/modules/ignition/data/utility/skill-loadout.md +8 -0
- package/modules/ignition/data/workflow/config.md +19 -0
- package/modules/ignition/data/workflow/guide.md +41 -0
- package/modules/ignition/data/workflow/skill-loadout.md +10 -0
- package/modules/ignition/integration.js +54 -0
- package/modules/ignition/package.json +35 -0
- package/modules/ignition/seed.md +81 -0
- package/modules/ignition/tasks/add-type.md +164 -0
- package/modules/ignition/tasks/graduate.md +182 -0
- package/modules/ignition/tasks/ideate.md +221 -0
- package/modules/ignition/tasks/launch.md +137 -0
- package/modules/ignition/tasks/status.md +71 -0
- package/modules/ignition/templates/planning-application.md +193 -0
- package/modules/ignition/templates/planning-campaign.md +138 -0
- package/modules/ignition/templates/planning-client.md +149 -0
- package/modules/ignition/templates/planning-utility.md +112 -0
- package/modules/ignition/templates/planning-workflow.md +125 -0
- package/modules/ignition/terminal.svg +74 -0
- package/modules/mission-control/CONTEXT-CONTINUITY-SPEC.md +293 -0
- package/modules/mission-control/CONTEXT-ENGINEERING-GUIDE.md +282 -0
- package/modules/mission-control/README.md +91 -0
- package/modules/mission-control/assets/terminal.svg +80 -0
- package/modules/mission-control/examples/entities.example.json +133 -0
- package/modules/mission-control/examples/projects.example.json +318 -0
- package/modules/mission-control/examples/state.example.json +183 -0
- package/modules/mission-control/examples/vector.example.json +245 -0
- package/modules/mission-control/mission-control/checklists/install-verification.md +46 -0
- package/modules/mission-control/mission-control/frameworks/framework-registry.md +83 -0
- package/modules/mission-control/mission-control/mission-control.md +83 -0
- package/modules/mission-control/mission-control/tasks/insights.md +73 -0
- package/modules/mission-control/mission-control/tasks/install.md +194 -0
- package/modules/mission-control/mission-control/tasks/status.md +125 -0
- package/modules/mission-control/schemas/entities.schema.json +89 -0
- package/modules/mission-control/schemas/projects.schema.json +221 -0
- package/modules/mission-control/schemas/state.schema.json +108 -0
- package/modules/mission-control/schemas/vector.schema.json +200 -0
- package/modules/momentum/README.md +678 -0
- package/modules/momentum/bin/install.js +563 -0
- package/modules/momentum/integration.js +131 -0
- package/modules/momentum/package.json +42 -0
- package/modules/momentum/schemas/entities.schema.json +89 -0
- package/modules/momentum/schemas/projects.schema.json +221 -0
- package/modules/momentum/schemas/state.schema.json +108 -0
- package/modules/momentum/src/commands/audit-claude-md.md +31 -0
- package/modules/momentum/src/commands/audit.md +33 -0
- package/modules/momentum/src/commands/groom.md +35 -0
- package/modules/momentum/src/commands/history.md +27 -0
- package/modules/momentum/src/commands/pulse.md +33 -0
- package/modules/momentum/src/commands/scaffold.md +33 -0
- package/modules/momentum/src/commands/status.md +28 -0
- package/modules/momentum/src/commands/surface-convert.md +35 -0
- package/modules/momentum/src/commands/surface-create.md +34 -0
- package/modules/momentum/src/commands/surface-list.md +27 -0
- package/modules/momentum/src/commands/vector-hygiene.md +33 -0
- package/modules/momentum/src/framework/context/momentum-principles.md +71 -0
- package/modules/momentum/src/framework/frameworks/audit-strategies.md +53 -0
- package/modules/momentum/src/framework/frameworks/satellite-registration.md +44 -0
- package/modules/momentum/src/framework/tasks/audit-claude-md.md +68 -0
- package/modules/momentum/src/framework/tasks/audit.md +64 -0
- package/modules/momentum/src/framework/tasks/groom.md +164 -0
- package/modules/momentum/src/framework/tasks/history.md +34 -0
- package/modules/momentum/src/framework/tasks/pulse.md +83 -0
- package/modules/momentum/src/framework/tasks/scaffold.md +202 -0
- package/modules/momentum/src/framework/tasks/status.md +35 -0
- package/modules/momentum/src/framework/tasks/surface-convert.md +143 -0
- package/modules/momentum/src/framework/tasks/surface-create.md +184 -0
- package/modules/momentum/src/framework/tasks/surface-list.md +42 -0
- package/modules/momentum/src/framework/tasks/vector-hygiene.md +160 -0
- package/modules/momentum/src/framework/templates/workspace-json.md +96 -0
- package/modules/momentum/src/hooks/_template.py +129 -0
- package/modules/momentum/src/hooks/active-hook.py +178 -0
- package/modules/momentum/src/hooks/backlog-hook.py +115 -0
- package/modules/momentum/src/hooks/mission-control-insights.py +169 -0
- package/modules/momentum/src/hooks/momentum-pulse-check.py +351 -0
- package/modules/momentum/src/hooks/operator.py +53 -0
- package/modules/momentum/src/hooks/psmm-injector.py +67 -0
- package/modules/momentum/src/hooks/satellite-detection.py +248 -0
- package/modules/momentum/src/packages/momentum-mcp/index.js +119 -0
- package/modules/momentum/src/packages/momentum-mcp/package.json +10 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/entities.js +226 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/operator.js +106 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/projects.js +322 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/psmm.js +206 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/state.js +199 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/surfaces.js +404 -0
- package/modules/momentum/src/skill/momentum.md +111 -0
- package/modules/momentum/src/tasks/groom.md +164 -0
- package/modules/momentum/src/templates/operator.json +66 -0
- package/modules/momentum/src/templates/workspace.json +111 -0
- package/modules/momentum/terminal.svg +77 -0
- package/modules/radar/README.md +1552 -0
- package/modules/radar/commands/audit.md +233 -0
- package/modules/radar/commands/guardrails.md +194 -0
- package/modules/radar/commands/init.md +207 -0
- package/modules/radar/commands/playbook.md +176 -0
- package/modules/radar/commands/remediate.md +156 -0
- package/modules/radar/commands/report.md +172 -0
- package/modules/radar/commands/resume.md +176 -0
- package/modules/radar/commands/status.md +148 -0
- package/modules/radar/commands/transform.md +205 -0
- package/modules/radar/commands/validate.md +177 -0
- package/modules/radar/docs/ARCHITECTURE.md +336 -0
- package/modules/radar/docs/GETTING-STARTED.md +287 -0
- package/modules/radar/docs/standards/agents.md +197 -0
- package/modules/radar/docs/standards/commands.md +250 -0
- package/modules/radar/docs/standards/domains.md +191 -0
- package/modules/radar/docs/standards/personas.md +211 -0
- package/modules/radar/docs/standards/rules.md +218 -0
- package/modules/radar/docs/standards/runtime.md +445 -0
- package/modules/radar/docs/standards/schemas.md +269 -0
- package/modules/radar/docs/standards/tools.md +273 -0
- package/modules/radar/docs/standards/workflows.md +254 -0
- package/modules/radar/docs/terminal.svg +72 -0
- package/modules/radar/docs/validation/convention-compliance-report.md +183 -0
- package/modules/radar/docs/validation/cross-reference-report.md +195 -0
- package/modules/radar/docs/validation/validation-summary.md +118 -0
- package/modules/radar/docs/validation/version-manifest.yaml +363 -0
- package/modules/radar/install.sh +711 -0
- package/modules/radar/integration.js +53 -0
- package/modules/radar/src/core/agents/architect.md +25 -0
- package/modules/radar/src/core/agents/compliance-officer.md +25 -0
- package/modules/radar/src/core/agents/data-engineer.md +25 -0
- package/modules/radar/src/core/agents/devils-advocate.md +22 -0
- package/modules/radar/src/core/agents/performance-engineer.md +25 -0
- package/modules/radar/src/core/agents/principal-engineer.md +23 -0
- package/modules/radar/src/core/agents/reality-gap-analyst.md +22 -0
- package/modules/radar/src/core/agents/security-engineer.md +25 -0
- package/modules/radar/src/core/agents/senior-app-engineer.md +25 -0
- package/modules/radar/src/core/agents/sre.md +25 -0
- package/modules/radar/src/core/agents/staff-engineer.md +23 -0
- package/modules/radar/src/core/agents/test-engineer.md +25 -0
- package/modules/radar/src/core/personas/architect.md +111 -0
- package/modules/radar/src/core/personas/compliance-officer.md +104 -0
- package/modules/radar/src/core/personas/data-engineer.md +113 -0
- package/modules/radar/src/core/personas/devils-advocate.md +105 -0
- package/modules/radar/src/core/personas/performance-engineer.md +119 -0
- package/modules/radar/src/core/personas/principal-engineer.md +119 -0
- package/modules/radar/src/core/personas/reality-gap-analyst.md +111 -0
- package/modules/radar/src/core/personas/security-engineer.md +108 -0
- package/modules/radar/src/core/personas/senior-app-engineer.md +111 -0
- package/modules/radar/src/core/personas/sre.md +117 -0
- package/modules/radar/src/core/personas/staff-engineer.md +109 -0
- package/modules/radar/src/core/personas/test-engineer.md +109 -0
- package/modules/radar/src/core/workflows/disagreement-resolution.md +183 -0
- package/modules/radar/src/core/workflows/phase-0-context.md +148 -0
- package/modules/radar/src/core/workflows/phase-1-reconnaissance.md +169 -0
- package/modules/radar/src/core/workflows/phase-2-domain-audits.md +190 -0
- package/modules/radar/src/core/workflows/phase-3-cross-domain.md +177 -0
- package/modules/radar/src/core/workflows/phase-4-adversarial-review.md +165 -0
- package/modules/radar/src/core/workflows/phase-5-report.md +189 -0
- package/modules/radar/src/core/workflows/phase-checkpoint.md +222 -0
- package/modules/radar/src/core/workflows/session-handoff.md +152 -0
- package/modules/radar/src/domains/00-context.md +201 -0
- package/modules/radar/src/domains/01-architecture.md +248 -0
- package/modules/radar/src/domains/02-data.md +224 -0
- package/modules/radar/src/domains/03-correctness.md +230 -0
- package/modules/radar/src/domains/04-security.md +274 -0
- package/modules/radar/src/domains/05-compliance.md +228 -0
- package/modules/radar/src/domains/06-testing.md +228 -0
- package/modules/radar/src/domains/07-reliability.md +246 -0
- package/modules/radar/src/domains/08-performance.md +247 -0
- package/modules/radar/src/domains/09-maintainability.md +271 -0
- package/modules/radar/src/domains/10-operability.md +250 -0
- package/modules/radar/src/domains/11-change-risk.md +246 -0
- package/modules/radar/src/domains/12-team-risk.md +221 -0
- package/modules/radar/src/domains/13-risk-synthesis.md +202 -0
- package/modules/radar/src/rules/agent-boundaries.md +78 -0
- package/modules/radar/src/rules/disagreement-protocol.md +76 -0
- package/modules/radar/src/rules/epistemic-hygiene.md +78 -0
- package/modules/radar/src/schemas/confidence.md +185 -0
- package/modules/radar/src/schemas/disagreement.md +238 -0
- package/modules/radar/src/schemas/finding.md +287 -0
- package/modules/radar/src/schemas/report-section.md +150 -0
- package/modules/radar/src/schemas/signal.md +108 -0
- package/modules/radar/src/tools/checkov.md +463 -0
- package/modules/radar/src/tools/git-history.md +581 -0
- package/modules/radar/src/tools/gitleaks.md +447 -0
- package/modules/radar/src/tools/grype.md +611 -0
- package/modules/radar/src/tools/semgrep.md +378 -0
- package/modules/radar/src/tools/sonarqube.md +550 -0
- package/modules/radar/src/tools/syft.md +539 -0
- package/modules/radar/src/tools/trivy.md +439 -0
- package/modules/radar/src/transform/agents/change-risk-modeler.md +24 -0
- package/modules/radar/src/transform/agents/execution-validator.md +24 -0
- package/modules/radar/src/transform/agents/guardrail-generator.md +24 -0
- package/modules/radar/src/transform/agents/pedagogy-agent.md +24 -0
- package/modules/radar/src/transform/agents/remediation-architect.md +24 -0
- package/modules/radar/src/transform/personas/change-risk-modeler.md +95 -0
- package/modules/radar/src/transform/personas/execution-validator.md +95 -0
- package/modules/radar/src/transform/personas/guardrail-generator.md +103 -0
- package/modules/radar/src/transform/personas/pedagogy-agent.md +105 -0
- package/modules/radar/src/transform/personas/remediation-architect.md +95 -0
- package/modules/radar/src/transform/rules/change-risk-rules.md +87 -0
- package/modules/radar/src/transform/rules/safety-governance.md +87 -0
- package/modules/radar/src/transform/schemas/change-risk.md +139 -0
- package/modules/radar/src/transform/schemas/intervention-level.md +207 -0
- package/modules/radar/src/transform/schemas/playbook.md +205 -0
- package/modules/radar/src/transform/schemas/verification-plan.md +134 -0
- package/modules/radar/src/transform/workflows/phase-6-remediation.md +148 -0
- package/modules/radar/src/transform/workflows/phase-7-risk-validation.md +161 -0
- package/modules/radar/src/transform/workflows/phase-8-execution-planning.md +159 -0
- package/modules/radar/src/transform/workflows/transform-safety.md +158 -0
- package/modules/vector/.vector-template/sessions/.gitkeep +0 -0
- package/modules/vector/.vector-template/vector.json +72 -0
- package/modules/vector/AUDIT-CLAUDEMD.md +154 -0
- package/modules/vector/INSTALL.md +185 -0
- package/modules/vector/LICENSE +21 -0
- package/modules/vector/README.md +409 -0
- package/modules/vector/VECTOR-BLOCK.md +57 -0
- package/modules/vector/assets/terminal.svg +68 -0
- package/modules/vector/bin/install.js +455 -0
- package/modules/vector/bin/migrate-v1-to-v2.sh +492 -0
- package/modules/vector/commands/help.md +46 -0
- package/modules/vector/hooks/vector-hook.py +775 -0
- package/modules/vector/mcp/index.js +118 -0
- package/modules/vector/mcp/package.json +10 -0
- package/modules/vector/mcp/tools/decisions.js +269 -0
- package/modules/vector/mcp/tools/domains.js +361 -0
- package/modules/vector/mcp/tools/staging.js +252 -0
- package/modules/vector/mcp/tools/vector-json.js +647 -0
- package/modules/vector/package.json +38 -0
- package/modules/vector/schemas/vector.schema.json +237 -0
- package/package.json +39 -0
- package/shared/branding/branding.js +70 -0
- package/shared/config/defaults.json +59 -0
- package/shared/events/README.md +175 -0
- package/shared/events/event-bus.js +134 -0
- package/shared/events/event_bus.py +255 -0
- package/shared/events/integrations.js +161 -0
- package/shared/events/schemas/audit-complete.schema.json +21 -0
- package/shared/events/schemas/phase-progress.schema.json +23 -0
- package/shared/events/schemas/plan-created.schema.json +21 -0
|
@@ -0,0 +1,611 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: grype
|
|
3
|
+
name: Grype
|
|
4
|
+
type: vulnerability_scan
|
|
5
|
+
domains_fed: ["04", "05"]
|
|
6
|
+
install_required: true
|
|
7
|
+
install_command: "See Installation section — curl, brew, or Docker"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
Vulnerability scanner from the Anchore ecosystem that matches cataloged packages against known CVE databases. Operates in two distinct modes: direct filesystem or container image scanning, and SBOM-input mode (consuming a Syft-generated SBOM as stdin). The SBOM-input mode makes Grype the natural complement to Syft — Syft catalogs, Grype finds vulnerabilities. Feeds Security (04) and Compliance (05) domains.
|
|
13
|
+
|
|
14
|
+
In Radar workflows, both modes are valid. Direct scanning is faster for one-shot audits. SBOM-input mode is preferred when Syft has already been run, enabling reuse of the package catalog without re-traversal. Grype maintains its own vulnerability database (grype-db), independent of Trivy's database, providing a second opinion on the same dependency surface.
|
|
15
|
+
|
|
16
|
+
Signals are NOT findings. Grype produces evidence that agents interpret.
|
|
17
|
+
|
|
18
|
+
## Configuration
|
|
19
|
+
|
|
20
|
+
Grype supports configuration via a `.grype.yaml` file placed at the project root or in the user home directory:
|
|
21
|
+
|
|
22
|
+
**Configuration File** (`.grype.yaml`):
|
|
23
|
+
```yaml
|
|
24
|
+
output: json
|
|
25
|
+
file: ""
|
|
26
|
+
db:
|
|
27
|
+
cache-dir: ~/.cache/grype/db
|
|
28
|
+
update-url: https://toolbox-data.anchore.io/grype/databases/listing.json
|
|
29
|
+
auto-update: true
|
|
30
|
+
validate-by-hash-on-start: false
|
|
31
|
+
dev:
|
|
32
|
+
profile-cpu: false
|
|
33
|
+
log:
|
|
34
|
+
structured: false
|
|
35
|
+
level: warn
|
|
36
|
+
fail-on-severity: ""
|
|
37
|
+
only-fixed: false
|
|
38
|
+
only-notfixed: false
|
|
39
|
+
ignore:
|
|
40
|
+
- vulnerability: CVE-2024-12345
|
|
41
|
+
reason: "Vendored with backported patch"
|
|
42
|
+
- vulnerability: CVE-2024-67890
|
|
43
|
+
reason: "No exploitable code path in our usage"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Key Configuration Options**:
|
|
47
|
+
- **Severity Filtering**: `--fail-on-severity critical` exits non-zero when findings meet threshold, useful for CI gates
|
|
48
|
+
- **Fixed/Unfixed Filtering**: `--only-fixed` restricts output to vulnerabilities with a known fix, reducing noise
|
|
49
|
+
- **DB Auto-Update**: Automatic grype-db refresh on each run (configurable); first run downloads ~50MB
|
|
50
|
+
- **Ignore List**: Per-project `ignore` entries with required `reason` field for audit trails
|
|
51
|
+
- **Output Format**: json, table, cyclonedx, sarif, template
|
|
52
|
+
|
|
53
|
+
**Environment Variables**:
|
|
54
|
+
- `GRYPE_DB_CACHE_DIR`: Override default database cache location
|
|
55
|
+
- `GRYPE_DB_UPDATE_URL`: Custom vulnerability database mirror for air-gapped environments
|
|
56
|
+
- `GRYPE_CHECK_FOR_APP_UPDATE`: Disable Grype's self-update check (`false` for CI)
|
|
57
|
+
|
|
58
|
+
## Execution
|
|
59
|
+
|
|
60
|
+
### Installation Options
|
|
61
|
+
|
|
62
|
+
**Platform-Agnostic Methods**:
|
|
63
|
+
|
|
64
|
+
1. **Installation Script** (Linux/macOS — recommended):
|
|
65
|
+
```bash
|
|
66
|
+
curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
2. **Homebrew** (macOS):
|
|
70
|
+
```bash
|
|
71
|
+
brew tap anchore/grype
|
|
72
|
+
brew install grype
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
3. **Docker** (recommended for CI/CD and consistency):
|
|
76
|
+
```bash
|
|
77
|
+
docker pull anchore/grype:latest
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
4. **Binary Download** (all platforms):
|
|
81
|
+
Download from [GitHub Releases](https://github.com/anchore/grype/releases)
|
|
82
|
+
|
|
83
|
+
### Primary Execution Commands
|
|
84
|
+
|
|
85
|
+
**Direct Filesystem Scanning** (Radar primary use case, Mode 1):
|
|
86
|
+
```bash
|
|
87
|
+
grype dir:{target_path} --output json --file {output_dir}/grype-results.json
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**SBOM-Input Mode** (Mode 2 — consumes Syft output, preferred when Syft already ran):
|
|
91
|
+
```bash
|
|
92
|
+
syft {target_path} -o syft-json | grype --output json --file {output_dir}/grype-results.json
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**SBOM from File** (Mode 2 variant — when Syft output is already saved to disk):
|
|
96
|
+
```bash
|
|
97
|
+
grype sbom:{output_dir}/syft-sbom.json --output json --file {output_dir}/grype-results.json
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Docker Variant** (direct scan):
|
|
101
|
+
```bash
|
|
102
|
+
docker run --rm \
|
|
103
|
+
-v {target_path}:/target \
|
|
104
|
+
-v ~/.cache/grype:/root/.cache/grype \
|
|
105
|
+
anchore/grype:latest \
|
|
106
|
+
dir:/target \
|
|
107
|
+
--output json \
|
|
108
|
+
--file /target/.radar/signals/grype-results.json
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Container Image Scanning**:
|
|
112
|
+
```bash
|
|
113
|
+
grype {image_name}:{tag} --output json --file {output_dir}/grype-image-results.json
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Execution Parameters
|
|
117
|
+
|
|
118
|
+
| Parameter | Purpose | Values | Default |
|
|
119
|
+
|-----------|---------|--------|---------|
|
|
120
|
+
| `--output` | Output format | json, table, cyclonedx, sarif, template | table |
|
|
121
|
+
| `--file` | Output file path | file path | stdout |
|
|
122
|
+
| `--fail-on-severity` | Exit non-zero at threshold | critical, high, medium, low, negligible | "" (disabled) |
|
|
123
|
+
| `--only-fixed` | Suppress unfixed findings | boolean | false |
|
|
124
|
+
| `--only-notfixed` | Show only unfixed findings | boolean | false |
|
|
125
|
+
| `--add-cpes-if-none` | Attempt CPE generation when missing | boolean | false |
|
|
126
|
+
| `--by-cve` | Group results by CVE rather than package | boolean | false |
|
|
127
|
+
| `--config` | Custom config file path | file path | .grype.yaml |
|
|
128
|
+
| `--quiet` | Suppress all non-essential output | boolean | false |
|
|
129
|
+
|
|
130
|
+
### Runtime Characteristics
|
|
131
|
+
|
|
132
|
+
- **First Run**: 30-60 seconds (includes ~50MB vulnerability database download)
|
|
133
|
+
- **Subsequent Runs**: 5-15 seconds (database cached, fast matcher)
|
|
134
|
+
- **SBOM-Input Mode**: Slightly faster than direct scan — skips package cataloging
|
|
135
|
+
- **Database Updates**: Automatic on each run by default (configurable to manual)
|
|
136
|
+
- **Resource Usage**: Low CPU and memory; minimal disk I/O once DB is cached
|
|
137
|
+
- **Network Requirements**: Initial DB download only; `--db.auto-update=false` for air-gapped use
|
|
138
|
+
|
|
139
|
+
## Output Format
|
|
140
|
+
|
|
141
|
+
Grype produces structured JSON output with a flat matches array (unlike Trivy's per-target nesting):
|
|
142
|
+
|
|
143
|
+
```json
|
|
144
|
+
{
|
|
145
|
+
"matches": [
|
|
146
|
+
{
|
|
147
|
+
"vulnerability": {
|
|
148
|
+
"id": "CVE-2024-45590",
|
|
149
|
+
"dataSource": "https://nvd.nist.gov/vuln/detail/CVE-2024-45590",
|
|
150
|
+
"namespace": "npm:advisory",
|
|
151
|
+
"severity": "High",
|
|
152
|
+
"urls": [
|
|
153
|
+
"https://nvd.nist.gov/vuln/detail/CVE-2024-45590",
|
|
154
|
+
"https://github.com/expressjs/express/security/advisories/GHSA-qw6h-vgh9-j6wx"
|
|
155
|
+
],
|
|
156
|
+
"description": "Express.js static file serving middleware allows path traversal attacks via specially crafted requests with encoded path separators, enabling unauthorized access to files outside the intended directory.",
|
|
157
|
+
"cvss": [
|
|
158
|
+
{
|
|
159
|
+
"version": "3.1",
|
|
160
|
+
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N",
|
|
161
|
+
"metrics": {
|
|
162
|
+
"baseScore": 7.5,
|
|
163
|
+
"exploitabilityScore": 3.9,
|
|
164
|
+
"impactScore": 3.6
|
|
165
|
+
},
|
|
166
|
+
"vendorMetadata": {}
|
|
167
|
+
}
|
|
168
|
+
],
|
|
169
|
+
"fix": {
|
|
170
|
+
"versions": ["4.19.2"],
|
|
171
|
+
"state": "fixed"
|
|
172
|
+
},
|
|
173
|
+
"advisories": [
|
|
174
|
+
{
|
|
175
|
+
"id": "GHSA-qw6h-vgh9-j6wx",
|
|
176
|
+
"link": "https://github.com/expressjs/express/security/advisories/GHSA-qw6h-vgh9-j6wx"
|
|
177
|
+
}
|
|
178
|
+
]
|
|
179
|
+
},
|
|
180
|
+
"relatedVulnerabilities": [
|
|
181
|
+
{
|
|
182
|
+
"id": "GHSA-qw6h-vgh9-j6wx",
|
|
183
|
+
"dataSource": "https://github.com/advisories/GHSA-qw6h-vgh9-j6wx",
|
|
184
|
+
"namespace": "github:language:javascript",
|
|
185
|
+
"severity": "High",
|
|
186
|
+
"urls": ["https://github.com/advisories/GHSA-qw6h-vgh9-j6wx"],
|
|
187
|
+
"description": "Express.js path traversal vulnerability in static file serving",
|
|
188
|
+
"cvss": [],
|
|
189
|
+
"fix": {
|
|
190
|
+
"versions": ["4.19.2"],
|
|
191
|
+
"state": "fixed"
|
|
192
|
+
},
|
|
193
|
+
"advisories": []
|
|
194
|
+
}
|
|
195
|
+
],
|
|
196
|
+
"matchDetails": [
|
|
197
|
+
{
|
|
198
|
+
"type": "exact-indirect-match",
|
|
199
|
+
"matcher": "javascript-matcher",
|
|
200
|
+
"searchedBy": {
|
|
201
|
+
"language": "javascript",
|
|
202
|
+
"namespace": "npm:advisory",
|
|
203
|
+
"package": {
|
|
204
|
+
"name": "express",
|
|
205
|
+
"version": "4.17.1"
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
"found": {
|
|
209
|
+
"versionConstraint": "< 4.19.2 (unknown)",
|
|
210
|
+
"vulnerabilityID": "CVE-2024-45590"
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
],
|
|
214
|
+
"artifact": {
|
|
215
|
+
"id": "a1b2c3d4e5f60001",
|
|
216
|
+
"name": "express",
|
|
217
|
+
"version": "4.17.1",
|
|
218
|
+
"type": "npm",
|
|
219
|
+
"locations": [
|
|
220
|
+
{
|
|
221
|
+
"path": "/package-lock.json",
|
|
222
|
+
"layerID": ""
|
|
223
|
+
}
|
|
224
|
+
],
|
|
225
|
+
"language": "javascript",
|
|
226
|
+
"licenses": ["MIT"],
|
|
227
|
+
"cpes": [
|
|
228
|
+
"cpe:2.3:a:expressjs:express:4.17.1:*:*:*:*:node.js:*:*"
|
|
229
|
+
],
|
|
230
|
+
"purl": "pkg:npm/express@4.17.1",
|
|
231
|
+
"upstreams": []
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"vulnerability": {
|
|
236
|
+
"id": "CVE-2024-43796",
|
|
237
|
+
"dataSource": "https://nvd.nist.gov/vuln/detail/CVE-2024-43796",
|
|
238
|
+
"namespace": "npm:advisory",
|
|
239
|
+
"severity": "Critical",
|
|
240
|
+
"urls": [
|
|
241
|
+
"https://nvd.nist.gov/vuln/detail/CVE-2024-43796",
|
|
242
|
+
"https://github.com/axios/axios/issues/6463"
|
|
243
|
+
],
|
|
244
|
+
"description": "Axios library allows Server-Side Request Forgery (SSRF) attacks via URL parsing inconsistencies when handling user-controlled URLs with CRLF injection, potentially enabling attackers to bypass allow-lists and access internal resources.",
|
|
245
|
+
"cvss": [
|
|
246
|
+
{
|
|
247
|
+
"version": "3.1",
|
|
248
|
+
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N",
|
|
249
|
+
"metrics": {
|
|
250
|
+
"baseScore": 9.3,
|
|
251
|
+
"exploitabilityScore": 3.9,
|
|
252
|
+
"impactScore": 5.8
|
|
253
|
+
},
|
|
254
|
+
"vendorMetadata": {}
|
|
255
|
+
}
|
|
256
|
+
],
|
|
257
|
+
"fix": {
|
|
258
|
+
"versions": ["1.7.4"],
|
|
259
|
+
"state": "fixed"
|
|
260
|
+
},
|
|
261
|
+
"advisories": []
|
|
262
|
+
},
|
|
263
|
+
"relatedVulnerabilities": [],
|
|
264
|
+
"matchDetails": [
|
|
265
|
+
{
|
|
266
|
+
"type": "exact-direct-match",
|
|
267
|
+
"matcher": "javascript-matcher",
|
|
268
|
+
"searchedBy": {
|
|
269
|
+
"language": "javascript",
|
|
270
|
+
"namespace": "npm:advisory",
|
|
271
|
+
"package": {
|
|
272
|
+
"name": "axios",
|
|
273
|
+
"version": "0.21.1"
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
"found": {
|
|
277
|
+
"versionConstraint": "< 1.7.4 (unknown)",
|
|
278
|
+
"vulnerabilityID": "CVE-2024-43796"
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
],
|
|
282
|
+
"artifact": {
|
|
283
|
+
"id": "b2c3d4e5f6a70002",
|
|
284
|
+
"name": "axios",
|
|
285
|
+
"version": "0.21.1",
|
|
286
|
+
"type": "npm",
|
|
287
|
+
"locations": [
|
|
288
|
+
{
|
|
289
|
+
"path": "/package-lock.json",
|
|
290
|
+
"layerID": ""
|
|
291
|
+
}
|
|
292
|
+
],
|
|
293
|
+
"language": "javascript",
|
|
294
|
+
"licenses": ["MIT"],
|
|
295
|
+
"cpes": [
|
|
296
|
+
"cpe:2.3:a:axios-http:axios:0.21.1:*:*:*:*:node.js:*:*"
|
|
297
|
+
],
|
|
298
|
+
"purl": "pkg:npm/axios@0.21.1",
|
|
299
|
+
"upstreams": []
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"vulnerability": {
|
|
304
|
+
"id": "CVE-2023-26136",
|
|
305
|
+
"dataSource": "https://nvd.nist.gov/vuln/detail/CVE-2023-26136",
|
|
306
|
+
"namespace": "npm:advisory",
|
|
307
|
+
"severity": "Medium",
|
|
308
|
+
"urls": [
|
|
309
|
+
"https://nvd.nist.gov/vuln/detail/CVE-2023-26136",
|
|
310
|
+
"https://github.com/salesforce/tough-cookie/issues/282"
|
|
311
|
+
],
|
|
312
|
+
"description": "The tough-cookie package before 4.1.3 for Node.js allows prototype pollution via cookie values, which could enable arbitrary property injection and potential denial of service.",
|
|
313
|
+
"cvss": [
|
|
314
|
+
{
|
|
315
|
+
"version": "3.1",
|
|
316
|
+
"vector": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:L",
|
|
317
|
+
"metrics": {
|
|
318
|
+
"baseScore": 4.8,
|
|
319
|
+
"exploitabilityScore": 2.2,
|
|
320
|
+
"impactScore": 2.5
|
|
321
|
+
},
|
|
322
|
+
"vendorMetadata": {}
|
|
323
|
+
}
|
|
324
|
+
],
|
|
325
|
+
"fix": {
|
|
326
|
+
"versions": ["4.1.3"],
|
|
327
|
+
"state": "fixed"
|
|
328
|
+
},
|
|
329
|
+
"advisories": []
|
|
330
|
+
},
|
|
331
|
+
"relatedVulnerabilities": [],
|
|
332
|
+
"matchDetails": [
|
|
333
|
+
{
|
|
334
|
+
"type": "exact-indirect-match",
|
|
335
|
+
"matcher": "javascript-matcher",
|
|
336
|
+
"searchedBy": {
|
|
337
|
+
"language": "javascript",
|
|
338
|
+
"namespace": "npm:advisory",
|
|
339
|
+
"package": {
|
|
340
|
+
"name": "tough-cookie",
|
|
341
|
+
"version": "2.5.0"
|
|
342
|
+
}
|
|
343
|
+
},
|
|
344
|
+
"found": {
|
|
345
|
+
"versionConstraint": "< 4.1.3 (unknown)",
|
|
346
|
+
"vulnerabilityID": "CVE-2023-26136"
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
],
|
|
350
|
+
"artifact": {
|
|
351
|
+
"id": "c3d4e5f6a7b80003",
|
|
352
|
+
"name": "tough-cookie",
|
|
353
|
+
"version": "2.5.0",
|
|
354
|
+
"type": "npm",
|
|
355
|
+
"locations": [
|
|
356
|
+
{
|
|
357
|
+
"path": "/package-lock.json",
|
|
358
|
+
"layerID": ""
|
|
359
|
+
}
|
|
360
|
+
],
|
|
361
|
+
"language": "javascript",
|
|
362
|
+
"licenses": ["BSD-3-Clause"],
|
|
363
|
+
"cpes": [
|
|
364
|
+
"cpe:2.3:a:salesforce:tough-cookie:2.5.0:*:*:*:*:node.js:*:*"
|
|
365
|
+
],
|
|
366
|
+
"purl": "pkg:npm/tough-cookie@2.5.0",
|
|
367
|
+
"upstreams": []
|
|
368
|
+
}
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"vulnerability": {
|
|
372
|
+
"id": "CVE-2024-35195",
|
|
373
|
+
"dataSource": "https://nvd.nist.gov/vuln/detail/CVE-2024-35195",
|
|
374
|
+
"namespace": "pypi:advisory",
|
|
375
|
+
"severity": "Medium",
|
|
376
|
+
"urls": [
|
|
377
|
+
"https://nvd.nist.gov/vuln/detail/CVE-2024-35195",
|
|
378
|
+
"https://github.com/psf/requests/security/advisories/GHSA-9wx4-h78v-vm56"
|
|
379
|
+
],
|
|
380
|
+
"description": "The requests library for Python does not strip the Proxy-Authorization header when handling cross-origin redirects, potentially leaking proxy credentials to third-party servers.",
|
|
381
|
+
"cvss": [
|
|
382
|
+
{
|
|
383
|
+
"version": "3.1",
|
|
384
|
+
"vector": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N",
|
|
385
|
+
"metrics": {
|
|
386
|
+
"baseScore": 5.9,
|
|
387
|
+
"exploitabilityScore": 2.2,
|
|
388
|
+
"impactScore": 3.6
|
|
389
|
+
},
|
|
390
|
+
"vendorMetadata": {}
|
|
391
|
+
}
|
|
392
|
+
],
|
|
393
|
+
"fix": {
|
|
394
|
+
"versions": ["2.32.0"],
|
|
395
|
+
"state": "fixed"
|
|
396
|
+
},
|
|
397
|
+
"advisories": [
|
|
398
|
+
{
|
|
399
|
+
"id": "GHSA-9wx4-h78v-vm56",
|
|
400
|
+
"link": "https://github.com/psf/requests/security/advisories/GHSA-9wx4-h78v-vm56"
|
|
401
|
+
}
|
|
402
|
+
]
|
|
403
|
+
},
|
|
404
|
+
"relatedVulnerabilities": [],
|
|
405
|
+
"matchDetails": [
|
|
406
|
+
{
|
|
407
|
+
"type": "exact-direct-match",
|
|
408
|
+
"matcher": "python-matcher",
|
|
409
|
+
"searchedBy": {
|
|
410
|
+
"language": "python",
|
|
411
|
+
"namespace": "pypi:advisory",
|
|
412
|
+
"package": {
|
|
413
|
+
"name": "requests",
|
|
414
|
+
"version": "2.28.0"
|
|
415
|
+
}
|
|
416
|
+
},
|
|
417
|
+
"found": {
|
|
418
|
+
"versionConstraint": "< 2.32.0 (unknown)",
|
|
419
|
+
"vulnerabilityID": "CVE-2024-35195"
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
],
|
|
423
|
+
"artifact": {
|
|
424
|
+
"id": "d4e5f6a7b8c90004",
|
|
425
|
+
"name": "requests",
|
|
426
|
+
"version": "2.28.0",
|
|
427
|
+
"type": "python",
|
|
428
|
+
"locations": [
|
|
429
|
+
{
|
|
430
|
+
"path": "/requirements.txt",
|
|
431
|
+
"layerID": ""
|
|
432
|
+
}
|
|
433
|
+
],
|
|
434
|
+
"language": "python",
|
|
435
|
+
"licenses": ["Apache-2.0"],
|
|
436
|
+
"cpes": [
|
|
437
|
+
"cpe:2.3:a:python-requests:requests:2.28.0:*:*:*:*:python:*:*"
|
|
438
|
+
],
|
|
439
|
+
"purl": "pkg:pypi/requests@2.28.0",
|
|
440
|
+
"upstreams": []
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
],
|
|
444
|
+
"source": {
|
|
445
|
+
"type": "directory",
|
|
446
|
+
"target": {
|
|
447
|
+
"path": "/home/user/project"
|
|
448
|
+
}
|
|
449
|
+
},
|
|
450
|
+
"distro": {
|
|
451
|
+
"name": "",
|
|
452
|
+
"version": "",
|
|
453
|
+
"idLike": []
|
|
454
|
+
},
|
|
455
|
+
"descriptor": {
|
|
456
|
+
"name": "grype",
|
|
457
|
+
"version": "0.74.3",
|
|
458
|
+
"configuration": {
|
|
459
|
+
"output": ["json"],
|
|
460
|
+
"file": "",
|
|
461
|
+
"distro": "",
|
|
462
|
+
"add-cpes-if-none": false,
|
|
463
|
+
"output-template-file": "",
|
|
464
|
+
"quiet": false,
|
|
465
|
+
"check-for-app-update": true,
|
|
466
|
+
"only-fixed": false,
|
|
467
|
+
"only-notfixed": false,
|
|
468
|
+
"fail-on-severity": "",
|
|
469
|
+
"registry": {
|
|
470
|
+
"insecure-skip-tls-verify": false,
|
|
471
|
+
"insecure-use-http": false,
|
|
472
|
+
"auth": []
|
|
473
|
+
},
|
|
474
|
+
"ignore": [],
|
|
475
|
+
"db": {
|
|
476
|
+
"cache-dir": "/root/.cache/grype/db",
|
|
477
|
+
"update-url": "https://toolbox-data.anchore.io/grype/databases/listing.json",
|
|
478
|
+
"ca-cert": "",
|
|
479
|
+
"auto-update": true,
|
|
480
|
+
"validate-by-hash-on-start": false
|
|
481
|
+
}
|
|
482
|
+
},
|
|
483
|
+
"db": {
|
|
484
|
+
"built": "2026-02-15T01:16:13Z",
|
|
485
|
+
"schemaVersion": 5,
|
|
486
|
+
"location": "/root/.cache/grype/db/5",
|
|
487
|
+
"checksum": "sha256:a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2",
|
|
488
|
+
"error": null
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
**Key Output Fields**:
|
|
495
|
+
- `matches[]`: Flat array of vulnerability match objects (one entry per CVE+package combination)
|
|
496
|
+
- `vulnerability.id`: CVE identifier (e.g., CVE-2024-45590)
|
|
497
|
+
- `vulnerability.severity`: Critical, High, Medium, Low, Negligible
|
|
498
|
+
- `vulnerability.cvss[].metrics.baseScore`: CVSS v3 base score
|
|
499
|
+
- `vulnerability.fix.versions[]`: Version(s) containing the fix
|
|
500
|
+
- `vulnerability.fix.state`: "fixed", "not-fixed", "wont-fix", "unknown"
|
|
501
|
+
- `matchDetails[].type`: Match confidence indicator — `exact-direct-match`, `exact-indirect-match`, `cpe-match`
|
|
502
|
+
- `artifact.name`: Affected package name
|
|
503
|
+
- `artifact.version`: Installed version
|
|
504
|
+
- `artifact.type`: Package ecosystem (npm, python, go, java, etc.)
|
|
505
|
+
- `artifact.locations[].path`: File containing the package declaration
|
|
506
|
+
- `artifact.purl`: Package URL for unambiguous package identification
|
|
507
|
+
- `source`: Scanned target details (directory, image, SBOM file)
|
|
508
|
+
- `descriptor.db.built`: Timestamp of the vulnerability database used
|
|
509
|
+
|
|
510
|
+
## Normalization
|
|
511
|
+
|
|
512
|
+
Grype raw output requires normalization to Radar signal format:
|
|
513
|
+
|
|
514
|
+
| Grype Field | Radar Signal Field | Transformation Logic |
|
|
515
|
+
|-------------|-------------------|----------------------|
|
|
516
|
+
| `vulnerability.id` | `source_rule` | Direct mapping (e.g., CVE-2024-45590) |
|
|
517
|
+
| Auto-generated | `signal_id` | Pattern: `S-GRP-{NNN}` (sequential numbering) |
|
|
518
|
+
| Fixed value | `source_tool` | Always "grype" |
|
|
519
|
+
| `artifact.locations[0].path` + `artifact.name` | `file_path` | Combine: `{path}:{name}` (e.g., "/package-lock.json:express") |
|
|
520
|
+
| `vulnerability.description` + `artifact.version` + `vulnerability.fix.versions[0]` | `context` | Enriched: "{description} Found: {version}, Fixed: {fixVersion}" |
|
|
521
|
+
| `vulnerability.severity` | `severity` | Map: Critical→critical, High→high, Medium→medium, Low→low, Negligible→informational |
|
|
522
|
+
| `matchDetails[].type` | `confidence_estimate` | Match-type-based: exact-direct-match→high, exact-indirect-match→medium, cpe-match→low |
|
|
523
|
+
| Derived from `artifact.type` + package role | `blast_radius` | Core dependency→widespread, dev dependency→localized, transitive→moderate |
|
|
524
|
+
| Derived from CVE type + CWE classification | `domain_relevance` | Most CVEs→["04"], data/crypto CVEs→["04","05"] |
|
|
525
|
+
| `vulnerability.fix.state` + `vulnerability.fix.versions` | Signal enrichment | "fixed" with versions→actionable, "not-fixed"→informational flag |
|
|
526
|
+
|
|
527
|
+
### Normalization Rules
|
|
528
|
+
|
|
529
|
+
**Severity Mapping**:
|
|
530
|
+
- Critical → `severity: "critical"`
|
|
531
|
+
- High → `severity: "high"`
|
|
532
|
+
- Medium → `severity: "medium"`
|
|
533
|
+
- Low → `severity: "low"`
|
|
534
|
+
- Negligible → `severity: "informational"` (track but do not escalate)
|
|
535
|
+
|
|
536
|
+
**Confidence Estimation** (based on `matchDetails[].type`):
|
|
537
|
+
- `exact-direct-match` → `confidence_estimate: "high"` (package version directly confirmed in DB)
|
|
538
|
+
- `exact-indirect-match` → `confidence_estimate: "medium"` (matched via constraint range, not exact version)
|
|
539
|
+
- `cpe-match` → `confidence_estimate: "low"` (CPE-based lookup, higher false positive risk)
|
|
540
|
+
- Multiple match details present → use highest confidence type
|
|
541
|
+
- No match details → `confidence_estimate: "medium"` (default for known CVEs)
|
|
542
|
+
|
|
543
|
+
**Blast Radius Derivation**:
|
|
544
|
+
- Core/production dependency (present in `dependencies` or `install_requires`) → `blast_radius: "widespread"`
|
|
545
|
+
- Dev/test dependency (present in `devDependencies`, `[dev-packages]`, or `[test]` extras) → `blast_radius: "localized"`
|
|
546
|
+
- Transitive dependency (not in top-level manifest, appears only in lock file) → `blast_radius: "moderate"`
|
|
547
|
+
- Determine via cross-referencing `artifact.locations[].path` against direct vs. transitive dependency lists
|
|
548
|
+
|
|
549
|
+
**Domain Relevance Assignment**:
|
|
550
|
+
- Default → `domain_relevance: ["04"]` (Security domain)
|
|
551
|
+
- Data exposure CVEs (CWE-200, CWE-312, CWE-359) → `domain_relevance: ["04", "05"]`
|
|
552
|
+
- Cryptographic CVEs (CWE-295, CWE-327, CWE-338) → `domain_relevance: ["04", "05"]`
|
|
553
|
+
- Authentication/credential CVEs (CWE-287, CWE-522) → `domain_relevance: ["04", "05"]`
|
|
554
|
+
- Compliance-referenced CVEs (HIPAA, PCI-DSS adjacent) → `domain_relevance: ["04", "05"]`
|
|
555
|
+
|
|
556
|
+
**Deduplication Strategy**:
|
|
557
|
+
- Same CVE affecting the same package version in multiple locations → Single signal with aggregated locations
|
|
558
|
+
- Key: `{vulnerability.id}:{artifact.name}:{artifact.version}`
|
|
559
|
+
- Merge `artifact.locations` entries: `["/package-lock.json:axios", "/yarn.lock:axios"]`
|
|
560
|
+
- When Grype and Trivy both detect the same CVE, prefer the higher-confidence match detail; note both tools in `context`
|
|
561
|
+
|
|
562
|
+
**Special Cases**:
|
|
563
|
+
- `fix.state: "wont-fix"` → Flag as accepted upstream risk; lower escalation priority but do not suppress
|
|
564
|
+
- `fix.state: "not-fixed"` → Mark as "unfixed", track for future remediation cycles
|
|
565
|
+
- Negligible severity → Emit as informational signal only; do not contribute to severity scoring
|
|
566
|
+
- `cpe-match` type with no CVSS score → Flag for manual triage; emit signal with `confidence_estimate: "low"`
|
|
567
|
+
- SBOM-input mode produces identical output format — normalization logic is mode-agnostic
|
|
568
|
+
|
|
569
|
+
## Limitations
|
|
570
|
+
|
|
571
|
+
### Cannot Detect
|
|
572
|
+
|
|
573
|
+
1. **Custom/Proprietary Vulnerabilities**: Only identifies vulnerabilities present in Anchore's grype-db, which aggregates NVD, GitHub Advisory Database, and vendor-specific advisories. Internal or unpublished vulnerabilities are invisible until they receive a public CVE assignment.
|
|
574
|
+
|
|
575
|
+
2. **Business Logic and Application Vulnerabilities**: Cannot identify logic flaws, broken access control, or injection vulnerabilities in first-party application code. Grype evaluates third-party component versions, not code behavior.
|
|
576
|
+
|
|
577
|
+
3. **Zero-Day Exploits**: Undisclosed vulnerabilities without CVE identifiers are absent from grype-db. Detection is contingent on public disclosure and database ingestion, which introduces a lag of hours to days.
|
|
578
|
+
|
|
579
|
+
4. **Vendored or Manually Copied Dependencies**: Source code copied directly into the repository without package manager metadata (no `package.json`, `go.sum`, etc.) is invisible to Grype. Detection requires a package manifest or lock file entry.
|
|
580
|
+
|
|
581
|
+
5. **Runtime-Only Misconfigurations**: Insecure environment variable handling, exposed secrets, or misconfigured TLS settings that do not correspond to a CVE in a versioned package are outside Grype's scope.
|
|
582
|
+
|
|
583
|
+
6. **Vulnerabilities in Build-Time Tooling**: Compilers, bundlers, linters, and CI/CD tooling that appear only in developer environments and not in production manifests are not evaluated.
|
|
584
|
+
|
|
585
|
+
7. **Interpreted Scripts and Shell Utilities**: Shell scripts and utility scripts installed outside of a tracked package manager (e.g., curl-installed binaries in CI) do not produce catalog entries and are therefore not matched.
|
|
586
|
+
|
|
587
|
+
### False Positives
|
|
588
|
+
|
|
589
|
+
1. **OS Packages with Backported Patches**: Linux distribution packages (rpm, deb) frequently backport security fixes without incrementing the upstream version number. Grype may flag these as vulnerable based on version comparison when the patch is already applied.
|
|
590
|
+
|
|
591
|
+
2. **CPE-Match Overreach**: When Grype falls back to CPE-based matching (`cpe-match` type), it may associate a package with vulnerabilities from a similarly named but distinct product, particularly for packages with generic names (e.g., `log`, `util`, `crypto`).
|
|
592
|
+
|
|
593
|
+
3. **Unused or Optional Dependencies**: Packages declared in manifests but never imported in production code paths are flagged at the same severity as actively executed dependencies, inflating risk assessments for dead code.
|
|
594
|
+
|
|
595
|
+
4. **Dev/Test-Only Dependencies at Production Severity**: Development and test tooling (e.g., `jest`, `pytest`, `eslint`) that never reaches production runtime are reported alongside production dependencies without automatic severity downgrade.
|
|
596
|
+
|
|
597
|
+
5. **Version Constraint Ambiguity**: `exact-indirect-match` results represent constraint-range matches rather than confirmed version matches. A package resolved to a version that falls within a vulnerable range may not actually be exploitable if the specific vulnerable code path was introduced in a later patch.
|
|
598
|
+
|
|
599
|
+
### False Negatives
|
|
600
|
+
|
|
601
|
+
1. **Transitive Dependencies Absent from Lock Files**: Packages resolved at runtime or installed via non-standard mechanisms that do not produce lock file entries are not cataloged by Grype or Syft, and therefore cannot be matched.
|
|
602
|
+
|
|
603
|
+
2. **Recently Published CVEs**: grype-db is updated daily, but the window between CVE publication and database availability creates a gap. Very recent disclosures may not appear until the next scheduled database refresh.
|
|
604
|
+
|
|
605
|
+
3. **Custom Forks of Open Source Packages**: Internally maintained forks that diverge from the upstream vulnerability surface (e.g., a fork with unpatched vulnerabilities that the upstream has since fixed) are matched against the upstream version's vulnerability record, which may not reflect the fork's actual state.
|
|
606
|
+
|
|
607
|
+
4. **Compiled Binaries and Embedded SDKs**: Pre-compiled `.whl`, `.jar`, `.aar`, or SDK bundles embedded in the repository without accompanying manifest metadata cannot be matched without CPE data, and CPE coverage is incomplete.
|
|
608
|
+
|
|
609
|
+
5. **Packages with Incorrect or Missing PURLs**: Packages that lack valid Package URLs in the SBOM (when using SBOM-input mode) may fail to match against the vulnerability database if the package ecosystem or name does not resolve to a known namespace.
|
|
610
|
+
|
|
611
|
+
6. **Vulnerabilities Affecting Specific Configurations**: CVEs that only manifest under specific compile flags, platform targets, or optional feature sets are reported as absent if the package version falls outside the vulnerable range for the general case, even if the specific build configuration is affected.
|