blockmine 1.24.0 → 1.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/README.en.md +427 -0
- package/README.md +40 -0
- package/backend/cli.js +1 -1
- package/backend/src/ai/plugin-assistant-system-prompt.md +664 -5
- package/backend/src/api/routes/bots.js +13 -0
- package/backend/src/api/routes/servers.js +14 -2
- package/backend/src/core/BotProcess.js +98 -2
- package/backend/src/core/PluginLoader.js +83 -3
- package/backend/src/core/PluginManager.js +75 -5
- package/backend/src/core/services/BotLifecycleService.js +186 -2
- package/backend/src/server.js +11 -1
- package/frontend/dist/assets/browser-ponyfill-DN7pwmHT.js +2 -0
- package/frontend/dist/assets/index-LSy71uwm.js +11261 -0
- package/frontend/dist/assets/index-SfhKxI4-.css +32 -0
- package/frontend/dist/flags/en.svg +32 -0
- package/frontend/dist/flags/ru.svg +5 -0
- package/frontend/dist/index.html +2 -2
- package/frontend/dist/locales/en/admin.json +100 -0
- package/frontend/dist/locales/en/api-keys.json +58 -0
- package/frontend/dist/locales/en/bots.json +110 -0
- package/frontend/dist/locales/en/common.json +47 -0
- package/frontend/dist/locales/en/configuration.json +22 -0
- package/frontend/dist/locales/en/console.json +10 -0
- package/frontend/dist/locales/en/dashboard.json +85 -0
- package/frontend/dist/locales/en/dialogs.json +70 -0
- package/frontend/dist/locales/en/event-graphs.json +50 -0
- package/frontend/dist/locales/en/graph-store.json +70 -0
- package/frontend/dist/locales/en/login.json +34 -0
- package/frontend/dist/locales/en/management.json +114 -0
- package/frontend/dist/locales/en/minecraft-viewer.json +27 -0
- package/frontend/dist/locales/en/nodes.json +1077 -0
- package/frontend/dist/locales/en/permissions.json +50 -0
- package/frontend/dist/locales/en/plugin-detail.json +49 -0
- package/frontend/dist/locales/en/plugins.json +110 -0
- package/frontend/dist/locales/en/proxies.json +81 -0
- package/frontend/dist/locales/en/servers.json +39 -0
- package/frontend/dist/locales/en/setup.json +17 -0
- package/frontend/dist/locales/en/sidebar.json +27 -0
- package/frontend/dist/locales/en/tasks.json +62 -0
- package/frontend/dist/locales/en/visual-editor.json +219 -0
- package/frontend/dist/locales/en/websocket.json +86 -0
- package/frontend/dist/locales/ru/admin.json +100 -0
- package/frontend/dist/locales/ru/api-keys.json +58 -0
- package/frontend/dist/locales/ru/bots.json +110 -0
- package/frontend/dist/locales/ru/common.json +49 -0
- package/frontend/dist/locales/ru/configuration.json +22 -0
- package/frontend/dist/locales/ru/console.json +10 -0
- package/frontend/dist/locales/ru/dashboard.json +85 -0
- package/frontend/dist/locales/ru/dialogs.json +70 -0
- package/frontend/dist/locales/ru/event-graphs.json +50 -0
- package/frontend/dist/locales/ru/graph-store.json +70 -0
- package/frontend/dist/locales/ru/login.json +34 -0
- package/frontend/dist/locales/ru/management.json +114 -0
- package/frontend/dist/locales/ru/minecraft-viewer.json +27 -0
- package/frontend/dist/locales/ru/nodes.json +1077 -0
- package/frontend/dist/locales/ru/permissions.json +50 -0
- package/frontend/dist/locales/ru/plugin-detail.json +49 -0
- package/frontend/dist/locales/ru/plugins.json +110 -0
- package/frontend/dist/locales/ru/proxies.json +81 -0
- package/frontend/dist/locales/ru/servers.json +39 -0
- package/frontend/dist/locales/ru/setup.json +17 -0
- package/frontend/dist/locales/ru/sidebar.json +27 -0
- package/frontend/dist/locales/ru/tasks.json +62 -0
- package/frontend/dist/locales/ru/visual-editor.json +221 -0
- package/frontend/dist/locales/ru/websocket.json +86 -0
- package/frontend/dist/monacoeditorwork/css.worker.bundle.js +7 -7
- package/frontend/dist/monacoeditorwork/html.worker.bundle.js +7 -7
- package/frontend/dist/monacoeditorwork/json.worker.bundle.js +7 -7
- package/frontend/dist/monacoeditorwork/ts.worker.bundle.js +3 -3
- package/frontend/package.json +4 -0
- package/package.json +1 -1
- package/screen/3dviewer.png +0 -0
- package/screen/console.png +0 -0
- package/screen/dashboard.png +0 -0
- package/screen/graph_collabe.png +0 -0
- package/screen/graph_live_debug.png +0 -0
- package/screen/language_selector.png +0 -0
- package/screen/management_command.png +0 -0
- package/screen/node_debug_trace.png +0 -0
- package/screen/plugin_/320/276/320/261/320/267/320/276/321/200.png +0 -0
- package/screen/websocket.png +0 -0
- package/screen//320/275/320/260/321/201/321/202/321/200/320/276/320/271/320/272/320/270_/320/276/321/202/320/264/320/265/320/273/321/214/320/275/321/213/321/205_/320/272/320/276/320/274/320/260/320/275/320/264_/320/272/320/260/320/266/320/264/321/203_/320/272/320/276/320/274/320/260/320/275/320/273/320/264/321/203_/320/274/320/276/320/266/320/275/320/276_/320/275/320/260/321/201/321/202/321/200/320/260/320/270/320/262/320/260/321/202/321/214.png +0 -0
- package/screen//320/277/320/273/320/260/320/275/320/270/321/200/320/276/320/262/321/211/320/270/320/272_/320/274/320/276/320/266/320/275/320/276_/320/267/320/260/320/264/320/260/320/262/320/260/321/202/321/214_/320/264/320/265/320/271/321/201/321/202/320/262/320/270/321/217_/320/277/320/276_/320/262/321/200/320/265/320/274/320/265/320/275/320/270.png +0 -0
- package/.claude/agents/README.md +0 -469
- package/.claude/agents/auth-route-debugger.md +0 -118
- package/.claude/agents/auth-route-tester.md +0 -93
- package/.claude/agents/auto-error-resolver.md +0 -97
- package/.claude/agents/build-optimizer.md +0 -236
- package/.claude/agents/code-architect.md +0 -34
- package/.claude/agents/code-architecture-reviewer.md +0 -83
- package/.claude/agents/code-explorer.md +0 -51
- package/.claude/agents/code-refactor-master.md +0 -94
- package/.claude/agents/code-reviewer.md +0 -46
- package/.claude/agents/cost-optimizer.md +0 -134
- package/.claude/agents/deployment-orchestrator.md +0 -113
- package/.claude/agents/documentation-architect.md +0 -82
- package/.claude/agents/frontend-error-fixer.md +0 -77
- package/.claude/agents/iac-code-generator.md +0 -71
- package/.claude/agents/incident-responder.md +0 -346
- package/.claude/agents/infrastructure-architect.md +0 -31
- package/.claude/agents/kubernetes-specialist.md +0 -56
- package/.claude/agents/migration-planner.md +0 -181
- package/.claude/agents/network-architect.md +0 -196
- package/.claude/agents/plan-reviewer.md +0 -52
- package/.claude/agents/refactor-planner.md +0 -63
- package/.claude/agents/security-scanner.md +0 -102
- package/.claude/agents/web-research-specialist.md +0 -78
- package/.claude/commands/cost-analysis.md +0 -315
- package/.claude/commands/dev-docs-update.md +0 -55
- package/.claude/commands/dev-docs.md +0 -51
- package/.claude/commands/feature-dev.md +0 -125
- package/.claude/commands/incident-debug.md +0 -247
- package/.claude/commands/infra-plan.md +0 -81
- package/.claude/commands/migration-plan.md +0 -478
- package/.claude/commands/route-research-for-testing.md +0 -37
- package/.claude/commands/security-review.md +0 -66
- package/.claude/hooks/CONFIG.md +0 -448
- package/.claude/hooks/README.md +0 -163
- package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +0 -226
- package/.claude/hooks/WINDOWS_HOOKS_README.md +0 -151
- package/.claude/hooks/add-skill-activation-banners.ts +0 -132
- package/.claude/hooks/comprehensive-skill-test.ts +0 -1315
- package/.claude/hooks/error-handling-reminder.sh +0 -12
- package/.claude/hooks/error-handling-reminder.ts +0 -222
- package/.claude/hooks/k8s-manifest-validator.sh +0 -56
- package/.claude/hooks/package-lock.json +0 -556
- package/.claude/hooks/package.json +0 -16
- package/.claude/hooks/post-tool-use-tracker.ps1 +0 -174
- package/.claude/hooks/post-tool-use-tracker.sh +0 -183
- package/.claude/hooks/security-policy-check.sh +0 -247
- package/.claude/hooks/skill-activation-prompt.ps1 +0 -10
- package/.claude/hooks/skill-activation-prompt.sh +0 -10
- package/.claude/hooks/skill-activation-prompt.ts +0 -141
- package/.claude/hooks/stop-build-check-enhanced.sh +0 -130
- package/.claude/hooks/terraform-validator.sh +0 -53
- package/.claude/hooks/test-input.json +0 -7
- package/.claude/hooks/test-skill-activation.ts +0 -427
- package/.claude/hooks/trigger-build-resolver.sh +0 -79
- package/.claude/hooks/tsc-check.sh +0 -173
- package/.claude/hooks/tsconfig.json +0 -19
- package/.claude/settings.json +0 -59
- package/.claude/settings.local.json +0 -67
- package/.claude/skills/README.md +0 -507
- package/.claude/skills/api-engineering/SKILL.md +0 -63
- package/.claude/skills/api-engineering/resources/api-versioning.md +0 -88
- package/.claude/skills/api-engineering/resources/graphql-patterns.md +0 -106
- package/.claude/skills/api-engineering/resources/rate-limiting.md +0 -118
- package/.claude/skills/api-engineering/resources/rest-api-design.md +0 -105
- package/.claude/skills/backend-dev-guidelines/SKILL.md +0 -306
- package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +0 -451
- package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +0 -307
- package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +0 -638
- package/.claude/skills/backend-dev-guidelines/resources/configuration.md +0 -275
- package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +0 -224
- package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +0 -213
- package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +0 -756
- package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +0 -336
- package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +0 -789
- package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +0 -235
- package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +0 -754
- package/.claude/skills/budget-and-cost-management/SKILL.md +0 -850
- package/.claude/skills/build-engineering/SKILL.md +0 -431
- package/.claude/skills/build-engineering/resources/artifact-repositories.md +0 -72
- package/.claude/skills/build-engineering/resources/build-caching.md +0 -96
- package/.claude/skills/build-engineering/resources/build-pipelines.md +0 -105
- package/.claude/skills/build-engineering/resources/build-security.md +0 -95
- package/.claude/skills/build-engineering/resources/build-systems.md +0 -389
- package/.claude/skills/build-engineering/resources/compilation-optimization.md +0 -201
- package/.claude/skills/build-engineering/resources/dependency-management.md +0 -73
- package/.claude/skills/build-engineering/resources/monorepo-builds.md +0 -110
- package/.claude/skills/build-engineering/resources/performance-optimization.md +0 -113
- package/.claude/skills/build-engineering/resources/reproducible-builds.md +0 -82
- package/.claude/skills/cloud-engineering/SKILL.md +0 -675
- package/.claude/skills/cloud-engineering/resources/aws-patterns.md +0 -742
- package/.claude/skills/cloud-engineering/resources/azure-patterns.md +0 -714
- package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +0 -987
- package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +0 -757
- package/.claude/skills/cloud-engineering/resources/cloud-networking.md +0 -1058
- package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +0 -1530
- package/.claude/skills/cloud-engineering/resources/cloud-security.md +0 -990
- package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +0 -758
- package/.claude/skills/cloud-engineering/resources/migration-strategies.md +0 -820
- package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +0 -670
- package/.claude/skills/cloud-engineering/resources/oci-patterns.md +0 -1198
- package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +0 -795
- package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +0 -966
- package/.claude/skills/cybersecurity/SKILL.md +0 -409
- package/.claude/skills/cybersecurity/resources/security-architecture.md +0 -266
- package/.claude/skills/database-engineering/SKILL.md +0 -61
- package/.claude/skills/database-engineering/resources/backup-and-recovery.md +0 -72
- package/.claude/skills/database-engineering/resources/database-replication.md +0 -63
- package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +0 -70
- package/.claude/skills/database-engineering/resources/query-optimization.md +0 -68
- package/.claude/skills/devsecops/SKILL.md +0 -374
- package/.claude/skills/devsecops/resources/ci-cd-security.md +0 -204
- package/.claude/skills/devsecops/resources/compliance-automation.md +0 -530
- package/.claude/skills/devsecops/resources/compliance-frameworks.md +0 -2322
- package/.claude/skills/devsecops/resources/container-security.md +0 -915
- package/.claude/skills/devsecops/resources/cspm-integration.md +0 -1440
- package/.claude/skills/devsecops/resources/policy-enforcement.md +0 -619
- package/.claude/skills/devsecops/resources/secrets-management.md +0 -755
- package/.claude/skills/devsecops/resources/security-monitoring.md +0 -146
- package/.claude/skills/devsecops/resources/security-scanning.md +0 -887
- package/.claude/skills/devsecops/resources/security-testing.md +0 -203
- package/.claude/skills/devsecops/resources/supply-chain-security.md +0 -518
- package/.claude/skills/devsecops/resources/vulnerability-management.md +0 -481
- package/.claude/skills/devsecops/resources/zero-trust-architecture.md +0 -177
- package/.claude/skills/documentation-as-code/SKILL.md +0 -323
- package/.claude/skills/documentation-as-code/resources/api-documentation.md +0 -90
- package/.claude/skills/documentation-as-code/resources/changelog-management.md +0 -79
- package/.claude/skills/documentation-as-code/resources/diagram-generation.md +0 -44
- package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +0 -99
- package/.claude/skills/documentation-as-code/resources/documentation-automation.md +0 -68
- package/.claude/skills/documentation-as-code/resources/documentation-sites.md +0 -79
- package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +0 -162
- package/.claude/skills/documentation-as-code/resources/openapi-specification.md +0 -77
- package/.claude/skills/documentation-as-code/resources/readme-engineering.md +0 -60
- package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +0 -202
- package/.claude/skills/engineering-management/SKILL.md +0 -356
- package/.claude/skills/engineering-management/resources/career-ladders.md +0 -609
- package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +0 -555
- package/.claude/skills/engineering-management/resources/one-on-one-guides.md +0 -609
- package/.claude/skills/engineering-management/resources/resource-planning.md +0 -557
- package/.claude/skills/engineering-management/resources/team-organization-patterns.md +0 -491
- package/.claude/skills/engineering-management/resources/technical-interviews.md +0 -474
- package/.claude/skills/engineering-operations-management/SKILL.md +0 -817
- package/.claude/skills/error-tracking/SKILL.md +0 -379
- package/.claude/skills/frontend-design/SKILL.md +0 -42
- package/.claude/skills/frontend-dev-guidelines/SKILL.md +0 -403
- package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +0 -331
- package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +0 -872
- package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +0 -502
- package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +0 -767
- package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +0 -502
- package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +0 -501
- package/.claude/skills/frontend-dev-guidelines/resources/performance.md +0 -406
- package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +0 -364
- package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +0 -428
- package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +0 -418
- package/.claude/skills/general-it-engineering/SKILL.md +0 -393
- package/.claude/skills/general-it-engineering/resources/asset-management.md +0 -712
- package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +0 -817
- package/.claude/skills/general-it-engineering/resources/business-continuity.md +0 -786
- package/.claude/skills/general-it-engineering/resources/change-management.md +0 -715
- package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +0 -729
- package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +0 -738
- package/.claude/skills/general-it-engineering/resources/incident-service-management.md +0 -834
- package/.claude/skills/general-it-engineering/resources/it-governance.md +0 -753
- package/.claude/skills/general-it-engineering/resources/itil-framework.md +0 -503
- package/.claude/skills/general-it-engineering/resources/service-management.md +0 -669
- package/.claude/skills/infrastructure-architecture/SKILL.md +0 -328
- package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +0 -505
- package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +0 -528
- package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +0 -453
- package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +0 -773
- package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +0 -499
- package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +0 -501
- package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +0 -535
- package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +0 -512
- package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +0 -608
- package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +0 -562
- package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +0 -538
- package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +0 -489
- package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +0 -1000
- package/.claude/skills/infrastructure-strategy/SKILL.md +0 -924
- package/.claude/skills/network-engineering/SKILL.md +0 -385
- package/.claude/skills/network-engineering/resources/dns-management.md +0 -738
- package/.claude/skills/network-engineering/resources/load-balancing.md +0 -820
- package/.claude/skills/network-engineering/resources/network-architecture.md +0 -546
- package/.claude/skills/network-engineering/resources/network-security.md +0 -921
- package/.claude/skills/network-engineering/resources/network-troubleshooting.md +0 -749
- package/.claude/skills/network-engineering/resources/routing-switching.md +0 -373
- package/.claude/skills/network-engineering/resources/sdn-networking.md +0 -695
- package/.claude/skills/network-engineering/resources/service-mesh-networking.md +0 -777
- package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +0 -444
- package/.claude/skills/network-engineering/resources/vpn-connectivity.md +0 -672
- package/.claude/skills/node-development/SKILL.md +0 -317
- package/.claude/skills/observability-engineering/SKILL.md +0 -101
- package/.claude/skills/observability-engineering/resources/apm-tools.md +0 -97
- package/.claude/skills/observability-engineering/resources/correlation-strategies.md +0 -87
- package/.claude/skills/observability-engineering/resources/distributed-tracing.md +0 -98
- package/.claude/skills/observability-engineering/resources/logs-aggregation.md +0 -118
- package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +0 -141
- package/.claude/skills/observability-engineering/resources/opentelemetry.md +0 -110
- package/.claude/skills/platform-engineering/SKILL.md +0 -555
- package/.claude/skills/platform-engineering/resources/architecture-overview.md +0 -600
- package/.claude/skills/platform-engineering/resources/container-orchestration.md +0 -916
- package/.claude/skills/platform-engineering/resources/cost-optimization.md +0 -634
- package/.claude/skills/platform-engineering/resources/developer-platforms.md +0 -670
- package/.claude/skills/platform-engineering/resources/gitops-automation.md +0 -650
- package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +0 -778
- package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +0 -708
- package/.claude/skills/platform-engineering/resources/multi-tenancy.md +0 -602
- package/.claude/skills/platform-engineering/resources/platform-security.md +0 -711
- package/.claude/skills/platform-engineering/resources/resource-management.md +0 -592
- package/.claude/skills/platform-engineering/resources/service-mesh.md +0 -628
- package/.claude/skills/release-engineering/SKILL.md +0 -393
- package/.claude/skills/release-engineering/resources/artifact-management.md +0 -108
- package/.claude/skills/release-engineering/resources/build-optimization.md +0 -84
- package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +0 -411
- package/.claude/skills/release-engineering/resources/deployment-strategies.md +0 -197
- package/.claude/skills/release-engineering/resources/pipeline-security.md +0 -62
- package/.claude/skills/release-engineering/resources/progressive-delivery.md +0 -83
- package/.claude/skills/release-engineering/resources/release-automation.md +0 -68
- package/.claude/skills/release-engineering/resources/release-orchestration.md +0 -77
- package/.claude/skills/release-engineering/resources/rollback-strategies.md +0 -66
- package/.claude/skills/release-engineering/resources/versioning-strategies.md +0 -59
- package/.claude/skills/route-tester/SKILL.md +0 -392
- package/.claude/skills/skill-developer/ADVANCED.md +0 -197
- package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +0 -306
- package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +0 -152
- package/.claude/skills/skill-developer/SKILL.md +0 -430
- package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +0 -315
- package/.claude/skills/skill-developer/TRIGGER_TYPES.md +0 -305
- package/.claude/skills/skill-developer/TROUBLESHOOTING.md +0 -514
- package/.claude/skills/skill-rules.json +0 -2989
- package/.claude/skills/sre/SKILL.md +0 -464
- package/.claude/skills/sre/resources/alerting-best-practices.md +0 -282
- package/.claude/skills/sre/resources/capacity-planning.md +0 -226
- package/.claude/skills/sre/resources/chaos-engineering.md +0 -193
- package/.claude/skills/sre/resources/disaster-recovery.md +0 -232
- package/.claude/skills/sre/resources/incident-management.md +0 -436
- package/.claude/skills/sre/resources/observability-stack.md +0 -240
- package/.claude/skills/sre/resources/on-call-runbooks.md +0 -167
- package/.claude/skills/sre/resources/performance-optimization.md +0 -108
- package/.claude/skills/sre/resources/reliability-patterns.md +0 -183
- package/.claude/skills/sre/resources/slo-sli-sla.md +0 -464
- package/.claude/skills/sre/resources/toil-reduction.md +0 -145
- package/.claude/skills/systems-engineering/SKILL.md +0 -648
- package/.claude/skills/systems-engineering/resources/automation-patterns.md +0 -771
- package/.claude/skills/systems-engineering/resources/configuration-management.md +0 -998
- package/.claude/skills/systems-engineering/resources/linux-administration.md +0 -672
- package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +0 -982
- package/.claude/skills/systems-engineering/resources/performance-tuning.md +0 -871
- package/.claude/skills/systems-engineering/resources/powershell-scripting.md +0 -482
- package/.claude/skills/systems-engineering/resources/security-hardening.md +0 -739
- package/.claude/skills/systems-engineering/resources/shell-scripting.md +0 -915
- package/.claude/skills/systems-engineering/resources/storage-management.md +0 -628
- package/.claude/skills/systems-engineering/resources/system-monitoring.md +0 -787
- package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +0 -753
- package/.claude/skills/systems-engineering/resources/windows-administration.md +0 -738
- package/.claude/skills/technical-leadership/SKILL.md +0 -728
- package/backend/docs/SECRETS_DOCUMENTATION.md +0 -327
- package/frontend/dist/assets/index-BC-NbKXi.css +0 -32
- package/frontend/dist/assets/index-DqJXZMHY.js +0 -11266
|
@@ -1,887 +0,0 @@
|
|
|
1
|
-
# Security Scanning - SAST, DAST, and SCA
|
|
2
|
-
|
|
3
|
-
Comprehensive guide to implementing security scanning throughout the development lifecycle using Static Application Security Testing (SAST), Dynamic Application Security Testing (DAST), and Software Composition Analysis (SCA).
|
|
4
|
-
|
|
5
|
-
## Table of Contents
|
|
6
|
-
|
|
7
|
-
- [Overview](#overview)
|
|
8
|
-
- [SAST - Static Application Security Testing](#sast---static-application-security-testing)
|
|
9
|
-
- [DAST - Dynamic Application Security Testing](#dast---dynamic-application-security-testing)
|
|
10
|
-
- [SCA - Software Composition Analysis](#sca---software-composition-analysis)
|
|
11
|
-
- [Tool Comparison](#tool-comparison)
|
|
12
|
-
- [CI/CD Integration](#cicd-integration)
|
|
13
|
-
- [Scan Result Management](#scan-result-management)
|
|
14
|
-
- [Best Practices](#best-practices)
|
|
15
|
-
- [Anti-Patterns](#anti-patterns)
|
|
16
|
-
|
|
17
|
-
## Overview
|
|
18
|
-
|
|
19
|
-
**Security Scanning Types:**
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
┌─────────────────────────────────────────────────────┐
|
|
23
|
-
│ Security Scanning │
|
|
24
|
-
├─────────────────┬──────────────────┬────────────────┤
|
|
25
|
-
│ SAST │ DAST │ SCA │
|
|
26
|
-
│ Source Code │ Running App │ Dependencies │
|
|
27
|
-
│ Analysis │ Testing │ Scanning │
|
|
28
|
-
├─────────────────┼──────────────────┼────────────────┤
|
|
29
|
-
│ • Semgrep │ • OWASP ZAP │ • Snyk │
|
|
30
|
-
│ • SonarQube │ • Burp Suite │ • Trivy │
|
|
31
|
-
│ • CodeQL │ • Nuclei │ • Dependabot │
|
|
32
|
-
│ • Checkmarx │ • Arachni │ • FOSSA │
|
|
33
|
-
└─────────────────┴──────────────────┴────────────────┘
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
**When to Use Each:**
|
|
37
|
-
- **SAST**: During development and build phases (pre-commit, CI)
|
|
38
|
-
- **DAST**: After deployment to test environment
|
|
39
|
-
- **SCA**: Continuously (dependencies change frequently)
|
|
40
|
-
|
|
41
|
-
## SAST - Static Application Security Testing
|
|
42
|
-
|
|
43
|
-
### What is SAST?
|
|
44
|
-
|
|
45
|
-
Analyzes source code to find security vulnerabilities without executing the program.
|
|
46
|
-
|
|
47
|
-
**Strengths:**
|
|
48
|
-
- Early detection (shift-left)
|
|
49
|
-
- Full code coverage
|
|
50
|
-
- No running application needed
|
|
51
|
-
- Finds coding mistakes
|
|
52
|
-
|
|
53
|
-
**Limitations:**
|
|
54
|
-
- False positives
|
|
55
|
-
- No runtime context
|
|
56
|
-
- Configuration-dependent vulnerabilities missed
|
|
57
|
-
|
|
58
|
-
### Semgrep Implementation
|
|
59
|
-
|
|
60
|
-
**Installation:**
|
|
61
|
-
```bash
|
|
62
|
-
# Install via pip
|
|
63
|
-
pip install semgrep
|
|
64
|
-
|
|
65
|
-
# Or via Homebrew
|
|
66
|
-
brew install semgrep
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
**Basic Usage:**
|
|
70
|
-
```bash
|
|
71
|
-
# Scan current directory with security rules
|
|
72
|
-
semgrep --config=auto .
|
|
73
|
-
|
|
74
|
-
# Use specific rulesets
|
|
75
|
-
semgrep --config="p/security-audit" \
|
|
76
|
-
--config="p/owasp-top-ten" \
|
|
77
|
-
--config="p/secrets" .
|
|
78
|
-
|
|
79
|
-
# JSON output for automation
|
|
80
|
-
semgrep --config=auto --json -o results.json .
|
|
81
|
-
|
|
82
|
-
# Only show high/critical findings
|
|
83
|
-
semgrep --config=auto --severity=ERROR .
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
**Custom Rules:**
|
|
87
|
-
```yaml
|
|
88
|
-
# .semgrep/rules/sql-injection.yaml
|
|
89
|
-
rules:
|
|
90
|
-
- id: sql-injection-risk
|
|
91
|
-
patterns:
|
|
92
|
-
- pattern: |
|
|
93
|
-
db.query($SQL + $INPUT)
|
|
94
|
-
- pattern-not: |
|
|
95
|
-
db.query($SQL, [...])
|
|
96
|
-
message: |
|
|
97
|
-
Potential SQL injection vulnerability.
|
|
98
|
-
Use parameterized queries instead.
|
|
99
|
-
languages: [javascript, typescript]
|
|
100
|
-
severity: ERROR
|
|
101
|
-
metadata:
|
|
102
|
-
cwe: "CWE-89: SQL Injection"
|
|
103
|
-
owasp: "A03:2021 - Injection"
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
**CI Integration (GitHub Actions):**
|
|
107
|
-
```yaml
|
|
108
|
-
# .github/workflows/semgrep.yml
|
|
109
|
-
name: Semgrep SAST
|
|
110
|
-
|
|
111
|
-
on:
|
|
112
|
-
pull_request: {}
|
|
113
|
-
push:
|
|
114
|
-
branches: [main, develop]
|
|
115
|
-
|
|
116
|
-
jobs:
|
|
117
|
-
semgrep:
|
|
118
|
-
name: Scan with Semgrep
|
|
119
|
-
runs-on: ubuntu-latest
|
|
120
|
-
|
|
121
|
-
steps:
|
|
122
|
-
- uses: actions/checkout@v3
|
|
123
|
-
|
|
124
|
-
- name: Run Semgrep
|
|
125
|
-
uses: returntocorp/semgrep-action@v1
|
|
126
|
-
with:
|
|
127
|
-
config: >-
|
|
128
|
-
p/security-audit
|
|
129
|
-
p/secrets
|
|
130
|
-
p/owasp-top-ten
|
|
131
|
-
p/nodejs
|
|
132
|
-
env:
|
|
133
|
-
SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }}
|
|
134
|
-
|
|
135
|
-
- name: Upload SARIF
|
|
136
|
-
if: always()
|
|
137
|
-
uses: github/codeql-action/upload-sarif@v2
|
|
138
|
-
with:
|
|
139
|
-
sarif_file: semgrep.sarif
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
### SonarQube Implementation
|
|
143
|
-
|
|
144
|
-
**Docker Setup:**
|
|
145
|
-
```yaml
|
|
146
|
-
# docker-compose.yml
|
|
147
|
-
version: '3'
|
|
148
|
-
services:
|
|
149
|
-
sonarqube:
|
|
150
|
-
image: sonarqube:community
|
|
151
|
-
ports:
|
|
152
|
-
- "9000:9000"
|
|
153
|
-
environment:
|
|
154
|
-
- SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true
|
|
155
|
-
volumes:
|
|
156
|
-
- sonarqube_data:/opt/sonarqube/data
|
|
157
|
-
- sonarqube_extensions:/opt/sonarqube/extensions
|
|
158
|
-
- sonarqube_logs:/opt/sonarqube/logs
|
|
159
|
-
|
|
160
|
-
volumes:
|
|
161
|
-
sonarqube_data:
|
|
162
|
-
sonarqube_extensions:
|
|
163
|
-
sonarqube_logs:
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
**Project Configuration:**
|
|
167
|
-
```properties
|
|
168
|
-
# sonar-project.properties
|
|
169
|
-
sonar.projectKey=my-project
|
|
170
|
-
sonar.projectName=My Project
|
|
171
|
-
sonar.projectVersion=1.0
|
|
172
|
-
|
|
173
|
-
sonar.sources=src
|
|
174
|
-
sonar.tests=tests
|
|
175
|
-
sonar.exclusions=**/node_modules/**,**/*.test.ts
|
|
176
|
-
|
|
177
|
-
# Language-specific
|
|
178
|
-
sonar.javascript.lcov.reportPaths=coverage/lcov.info
|
|
179
|
-
sonar.typescript.lcov.reportPaths=coverage/lcov.info
|
|
180
|
-
|
|
181
|
-
# Quality gates
|
|
182
|
-
sonar.qualitygate.wait=true
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
**Scan Execution:**
|
|
186
|
-
```bash
|
|
187
|
-
# Install scanner
|
|
188
|
-
npm install -g sonarqube-scanner
|
|
189
|
-
|
|
190
|
-
# Run scan
|
|
191
|
-
sonar-scanner \
|
|
192
|
-
-Dsonar.host.url=http://localhost:9000 \
|
|
193
|
-
-Dsonar.login=$SONAR_TOKEN
|
|
194
|
-
|
|
195
|
-
# Or using Docker
|
|
196
|
-
docker run --rm \
|
|
197
|
-
-e SONAR_HOST_URL=http://sonarqube:9000 \
|
|
198
|
-
-e SONAR_LOGIN=$SONAR_TOKEN \
|
|
199
|
-
-v "$PWD:/usr/src" \
|
|
200
|
-
sonarsource/sonar-scanner-cli
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
### GitHub CodeQL
|
|
204
|
-
|
|
205
|
-
```yaml
|
|
206
|
-
# .github/workflows/codeql.yml
|
|
207
|
-
name: "CodeQL"
|
|
208
|
-
|
|
209
|
-
on:
|
|
210
|
-
push:
|
|
211
|
-
branches: [ main ]
|
|
212
|
-
pull_request:
|
|
213
|
-
branches: [ main ]
|
|
214
|
-
schedule:
|
|
215
|
-
- cron: '0 0 * * 0' # Weekly
|
|
216
|
-
|
|
217
|
-
jobs:
|
|
218
|
-
analyze:
|
|
219
|
-
name: Analyze
|
|
220
|
-
runs-on: ubuntu-latest
|
|
221
|
-
permissions:
|
|
222
|
-
security-events: write
|
|
223
|
-
actions: read
|
|
224
|
-
contents: read
|
|
225
|
-
|
|
226
|
-
strategy:
|
|
227
|
-
matrix:
|
|
228
|
-
language: [ 'javascript', 'typescript', 'python' ]
|
|
229
|
-
|
|
230
|
-
steps:
|
|
231
|
-
- name: Checkout
|
|
232
|
-
uses: actions/checkout@v3
|
|
233
|
-
|
|
234
|
-
- name: Initialize CodeQL
|
|
235
|
-
uses: github/codeql-action/init@v2
|
|
236
|
-
with:
|
|
237
|
-
languages: ${{ matrix.language }}
|
|
238
|
-
queries: security-extended,security-and-quality
|
|
239
|
-
|
|
240
|
-
- name: Autobuild
|
|
241
|
-
uses: github/codeql-action/autobuild@v2
|
|
242
|
-
|
|
243
|
-
- name: Perform CodeQL Analysis
|
|
244
|
-
uses: github/codeql-action/analyze@v2
|
|
245
|
-
with:
|
|
246
|
-
category: "/language:${{ matrix.language }}"
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
## DAST - Dynamic Application Security Testing
|
|
250
|
-
|
|
251
|
-
### OWASP ZAP
|
|
252
|
-
|
|
253
|
-
**Docker Run:**
|
|
254
|
-
```bash
|
|
255
|
-
# Baseline scan
|
|
256
|
-
docker run -t owasp/zap2docker-stable zap-baseline.py \
|
|
257
|
-
-t https://example.com \
|
|
258
|
-
-r zap-report.html
|
|
259
|
-
|
|
260
|
-
# Full scan
|
|
261
|
-
docker run -t owasp/zap2docker-stable zap-full-scan.py \
|
|
262
|
-
-t https://example.com \
|
|
263
|
-
-r zap-full-report.html
|
|
264
|
-
|
|
265
|
-
# API scan
|
|
266
|
-
docker run -t owasp/zap2docker-stable zap-api-scan.py \
|
|
267
|
-
-t https://api.example.com/openapi.json \
|
|
268
|
-
-f openapi \
|
|
269
|
-
-r zap-api-report.html
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
**CI Integration:**
|
|
273
|
-
```yaml
|
|
274
|
-
# .github/workflows/dast.yml
|
|
275
|
-
name: DAST Scan
|
|
276
|
-
|
|
277
|
-
on:
|
|
278
|
-
schedule:
|
|
279
|
-
- cron: '0 2 * * *' # Nightly
|
|
280
|
-
workflow_dispatch:
|
|
281
|
-
|
|
282
|
-
jobs:
|
|
283
|
-
zap-scan:
|
|
284
|
-
runs-on: ubuntu-latest
|
|
285
|
-
steps:
|
|
286
|
-
- name: ZAP Scan
|
|
287
|
-
uses: zaproxy/action-baseline@v0.7.0
|
|
288
|
-
with:
|
|
289
|
-
target: 'https://staging.example.com'
|
|
290
|
-
rules_file_name: '.zap/rules.tsv'
|
|
291
|
-
cmd_options: '-a'
|
|
292
|
-
|
|
293
|
-
- name: Upload Results
|
|
294
|
-
uses: actions/upload-artifact@v3
|
|
295
|
-
with:
|
|
296
|
-
name: zap-report
|
|
297
|
-
path: report_html.html
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
**ZAP Rules Configuration:**
|
|
301
|
-
```tsv
|
|
302
|
-
# .zap/rules.tsv
|
|
303
|
-
# Format: rule-id WARN|FAIL|IGNORE description
|
|
304
|
-
10038 WARN Content-Type header missing
|
|
305
|
-
10055 FAIL CSP header missing
|
|
306
|
-
10096 WARN Timestamp disclosure
|
|
307
|
-
40012 FAIL Cross-Site Scripting
|
|
308
|
-
40014 FAIL Cross-Site Request Forgery
|
|
309
|
-
90022 FAIL SQL Injection
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
### Nuclei
|
|
313
|
-
|
|
314
|
-
**Installation:**
|
|
315
|
-
```bash
|
|
316
|
-
go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
**Usage:**
|
|
320
|
-
```bash
|
|
321
|
-
# Update templates
|
|
322
|
-
nuclei -update-templates
|
|
323
|
-
|
|
324
|
-
# Scan single target
|
|
325
|
-
nuclei -u https://example.com
|
|
326
|
-
|
|
327
|
-
# Scan with specific severity
|
|
328
|
-
nuclei -u https://example.com -severity critical,high
|
|
329
|
-
|
|
330
|
-
# Use specific templates
|
|
331
|
-
nuclei -u https://example.com -t cves/ -t vulnerabilities/
|
|
332
|
-
|
|
333
|
-
# Output to file
|
|
334
|
-
nuclei -u https://example.com -json -o results.json
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
**Custom Template:**
|
|
338
|
-
```yaml
|
|
339
|
-
# custom-check.yaml
|
|
340
|
-
id: api-key-exposure
|
|
341
|
-
|
|
342
|
-
info:
|
|
343
|
-
name: API Key Exposure
|
|
344
|
-
severity: high
|
|
345
|
-
description: Checks for exposed API keys
|
|
346
|
-
|
|
347
|
-
http:
|
|
348
|
-
- method: GET
|
|
349
|
-
path:
|
|
350
|
-
- "{{BaseURL}}/config.json"
|
|
351
|
-
- "{{BaseURL}}/.env"
|
|
352
|
-
|
|
353
|
-
matchers-condition: or
|
|
354
|
-
matchers:
|
|
355
|
-
- type: regex
|
|
356
|
-
regex:
|
|
357
|
-
- "api[_-]?key['\"]?\\s*[:=]\\s*['\"]?[a-zA-Z0-9]{32,}"
|
|
358
|
-
- "secret[_-]?key['\"]?\\s*[:=]\\s*['\"]?[a-zA-Z0-9]{32,}"
|
|
359
|
-
part: body
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
## SCA - Software Composition Analysis
|
|
363
|
-
|
|
364
|
-
### Snyk
|
|
365
|
-
|
|
366
|
-
**Installation:**
|
|
367
|
-
```bash
|
|
368
|
-
npm install -g snyk
|
|
369
|
-
|
|
370
|
-
# Authenticate
|
|
371
|
-
snyk auth
|
|
372
|
-
```
|
|
373
|
-
|
|
374
|
-
**Scanning:**
|
|
375
|
-
```bash
|
|
376
|
-
# Scan project dependencies
|
|
377
|
-
snyk test
|
|
378
|
-
|
|
379
|
-
# Test with severity threshold
|
|
380
|
-
snyk test --severity-threshold=high
|
|
381
|
-
|
|
382
|
-
# Monitor project (continuous monitoring)
|
|
383
|
-
snyk monitor
|
|
384
|
-
|
|
385
|
-
# Test container images
|
|
386
|
-
snyk container test nginx:latest
|
|
387
|
-
|
|
388
|
-
# Test IaC
|
|
389
|
-
snyk iac test ./terraform/
|
|
390
|
-
```
|
|
391
|
-
|
|
392
|
-
**GitHub Integration:**
|
|
393
|
-
```yaml
|
|
394
|
-
# .github/workflows/snyk.yml
|
|
395
|
-
name: Snyk Security
|
|
396
|
-
|
|
397
|
-
on:
|
|
398
|
-
push:
|
|
399
|
-
branches: [ main ]
|
|
400
|
-
pull_request:
|
|
401
|
-
|
|
402
|
-
jobs:
|
|
403
|
-
security:
|
|
404
|
-
runs-on: ubuntu-latest
|
|
405
|
-
steps:
|
|
406
|
-
- uses: actions/checkout@v3
|
|
407
|
-
|
|
408
|
-
- name: Run Snyk
|
|
409
|
-
uses: snyk/actions/node@master
|
|
410
|
-
env:
|
|
411
|
-
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
|
|
412
|
-
with:
|
|
413
|
-
args: --severity-threshold=high
|
|
414
|
-
|
|
415
|
-
- name: Upload results to GitHub
|
|
416
|
-
uses: github/codeql-action/upload-sarif@v2
|
|
417
|
-
with:
|
|
418
|
-
sarif_file: snyk.sarif
|
|
419
|
-
```
|
|
420
|
-
|
|
421
|
-
**Snyk Policy File:**
|
|
422
|
-
```yaml
|
|
423
|
-
# .snyk
|
|
424
|
-
version: v1.19.0
|
|
425
|
-
|
|
426
|
-
# Ignore specific vulnerabilities
|
|
427
|
-
ignore:
|
|
428
|
-
SNYK-JS-AXIOS-6032459:
|
|
429
|
-
- '*':
|
|
430
|
-
reason: Fix not available, mitigation in place
|
|
431
|
-
expires: 2024-12-31
|
|
432
|
-
|
|
433
|
-
# Patch rules
|
|
434
|
-
patch:
|
|
435
|
-
'npm:qs:20140806':
|
|
436
|
-
- express > qs:
|
|
437
|
-
patched: '2023-01-15T00:00:00.000Z'
|
|
438
|
-
```
|
|
439
|
-
|
|
440
|
-
### Trivy
|
|
441
|
-
|
|
442
|
-
**Installation:**
|
|
443
|
-
```bash
|
|
444
|
-
# Linux
|
|
445
|
-
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
|
|
446
|
-
echo "deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" | sudo tee -a /etc/apt/sources.list.d/trivy.list
|
|
447
|
-
sudo apt-get update
|
|
448
|
-
sudo apt-get install trivy
|
|
449
|
-
|
|
450
|
-
# macOS
|
|
451
|
-
brew install trivy
|
|
452
|
-
```
|
|
453
|
-
|
|
454
|
-
**Usage:**
|
|
455
|
-
```bash
|
|
456
|
-
# Scan filesystem
|
|
457
|
-
trivy fs .
|
|
458
|
-
|
|
459
|
-
# Scan container image
|
|
460
|
-
trivy image nginx:latest
|
|
461
|
-
|
|
462
|
-
# Scan with severity filter
|
|
463
|
-
trivy image --severity HIGH,CRITICAL nginx:latest
|
|
464
|
-
|
|
465
|
-
# Scan IaC
|
|
466
|
-
trivy config ./terraform/
|
|
467
|
-
|
|
468
|
-
# Kubernetes manifest scan
|
|
469
|
-
trivy k8s --report summary cluster
|
|
470
|
-
|
|
471
|
-
# Output formats
|
|
472
|
-
trivy image --format json nginx:latest
|
|
473
|
-
trivy image --format sarif nginx:latest
|
|
474
|
-
```
|
|
475
|
-
|
|
476
|
-
**CI Integration:**
|
|
477
|
-
```yaml
|
|
478
|
-
# .github/workflows/trivy.yml
|
|
479
|
-
name: Trivy Security Scan
|
|
480
|
-
|
|
481
|
-
on:
|
|
482
|
-
push:
|
|
483
|
-
branches: [ main ]
|
|
484
|
-
pull_request:
|
|
485
|
-
|
|
486
|
-
jobs:
|
|
487
|
-
trivy-scan:
|
|
488
|
-
runs-on: ubuntu-latest
|
|
489
|
-
steps:
|
|
490
|
-
- uses: actions/checkout@v3
|
|
491
|
-
|
|
492
|
-
- name: Run Trivy vulnerability scanner in fs mode
|
|
493
|
-
uses: aquasecurity/trivy-action@master
|
|
494
|
-
with:
|
|
495
|
-
scan-type: 'fs'
|
|
496
|
-
scan-ref: '.'
|
|
497
|
-
format: 'sarif'
|
|
498
|
-
output: 'trivy-results.sarif'
|
|
499
|
-
severity: 'CRITICAL,HIGH'
|
|
500
|
-
|
|
501
|
-
- name: Upload Trivy results to GitHub
|
|
502
|
-
uses: github/codeql-action/upload-sarif@v2
|
|
503
|
-
with:
|
|
504
|
-
sarif_file: 'trivy-results.sarif'
|
|
505
|
-
```
|
|
506
|
-
|
|
507
|
-
## Tool Comparison
|
|
508
|
-
|
|
509
|
-
### Feature Matrix
|
|
510
|
-
|
|
511
|
-
| Tool | Type | Languages | CI Integration | Cost | Best For |
|
|
512
|
-
|------|------|-----------|----------------|------|----------|
|
|
513
|
-
| Semgrep | SAST | 30+ | Excellent | Free/Paid | Fast, customizable rules |
|
|
514
|
-
| SonarQube | SAST | 25+ | Good | Free/Paid | Code quality + security |
|
|
515
|
-
| CodeQL | SAST | 10+ | GitHub | Free (public) | Deep analysis |
|
|
516
|
-
| ZAP | DAST | All | Good | Free | Web app testing |
|
|
517
|
-
| Nuclei | DAST | All | Excellent | Free | Fast, template-based |
|
|
518
|
-
| Snyk | SCA | All | Excellent | Free/Paid | Developer-friendly |
|
|
519
|
-
| Trivy | SCA | All | Excellent | Free | Containers, IaC |
|
|
520
|
-
|
|
521
|
-
### Selection Guide
|
|
522
|
-
|
|
523
|
-
**For Small Teams:**
|
|
524
|
-
```
|
|
525
|
-
SAST: Semgrep (free, fast)
|
|
526
|
-
DAST: ZAP baseline scans
|
|
527
|
-
SCA: Trivy (comprehensive, free)
|
|
528
|
-
```
|
|
529
|
-
|
|
530
|
-
**For Enterprise:**
|
|
531
|
-
```
|
|
532
|
-
SAST: SonarQube + CodeQL
|
|
533
|
-
DAST: ZAP full scan + Burp Suite Pro
|
|
534
|
-
SCA: Snyk (with monitoring)
|
|
535
|
-
```
|
|
536
|
-
|
|
537
|
-
**For Startups:**
|
|
538
|
-
```
|
|
539
|
-
SAST: GitHub CodeQL (built-in)
|
|
540
|
-
DAST: Nuclei (fast, automated)
|
|
541
|
-
SCA: Dependabot + Trivy
|
|
542
|
-
```
|
|
543
|
-
|
|
544
|
-
## CI/CD Integration
|
|
545
|
-
|
|
546
|
-
### Complete Security Pipeline
|
|
547
|
-
|
|
548
|
-
```yaml
|
|
549
|
-
# .github/workflows/security-pipeline.yml
|
|
550
|
-
name: Security Pipeline
|
|
551
|
-
|
|
552
|
-
on:
|
|
553
|
-
push:
|
|
554
|
-
branches: [ main, develop ]
|
|
555
|
-
pull_request:
|
|
556
|
-
schedule:
|
|
557
|
-
- cron: '0 0 * * 0' # Weekly
|
|
558
|
-
|
|
559
|
-
jobs:
|
|
560
|
-
secret-scan:
|
|
561
|
-
name: Secret Scanning
|
|
562
|
-
runs-on: ubuntu-latest
|
|
563
|
-
steps:
|
|
564
|
-
- uses: actions/checkout@v3
|
|
565
|
-
with:
|
|
566
|
-
fetch-depth: 0
|
|
567
|
-
|
|
568
|
-
- name: TruffleHog
|
|
569
|
-
uses: trufflesecurity/trufflehog@main
|
|
570
|
-
with:
|
|
571
|
-
path: ./
|
|
572
|
-
base: ${{ github.event.repository.default_branch }}
|
|
573
|
-
head: HEAD
|
|
574
|
-
|
|
575
|
-
sast:
|
|
576
|
-
name: SAST Analysis
|
|
577
|
-
runs-on: ubuntu-latest
|
|
578
|
-
steps:
|
|
579
|
-
- uses: actions/checkout@v3
|
|
580
|
-
|
|
581
|
-
- name: Semgrep
|
|
582
|
-
uses: returntocorp/semgrep-action@v1
|
|
583
|
-
with:
|
|
584
|
-
config: p/security-audit
|
|
585
|
-
|
|
586
|
-
- name: CodeQL
|
|
587
|
-
uses: github/codeql-action/init@v2
|
|
588
|
-
with:
|
|
589
|
-
languages: javascript,typescript
|
|
590
|
-
|
|
591
|
-
- uses: github/codeql-action/autobuild@v2
|
|
592
|
-
- uses: github/codeql-action/analyze@v2
|
|
593
|
-
|
|
594
|
-
sca:
|
|
595
|
-
name: Dependency Scanning
|
|
596
|
-
runs-on: ubuntu-latest
|
|
597
|
-
steps:
|
|
598
|
-
- uses: actions/checkout@v3
|
|
599
|
-
|
|
600
|
-
- name: Snyk
|
|
601
|
-
uses: snyk/actions/node@master
|
|
602
|
-
env:
|
|
603
|
-
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
|
|
604
|
-
with:
|
|
605
|
-
args: --severity-threshold=high
|
|
606
|
-
|
|
607
|
-
- name: Trivy
|
|
608
|
-
uses: aquasecurity/trivy-action@master
|
|
609
|
-
with:
|
|
610
|
-
scan-type: 'fs'
|
|
611
|
-
severity: 'CRITICAL,HIGH'
|
|
612
|
-
|
|
613
|
-
container-scan:
|
|
614
|
-
name: Container Scanning
|
|
615
|
-
runs-on: ubuntu-latest
|
|
616
|
-
needs: [sast, sca]
|
|
617
|
-
steps:
|
|
618
|
-
- uses: actions/checkout@v3
|
|
619
|
-
|
|
620
|
-
- name: Build image
|
|
621
|
-
run: docker build -t ${{ github.repository }}:${{ github.sha }} .
|
|
622
|
-
|
|
623
|
-
- name: Trivy Image Scan
|
|
624
|
-
uses: aquasecurity/trivy-action@master
|
|
625
|
-
with:
|
|
626
|
-
image-ref: ${{ github.repository }}:${{ github.sha }}
|
|
627
|
-
format: 'sarif'
|
|
628
|
-
output: 'trivy-image.sarif'
|
|
629
|
-
severity: 'CRITICAL,HIGH'
|
|
630
|
-
exit-code: '1'
|
|
631
|
-
|
|
632
|
-
security-gate:
|
|
633
|
-
name: Security Gate
|
|
634
|
-
runs-on: ubuntu-latest
|
|
635
|
-
needs: [secret-scan, sast, sca, container-scan]
|
|
636
|
-
steps:
|
|
637
|
-
- name: All security checks passed
|
|
638
|
-
run: echo "✅ Security gate passed"
|
|
639
|
-
```
|
|
640
|
-
|
|
641
|
-
### GitLab CI Pipeline
|
|
642
|
-
|
|
643
|
-
```yaml
|
|
644
|
-
# .gitlab-ci.yml
|
|
645
|
-
stages:
|
|
646
|
-
- security-scan
|
|
647
|
-
- security-gate
|
|
648
|
-
|
|
649
|
-
include:
|
|
650
|
-
- template: Security/SAST.gitlab-ci.yml
|
|
651
|
-
- template: Security/Dependency-Scanning.gitlab-ci.yml
|
|
652
|
-
- template: Security/Container-Scanning.gitlab-ci.yml
|
|
653
|
-
|
|
654
|
-
semgrep-sast:
|
|
655
|
-
stage: security-scan
|
|
656
|
-
image: returntocorp/semgrep
|
|
657
|
-
script:
|
|
658
|
-
- semgrep --config=auto --json -o semgrep-results.json .
|
|
659
|
-
artifacts:
|
|
660
|
-
reports:
|
|
661
|
-
sast: semgrep-results.json
|
|
662
|
-
|
|
663
|
-
trivy-scan:
|
|
664
|
-
stage: security-scan
|
|
665
|
-
image: aquasec/trivy:latest
|
|
666
|
-
script:
|
|
667
|
-
- trivy fs --format json -o trivy-results.json .
|
|
668
|
-
artifacts:
|
|
669
|
-
reports:
|
|
670
|
-
dependency_scanning: trivy-results.json
|
|
671
|
-
|
|
672
|
-
security-gate:
|
|
673
|
-
stage: security-gate
|
|
674
|
-
script:
|
|
675
|
-
- echo "Checking security scan results..."
|
|
676
|
-
- exit 0
|
|
677
|
-
when: on_success
|
|
678
|
-
```
|
|
679
|
-
|
|
680
|
-
## Scan Result Management
|
|
681
|
-
|
|
682
|
-
### Vulnerability Prioritization
|
|
683
|
-
|
|
684
|
-
**Severity Scoring:**
|
|
685
|
-
```
|
|
686
|
-
CRITICAL: CVSS 9.0-10.0
|
|
687
|
-
↓ Fix immediately (< 24 hours)
|
|
688
|
-
|
|
689
|
-
HIGH: CVSS 7.0-8.9
|
|
690
|
-
↓ Fix within 7 days
|
|
691
|
-
|
|
692
|
-
MEDIUM: CVSS 4.0-6.9
|
|
693
|
-
↓ Fix within 30 days
|
|
694
|
-
|
|
695
|
-
LOW: CVSS 0.1-3.9
|
|
696
|
-
↓ Fix when convenient
|
|
697
|
-
```
|
|
698
|
-
|
|
699
|
-
**Context Factors:**
|
|
700
|
-
```yaml
|
|
701
|
-
# vulnerability-context.yaml
|
|
702
|
-
vulnerability_assessment:
|
|
703
|
-
- id: CVE-2023-12345
|
|
704
|
-
severity: HIGH
|
|
705
|
-
|
|
706
|
-
# Risk factors
|
|
707
|
-
exploitability: PUBLIC_EXPLOIT_AVAILABLE
|
|
708
|
-
exposure: INTERNET_FACING
|
|
709
|
-
data_sensitivity: PII
|
|
710
|
-
|
|
711
|
-
# Adjusted priority: CRITICAL
|
|
712
|
-
adjusted_severity: CRITICAL
|
|
713
|
-
sla: 24_hours
|
|
714
|
-
```
|
|
715
|
-
|
|
716
|
-
### False Positive Management
|
|
717
|
-
|
|
718
|
-
**Suppression File:**
|
|
719
|
-
```yaml
|
|
720
|
-
# .security-suppressions.yaml
|
|
721
|
-
suppressions:
|
|
722
|
-
- tool: semgrep
|
|
723
|
-
rule_id: javascript.express.security.audit.xss.mustache.var-in-href
|
|
724
|
-
paths:
|
|
725
|
-
- src/components/SafeLink.tsx
|
|
726
|
-
reason: "Using safe URL validation library"
|
|
727
|
-
expires: 2024-12-31
|
|
728
|
-
approved_by: security-team
|
|
729
|
-
|
|
730
|
-
- tool: trivy
|
|
731
|
-
cve: CVE-2023-12345
|
|
732
|
-
package: lodash
|
|
733
|
-
version: "4.17.20"
|
|
734
|
-
reason: "No fix available, not exploitable in our context"
|
|
735
|
-
mitigation: "Input validation in place"
|
|
736
|
-
```
|
|
737
|
-
|
|
738
|
-
### Reporting Dashboard
|
|
739
|
-
|
|
740
|
-
**Metrics to Track:**
|
|
741
|
-
```javascript
|
|
742
|
-
// security-metrics.js
|
|
743
|
-
const securityMetrics = {
|
|
744
|
-
// Scan coverage
|
|
745
|
-
scanCoverage: {
|
|
746
|
-
repositories: { total: 50, scanned: 48 },
|
|
747
|
-
codeLines: { total: 500000, scanned: 475000 }
|
|
748
|
-
},
|
|
749
|
-
|
|
750
|
-
// Vulnerability trends
|
|
751
|
-
vulnerabilities: {
|
|
752
|
-
critical: { open: 2, closed_this_month: 5 },
|
|
753
|
-
high: { open: 8, closed_this_month: 12 },
|
|
754
|
-
medium: { open: 25, closed_this_month: 30 },
|
|
755
|
-
low: { open: 45, closed_this_month: 20 }
|
|
756
|
-
},
|
|
757
|
-
|
|
758
|
-
// SLA compliance
|
|
759
|
-
sla: {
|
|
760
|
-
critical: { sla: '24h', compliance: 0.95 },
|
|
761
|
-
high: { sla: '7d', compliance: 0.88 },
|
|
762
|
-
medium: { sla: '30d', compliance: 0.92 }
|
|
763
|
-
},
|
|
764
|
-
|
|
765
|
-
// Mean time to remediate
|
|
766
|
-
mttr: {
|
|
767
|
-
critical: '18 hours',
|
|
768
|
-
high: '5 days',
|
|
769
|
-
medium: '22 days'
|
|
770
|
-
}
|
|
771
|
-
};
|
|
772
|
-
```
|
|
773
|
-
|
|
774
|
-
## Best Practices
|
|
775
|
-
|
|
776
|
-
### 1. Scan Early and Often
|
|
777
|
-
|
|
778
|
-
```yaml
|
|
779
|
-
# Multiple scan triggers
|
|
780
|
-
triggers:
|
|
781
|
-
- Pre-commit hook (secrets, basic SAST)
|
|
782
|
-
- Pull request (full SAST, SCA)
|
|
783
|
-
- Merge to main (SAST, SCA, container scan)
|
|
784
|
-
- Nightly (DAST, full analysis)
|
|
785
|
-
- Weekly (comprehensive audit)
|
|
786
|
-
```
|
|
787
|
-
|
|
788
|
-
### 2. Fail Fast on Critical Issues
|
|
789
|
-
|
|
790
|
-
```yaml
|
|
791
|
-
# security-gates.yml
|
|
792
|
-
gates:
|
|
793
|
-
pr_merge:
|
|
794
|
-
block_on:
|
|
795
|
-
- critical_vulnerabilities
|
|
796
|
-
- secrets_detected
|
|
797
|
-
- high_severity_sast
|
|
798
|
-
|
|
799
|
-
production_deploy:
|
|
800
|
-
block_on:
|
|
801
|
-
- any_critical
|
|
802
|
-
- high_without_exception
|
|
803
|
-
- failed_dast_scan
|
|
804
|
-
```
|
|
805
|
-
|
|
806
|
-
### 3. Automate Remediation
|
|
807
|
-
|
|
808
|
-
```yaml
|
|
809
|
-
# auto-remediation.yml
|
|
810
|
-
automation:
|
|
811
|
-
- Dependabot auto-merge (patch versions)
|
|
812
|
-
- Automated security PRs (Snyk, Renovate)
|
|
813
|
-
- Auto-suppress false positives (with approval)
|
|
814
|
-
- Automated ticket creation (Jira/Linear)
|
|
815
|
-
```
|
|
816
|
-
|
|
817
|
-
### 4. Developer-Friendly Feedback
|
|
818
|
-
|
|
819
|
-
```
|
|
820
|
-
❌ Bad: "CWE-89 violation in line 42"
|
|
821
|
-
|
|
822
|
-
✅ Good:
|
|
823
|
-
"SQL Injection vulnerability (line 42)
|
|
824
|
-
|
|
825
|
-
Risk: User input directly concatenated into SQL query
|
|
826
|
-
|
|
827
|
-
Fix: Use parameterized queries:
|
|
828
|
-
- db.query('SELECT * FROM users WHERE id = ?', [userId])
|
|
829
|
-
|
|
830
|
-
References:
|
|
831
|
-
- OWASP SQL Injection: https://...
|
|
832
|
-
- Fix example: https://..."
|
|
833
|
-
```
|
|
834
|
-
|
|
835
|
-
### 5. Continuous Monitoring
|
|
836
|
-
|
|
837
|
-
```typescript
|
|
838
|
-
// Integrate with APM
|
|
839
|
-
import * as Sentry from '@sentry/node';
|
|
840
|
-
|
|
841
|
-
// Tag security-relevant events
|
|
842
|
-
Sentry.captureMessage('Security scan completed', {
|
|
843
|
-
level: 'info',
|
|
844
|
-
tags: {
|
|
845
|
-
scan_type: 'sca',
|
|
846
|
-
vulnerabilities_found: results.length,
|
|
847
|
-
severity: 'high'
|
|
848
|
-
}
|
|
849
|
-
});
|
|
850
|
-
```
|
|
851
|
-
|
|
852
|
-
## Anti-Patterns
|
|
853
|
-
|
|
854
|
-
❌ **Scanning only on release** - Too late, expensive to fix
|
|
855
|
-
|
|
856
|
-
❌ **Ignoring scan results** - Scans without action waste resources
|
|
857
|
-
|
|
858
|
-
❌ **No severity thresholds** - Alert fatigue, everything is critical
|
|
859
|
-
|
|
860
|
-
❌ **Blocking all findings** - Slows development, false positives
|
|
861
|
-
|
|
862
|
-
❌ **Manual scan execution** - Inconsistent, forgettable
|
|
863
|
-
|
|
864
|
-
❌ **No ownership** - Vulnerabilities never get fixed
|
|
865
|
-
|
|
866
|
-
❌ **Scan-and-forget** - Continuous monitoring needed
|
|
867
|
-
|
|
868
|
-
❌ **All tools, no strategy** - Tool sprawl, redundant scanning
|
|
869
|
-
|
|
870
|
-
❌ **No developer training** - Same issues repeat
|
|
871
|
-
|
|
872
|
-
❌ **Treating security as QA step** - Should be integrated throughout
|
|
873
|
-
|
|
874
|
-
---
|
|
875
|
-
|
|
876
|
-
**Next Steps:**
|
|
877
|
-
1. Choose scanning tools appropriate for your stack
|
|
878
|
-
2. Integrate into CI/CD pipeline
|
|
879
|
-
3. Set severity thresholds and SLAs
|
|
880
|
-
4. Establish vulnerability management process
|
|
881
|
-
5. Train developers on common vulnerabilities
|
|
882
|
-
6. Monitor metrics and improve over time
|
|
883
|
-
|
|
884
|
-
**Related Resources:**
|
|
885
|
-
- [container-security.md](container-security.md) - Image and runtime scanning
|
|
886
|
-
- [ci-cd-security.md](ci-cd-security.md) - Secure pipeline implementation
|
|
887
|
-
- [vulnerability-management.md](vulnerability-management.md) - Remediation workflows
|