@wazir-dev/cli 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/AGENTS.md +111 -0
- package/CHANGELOG.md +14 -0
- package/CONTRIBUTING.md +101 -0
- package/LICENSE +21 -0
- package/README.md +314 -0
- package/assets/composition-engine.mmd +34 -0
- package/assets/demo-script.sh +17 -0
- package/assets/logo-dark.svg +14 -0
- package/assets/logo.svg +14 -0
- package/assets/pipeline.mmd +39 -0
- package/assets/record-demo.sh +51 -0
- package/docs/README.md +51 -0
- package/docs/adapters/context-mode.md +60 -0
- package/docs/concepts/architecture.md +87 -0
- package/docs/concepts/artifact-model.md +60 -0
- package/docs/concepts/composition-engine.md +36 -0
- package/docs/concepts/indexing-and-recall.md +160 -0
- package/docs/concepts/observability.md +41 -0
- package/docs/concepts/roles-and-workflows.md +59 -0
- package/docs/concepts/terminology-policy.md +27 -0
- package/docs/getting-started/01-installation.md +78 -0
- package/docs/getting-started/02-first-run.md +102 -0
- package/docs/getting-started/03-adding-to-project.md +15 -0
- package/docs/getting-started/04-host-setup.md +15 -0
- package/docs/guides/ci-integration.md +15 -0
- package/docs/guides/creating-skills.md +15 -0
- package/docs/guides/expertise-module-authoring.md +15 -0
- package/docs/guides/hook-development.md +15 -0
- package/docs/guides/memory-and-learnings.md +34 -0
- package/docs/guides/multi-host-export.md +15 -0
- package/docs/guides/troubleshooting.md +101 -0
- package/docs/guides/writing-custom-roles.md +15 -0
- package/docs/plans/2026-03-15-cli-pipeline-integration-design.md +592 -0
- package/docs/plans/2026-03-15-cli-pipeline-integration-plan.md +598 -0
- package/docs/plans/2026-03-15-docs-enforcement-plan.md +238 -0
- package/docs/readmes/INDEX.md +99 -0
- package/docs/readmes/features/expertise/README.md +171 -0
- package/docs/readmes/features/exports/README.md +222 -0
- package/docs/readmes/features/hooks/README.md +103 -0
- package/docs/readmes/features/hooks/loop-cap-guard.md +133 -0
- package/docs/readmes/features/hooks/post-tool-capture.md +121 -0
- package/docs/readmes/features/hooks/post-tool-lint.md +130 -0
- package/docs/readmes/features/hooks/pre-compact-summary.md +122 -0
- package/docs/readmes/features/hooks/pre-tool-capture-route.md +100 -0
- package/docs/readmes/features/hooks/protected-path-write-guard.md +128 -0
- package/docs/readmes/features/hooks/session-start.md +119 -0
- package/docs/readmes/features/hooks/stop-handoff-harvest.md +125 -0
- package/docs/readmes/features/roles/README.md +157 -0
- package/docs/readmes/features/roles/clarifier.md +152 -0
- package/docs/readmes/features/roles/content-author.md +190 -0
- package/docs/readmes/features/roles/designer.md +193 -0
- package/docs/readmes/features/roles/executor.md +184 -0
- package/docs/readmes/features/roles/learner.md +210 -0
- package/docs/readmes/features/roles/planner.md +182 -0
- package/docs/readmes/features/roles/researcher.md +164 -0
- package/docs/readmes/features/roles/reviewer.md +184 -0
- package/docs/readmes/features/roles/specifier.md +162 -0
- package/docs/readmes/features/roles/verifier.md +215 -0
- package/docs/readmes/features/schemas/README.md +178 -0
- package/docs/readmes/features/skills/README.md +63 -0
- package/docs/readmes/features/skills/brainstorming.md +96 -0
- package/docs/readmes/features/skills/debugging.md +148 -0
- package/docs/readmes/features/skills/design.md +120 -0
- package/docs/readmes/features/skills/prepare-next.md +109 -0
- package/docs/readmes/features/skills/run-audit.md +159 -0
- package/docs/readmes/features/skills/scan-project.md +109 -0
- package/docs/readmes/features/skills/self-audit.md +176 -0
- package/docs/readmes/features/skills/tdd.md +137 -0
- package/docs/readmes/features/skills/using-skills.md +92 -0
- package/docs/readmes/features/skills/verification.md +120 -0
- package/docs/readmes/features/skills/writing-plans.md +104 -0
- package/docs/readmes/features/tooling/README.md +320 -0
- package/docs/readmes/features/workflows/README.md +186 -0
- package/docs/readmes/features/workflows/author.md +181 -0
- package/docs/readmes/features/workflows/clarify.md +154 -0
- package/docs/readmes/features/workflows/design-review.md +171 -0
- package/docs/readmes/features/workflows/design.md +169 -0
- package/docs/readmes/features/workflows/discover.md +162 -0
- package/docs/readmes/features/workflows/execute.md +173 -0
- package/docs/readmes/features/workflows/learn.md +167 -0
- package/docs/readmes/features/workflows/plan-review.md +165 -0
- package/docs/readmes/features/workflows/plan.md +170 -0
- package/docs/readmes/features/workflows/prepare-next.md +167 -0
- package/docs/readmes/features/workflows/review.md +169 -0
- package/docs/readmes/features/workflows/run-audit.md +191 -0
- package/docs/readmes/features/workflows/spec-challenge.md +159 -0
- package/docs/readmes/features/workflows/specify.md +160 -0
- package/docs/readmes/features/workflows/verify.md +177 -0
- package/docs/readmes/packages/README.md +50 -0
- package/docs/readmes/packages/ajv.md +117 -0
- package/docs/readmes/packages/context-mode.md +118 -0
- package/docs/readmes/packages/gray-matter.md +116 -0
- package/docs/readmes/packages/node-test.md +137 -0
- package/docs/readmes/packages/yaml.md +112 -0
- package/docs/reference/configuration-reference.md +159 -0
- package/docs/reference/expertise-index.md +52 -0
- package/docs/reference/git-flow.md +43 -0
- package/docs/reference/hooks.md +87 -0
- package/docs/reference/host-exports.md +50 -0
- package/docs/reference/launch-checklist.md +172 -0
- package/docs/reference/marketplace-listings.md +76 -0
- package/docs/reference/release-process.md +34 -0
- package/docs/reference/roles-reference.md +77 -0
- package/docs/reference/skills.md +33 -0
- package/docs/reference/templates.md +29 -0
- package/docs/reference/tooling-cli.md +94 -0
- package/docs/truth-claims.yaml +222 -0
- package/expertise/PROGRESS.md +63 -0
- package/expertise/README.md +18 -0
- package/expertise/antipatterns/PROGRESS.md +56 -0
- package/expertise/antipatterns/backend/api-design-antipatterns.md +1271 -0
- package/expertise/antipatterns/backend/auth-antipatterns.md +1195 -0
- package/expertise/antipatterns/backend/caching-antipatterns.md +622 -0
- package/expertise/antipatterns/backend/database-antipatterns.md +1038 -0
- package/expertise/antipatterns/backend/index.md +24 -0
- package/expertise/antipatterns/backend/microservices-antipatterns.md +850 -0
- package/expertise/antipatterns/code/architecture-antipatterns.md +919 -0
- package/expertise/antipatterns/code/async-antipatterns.md +622 -0
- package/expertise/antipatterns/code/code-smells.md +1186 -0
- package/expertise/antipatterns/code/dependency-antipatterns.md +1209 -0
- package/expertise/antipatterns/code/error-handling-antipatterns.md +1360 -0
- package/expertise/antipatterns/code/index.md +27 -0
- package/expertise/antipatterns/code/naming-and-abstraction.md +1118 -0
- package/expertise/antipatterns/code/state-management-antipatterns.md +1076 -0
- package/expertise/antipatterns/code/testing-antipatterns.md +1053 -0
- package/expertise/antipatterns/design/accessibility-antipatterns.md +1136 -0
- package/expertise/antipatterns/design/dark-patterns.md +1121 -0
- package/expertise/antipatterns/design/index.md +22 -0
- package/expertise/antipatterns/design/ui-antipatterns.md +1202 -0
- package/expertise/antipatterns/design/ux-antipatterns.md +680 -0
- package/expertise/antipatterns/frontend/css-layout-antipatterns.md +691 -0
- package/expertise/antipatterns/frontend/flutter-antipatterns.md +1827 -0
- package/expertise/antipatterns/frontend/index.md +23 -0
- package/expertise/antipatterns/frontend/mobile-antipatterns.md +573 -0
- package/expertise/antipatterns/frontend/react-antipatterns.md +1128 -0
- package/expertise/antipatterns/frontend/spa-antipatterns.md +1235 -0
- package/expertise/antipatterns/index.md +31 -0
- package/expertise/antipatterns/performance/index.md +20 -0
- package/expertise/antipatterns/performance/performance-antipatterns.md +1013 -0
- package/expertise/antipatterns/performance/premature-optimization.md +623 -0
- package/expertise/antipatterns/performance/scaling-antipatterns.md +785 -0
- package/expertise/antipatterns/process/ai-coding-antipatterns.md +853 -0
- package/expertise/antipatterns/process/code-review-antipatterns.md +656 -0
- package/expertise/antipatterns/process/deployment-antipatterns.md +920 -0
- package/expertise/antipatterns/process/index.md +23 -0
- package/expertise/antipatterns/process/technical-debt-antipatterns.md +647 -0
- package/expertise/antipatterns/security/index.md +20 -0
- package/expertise/antipatterns/security/secrets-antipatterns.md +849 -0
- package/expertise/antipatterns/security/security-theater.md +843 -0
- package/expertise/antipatterns/security/vulnerability-patterns.md +801 -0
- package/expertise/architecture/PROGRESS.md +70 -0
- package/expertise/architecture/data/caching-architecture.md +671 -0
- package/expertise/architecture/data/data-consistency.md +574 -0
- package/expertise/architecture/data/data-modeling.md +536 -0
- package/expertise/architecture/data/event-streams-and-queues.md +634 -0
- package/expertise/architecture/data/index.md +25 -0
- package/expertise/architecture/data/search-architecture.md +663 -0
- package/expertise/architecture/data/sql-vs-nosql.md +708 -0
- package/expertise/architecture/decisions/architecture-decision-records.md +640 -0
- package/expertise/architecture/decisions/build-vs-buy.md +616 -0
- package/expertise/architecture/decisions/index.md +23 -0
- package/expertise/architecture/decisions/monolith-to-microservices.md +790 -0
- package/expertise/architecture/decisions/technology-selection.md +616 -0
- package/expertise/architecture/distributed/cap-theorem-and-tradeoffs.md +800 -0
- package/expertise/architecture/distributed/circuit-breaker-bulkhead.md +741 -0
- package/expertise/architecture/distributed/consensus-and-coordination.md +796 -0
- package/expertise/architecture/distributed/distributed-systems-fundamentals.md +564 -0
- package/expertise/architecture/distributed/idempotency-and-retry.md +796 -0
- package/expertise/architecture/distributed/index.md +25 -0
- package/expertise/architecture/distributed/saga-pattern.md +797 -0
- package/expertise/architecture/foundations/architectural-thinking.md +460 -0
- package/expertise/architecture/foundations/coupling-and-cohesion.md +770 -0
- package/expertise/architecture/foundations/design-principles-solid.md +649 -0
- package/expertise/architecture/foundations/domain-driven-design.md +719 -0
- package/expertise/architecture/foundations/index.md +25 -0
- package/expertise/architecture/foundations/separation-of-concerns.md +472 -0
- package/expertise/architecture/foundations/twelve-factor-app.md +797 -0
- package/expertise/architecture/index.md +34 -0
- package/expertise/architecture/integration/api-design-graphql.md +638 -0
- package/expertise/architecture/integration/api-design-grpc.md +804 -0
- package/expertise/architecture/integration/api-design-rest.md +892 -0
- package/expertise/architecture/integration/index.md +25 -0
- package/expertise/architecture/integration/third-party-integration.md +795 -0
- package/expertise/architecture/integration/webhooks-and-callbacks.md +1152 -0
- package/expertise/architecture/integration/websockets-realtime.md +791 -0
- package/expertise/architecture/mobile-architecture/index.md +22 -0
- package/expertise/architecture/mobile-architecture/mobile-app-architecture.md +780 -0
- package/expertise/architecture/mobile-architecture/mobile-backend-for-frontend.md +670 -0
- package/expertise/architecture/mobile-architecture/offline-first.md +719 -0
- package/expertise/architecture/mobile-architecture/push-and-sync.md +782 -0
- package/expertise/architecture/patterns/cqrs-event-sourcing.md +717 -0
- package/expertise/architecture/patterns/event-driven.md +797 -0
- package/expertise/architecture/patterns/hexagonal-clean-architecture.md +870 -0
- package/expertise/architecture/patterns/index.md +27 -0
- package/expertise/architecture/patterns/layered-architecture.md +736 -0
- package/expertise/architecture/patterns/microservices.md +753 -0
- package/expertise/architecture/patterns/modular-monolith.md +692 -0
- package/expertise/architecture/patterns/monolith.md +626 -0
- package/expertise/architecture/patterns/plugin-architecture.md +735 -0
- package/expertise/architecture/patterns/serverless.md +780 -0
- package/expertise/architecture/scaling/database-scaling.md +615 -0
- package/expertise/architecture/scaling/feature-flags-and-rollouts.md +757 -0
- package/expertise/architecture/scaling/horizontal-vs-vertical.md +606 -0
- package/expertise/architecture/scaling/index.md +24 -0
- package/expertise/architecture/scaling/multi-tenancy.md +800 -0
- package/expertise/architecture/scaling/stateless-design.md +787 -0
- package/expertise/backend/embedded-firmware.md +625 -0
- package/expertise/backend/go.md +853 -0
- package/expertise/backend/index.md +24 -0
- package/expertise/backend/java-spring.md +448 -0
- package/expertise/backend/node-typescript.md +625 -0
- package/expertise/backend/python-fastapi.md +724 -0
- package/expertise/backend/rust.md +458 -0
- package/expertise/backend/solidity.md +711 -0
- package/expertise/composition-map.yaml +443 -0
- package/expertise/content/foundations/content-modeling.md +395 -0
- package/expertise/content/foundations/editorial-standards.md +449 -0
- package/expertise/content/foundations/index.md +24 -0
- package/expertise/content/foundations/microcopy.md +455 -0
- package/expertise/content/foundations/terminology-governance.md +509 -0
- package/expertise/content/index.md +34 -0
- package/expertise/content/patterns/accessibility-copy.md +518 -0
- package/expertise/content/patterns/index.md +24 -0
- package/expertise/content/patterns/notification-content.md +433 -0
- package/expertise/content/patterns/sample-content.md +486 -0
- package/expertise/content/patterns/state-copy.md +439 -0
- package/expertise/design/PROGRESS.md +58 -0
- package/expertise/design/disciplines/dark-mode-theming.md +577 -0
- package/expertise/design/disciplines/design-systems.md +595 -0
- package/expertise/design/disciplines/index.md +25 -0
- package/expertise/design/disciplines/information-architecture.md +800 -0
- package/expertise/design/disciplines/interaction-design.md +788 -0
- package/expertise/design/disciplines/responsive-design.md +552 -0
- package/expertise/design/disciplines/usability-testing.md +516 -0
- package/expertise/design/disciplines/user-research.md +792 -0
- package/expertise/design/foundations/accessibility-design.md +796 -0
- package/expertise/design/foundations/color-theory.md +797 -0
- package/expertise/design/foundations/iconography.md +795 -0
- package/expertise/design/foundations/index.md +26 -0
- package/expertise/design/foundations/motion-and-animation.md +653 -0
- package/expertise/design/foundations/rtl-design.md +585 -0
- package/expertise/design/foundations/spacing-and-layout.md +607 -0
- package/expertise/design/foundations/typography.md +800 -0
- package/expertise/design/foundations/visual-hierarchy.md +761 -0
- package/expertise/design/index.md +32 -0
- package/expertise/design/patterns/authentication-flows.md +474 -0
- package/expertise/design/patterns/content-consumption.md +789 -0
- package/expertise/design/patterns/data-display.md +618 -0
- package/expertise/design/patterns/e-commerce.md +1494 -0
- package/expertise/design/patterns/feedback-and-states.md +642 -0
- package/expertise/design/patterns/forms-and-input.md +819 -0
- package/expertise/design/patterns/gamification.md +801 -0
- package/expertise/design/patterns/index.md +31 -0
- package/expertise/design/patterns/microinteractions.md +449 -0
- package/expertise/design/patterns/navigation.md +800 -0
- package/expertise/design/patterns/notifications.md +705 -0
- package/expertise/design/patterns/onboarding.md +700 -0
- package/expertise/design/patterns/search-and-filter.md +601 -0
- package/expertise/design/patterns/settings-and-preferences.md +768 -0
- package/expertise/design/patterns/social-and-community.md +748 -0
- package/expertise/design/platforms/desktop-native.md +612 -0
- package/expertise/design/platforms/index.md +25 -0
- package/expertise/design/platforms/mobile-android.md +825 -0
- package/expertise/design/platforms/mobile-cross-platform.md +983 -0
- package/expertise/design/platforms/mobile-ios.md +699 -0
- package/expertise/design/platforms/tablet.md +794 -0
- package/expertise/design/platforms/web-dashboard.md +790 -0
- package/expertise/design/platforms/web-responsive.md +550 -0
- package/expertise/design/psychology/behavioral-nudges.md +449 -0
- package/expertise/design/psychology/cognitive-load.md +1191 -0
- package/expertise/design/psychology/error-psychology.md +778 -0
- package/expertise/design/psychology/index.md +22 -0
- package/expertise/design/psychology/persuasive-design.md +736 -0
- package/expertise/design/psychology/user-mental-models.md +623 -0
- package/expertise/design/tooling/open-pencil.md +266 -0
- package/expertise/frontend/angular.md +1073 -0
- package/expertise/frontend/desktop-electron.md +546 -0
- package/expertise/frontend/flutter.md +782 -0
- package/expertise/frontend/index.md +27 -0
- package/expertise/frontend/native-android.md +409 -0
- package/expertise/frontend/native-ios.md +490 -0
- package/expertise/frontend/react-native.md +1160 -0
- package/expertise/frontend/react.md +808 -0
- package/expertise/frontend/vue.md +1089 -0
- package/expertise/humanize/domain-rules-code.md +79 -0
- package/expertise/humanize/domain-rules-content.md +67 -0
- package/expertise/humanize/domain-rules-technical-docs.md +56 -0
- package/expertise/humanize/index.md +35 -0
- package/expertise/humanize/self-audit-checklist.md +87 -0
- package/expertise/humanize/sentence-patterns.md +218 -0
- package/expertise/humanize/vocabulary-blacklist.md +105 -0
- package/expertise/i18n/PROGRESS.md +65 -0
- package/expertise/i18n/advanced/accessibility-and-i18n.md +28 -0
- package/expertise/i18n/advanced/bidirectional-text-algorithm.md +38 -0
- package/expertise/i18n/advanced/complex-scripts.md +30 -0
- package/expertise/i18n/advanced/performance-and-i18n.md +27 -0
- package/expertise/i18n/advanced/testing-i18n.md +28 -0
- package/expertise/i18n/content/content-adaptation.md +23 -0
- package/expertise/i18n/content/locale-specific-formatting.md +23 -0
- package/expertise/i18n/content/machine-translation-integration.md +28 -0
- package/expertise/i18n/content/translation-management.md +29 -0
- package/expertise/i18n/foundations/date-time-calendars.md +67 -0
- package/expertise/i18n/foundations/i18n-architecture.md +272 -0
- package/expertise/i18n/foundations/locale-and-language-tags.md +79 -0
- package/expertise/i18n/foundations/numbers-currency-units.md +61 -0
- package/expertise/i18n/foundations/pluralization-and-gender.md +109 -0
- package/expertise/i18n/foundations/string-externalization.md +236 -0
- package/expertise/i18n/foundations/text-direction-bidi.md +241 -0
- package/expertise/i18n/foundations/unicode-and-encoding.md +86 -0
- package/expertise/i18n/index.md +38 -0
- package/expertise/i18n/platform/backend-i18n.md +31 -0
- package/expertise/i18n/platform/flutter-i18n.md +148 -0
- package/expertise/i18n/platform/native-android-i18n.md +36 -0
- package/expertise/i18n/platform/native-ios-i18n.md +36 -0
- package/expertise/i18n/platform/react-i18n.md +103 -0
- package/expertise/i18n/platform/web-css-i18n.md +81 -0
- package/expertise/i18n/rtl/arabic-specific.md +175 -0
- package/expertise/i18n/rtl/hebrew-specific.md +149 -0
- package/expertise/i18n/rtl/rtl-animations-and-transitions.md +111 -0
- package/expertise/i18n/rtl/rtl-forms-and-input.md +161 -0
- package/expertise/i18n/rtl/rtl-fundamentals.md +211 -0
- package/expertise/i18n/rtl/rtl-icons-and-images.md +181 -0
- package/expertise/i18n/rtl/rtl-layout-mirroring.md +252 -0
- package/expertise/i18n/rtl/rtl-navigation-and-gestures.md +107 -0
- package/expertise/i18n/rtl/rtl-testing-and-qa.md +147 -0
- package/expertise/i18n/rtl/rtl-typography.md +160 -0
- package/expertise/index.md +113 -0
- package/expertise/index.yaml +216 -0
- package/expertise/infrastructure/cloud-aws.md +597 -0
- package/expertise/infrastructure/cloud-gcp.md +599 -0
- package/expertise/infrastructure/cybersecurity.md +816 -0
- package/expertise/infrastructure/database-mongodb.md +447 -0
- package/expertise/infrastructure/database-postgres.md +400 -0
- package/expertise/infrastructure/devops-cicd.md +787 -0
- package/expertise/infrastructure/index.md +27 -0
- package/expertise/performance/PROGRESS.md +50 -0
- package/expertise/performance/backend/api-latency.md +1204 -0
- package/expertise/performance/backend/background-jobs.md +506 -0
- package/expertise/performance/backend/connection-pooling.md +1209 -0
- package/expertise/performance/backend/database-query-optimization.md +515 -0
- package/expertise/performance/backend/index.md +23 -0
- package/expertise/performance/backend/rate-limiting-and-throttling.md +971 -0
- package/expertise/performance/foundations/algorithmic-complexity.md +954 -0
- package/expertise/performance/foundations/caching-strategies.md +489 -0
- package/expertise/performance/foundations/concurrency-and-parallelism.md +847 -0
- package/expertise/performance/foundations/index.md +24 -0
- package/expertise/performance/foundations/measuring-and-profiling.md +440 -0
- package/expertise/performance/foundations/memory-management.md +964 -0
- package/expertise/performance/foundations/performance-budgets.md +1314 -0
- package/expertise/performance/index.md +31 -0
- package/expertise/performance/infrastructure/auto-scaling.md +1059 -0
- package/expertise/performance/infrastructure/cdn-and-edge.md +1081 -0
- package/expertise/performance/infrastructure/index.md +22 -0
- package/expertise/performance/infrastructure/load-balancing.md +1081 -0
- package/expertise/performance/infrastructure/observability.md +1079 -0
- package/expertise/performance/mobile/index.md +23 -0
- package/expertise/performance/mobile/mobile-animations.md +544 -0
- package/expertise/performance/mobile/mobile-memory-battery.md +416 -0
- package/expertise/performance/mobile/mobile-network.md +452 -0
- package/expertise/performance/mobile/mobile-rendering.md +599 -0
- package/expertise/performance/mobile/mobile-startup-time.md +505 -0
- package/expertise/performance/platform-specific/flutter-performance.md +647 -0
- package/expertise/performance/platform-specific/index.md +22 -0
- package/expertise/performance/platform-specific/node-performance.md +1307 -0
- package/expertise/performance/platform-specific/postgres-performance.md +1366 -0
- package/expertise/performance/platform-specific/react-performance.md +1403 -0
- package/expertise/performance/web/bundle-optimization.md +1239 -0
- package/expertise/performance/web/image-and-media.md +636 -0
- package/expertise/performance/web/index.md +24 -0
- package/expertise/performance/web/network-optimization.md +1133 -0
- package/expertise/performance/web/rendering-performance.md +1098 -0
- package/expertise/performance/web/ssr-and-hydration.md +918 -0
- package/expertise/performance/web/web-vitals.md +1374 -0
- package/expertise/quality/accessibility.md +985 -0
- package/expertise/quality/evidence-based-verification.md +499 -0
- package/expertise/quality/index.md +24 -0
- package/expertise/quality/ml-model-audit.md +614 -0
- package/expertise/quality/performance.md +600 -0
- package/expertise/quality/testing-api.md +891 -0
- package/expertise/quality/testing-mobile.md +496 -0
- package/expertise/quality/testing-web.md +849 -0
- package/expertise/security/PROGRESS.md +54 -0
- package/expertise/security/agentic-identity.md +540 -0
- package/expertise/security/compliance-frameworks.md +601 -0
- package/expertise/security/data/data-encryption.md +364 -0
- package/expertise/security/data/data-privacy-gdpr.md +692 -0
- package/expertise/security/data/database-security.md +1171 -0
- package/expertise/security/data/index.md +22 -0
- package/expertise/security/data/pii-handling.md +531 -0
- package/expertise/security/foundations/authentication.md +1041 -0
- package/expertise/security/foundations/authorization.md +603 -0
- package/expertise/security/foundations/cryptography.md +1001 -0
- package/expertise/security/foundations/index.md +25 -0
- package/expertise/security/foundations/owasp-top-10.md +1354 -0
- package/expertise/security/foundations/secrets-management.md +1217 -0
- package/expertise/security/foundations/secure-sdlc.md +700 -0
- package/expertise/security/foundations/supply-chain-security.md +698 -0
- package/expertise/security/index.md +31 -0
- package/expertise/security/infrastructure/cloud-security-aws.md +1296 -0
- package/expertise/security/infrastructure/cloud-security-gcp.md +1376 -0
- package/expertise/security/infrastructure/container-security.md +721 -0
- package/expertise/security/infrastructure/incident-response.md +1295 -0
- package/expertise/security/infrastructure/index.md +24 -0
- package/expertise/security/infrastructure/logging-and-monitoring.md +1618 -0
- package/expertise/security/infrastructure/network-security.md +1337 -0
- package/expertise/security/mobile/index.md +23 -0
- package/expertise/security/mobile/mobile-android-security.md +1218 -0
- package/expertise/security/mobile/mobile-binary-protection.md +1229 -0
- package/expertise/security/mobile/mobile-data-storage.md +1265 -0
- package/expertise/security/mobile/mobile-ios-security.md +1401 -0
- package/expertise/security/mobile/mobile-network-security.md +1520 -0
- package/expertise/security/smart-contract-security.md +594 -0
- package/expertise/security/testing/index.md +22 -0
- package/expertise/security/testing/penetration-testing.md +1258 -0
- package/expertise/security/testing/security-code-review.md +1765 -0
- package/expertise/security/testing/threat-modeling.md +1074 -0
- package/expertise/security/testing/vulnerability-scanning.md +1062 -0
- package/expertise/security/web/api-security.md +586 -0
- package/expertise/security/web/cors-and-headers.md +433 -0
- package/expertise/security/web/csrf.md +562 -0
- package/expertise/security/web/file-upload.md +1477 -0
- package/expertise/security/web/index.md +25 -0
- package/expertise/security/web/injection.md +1375 -0
- package/expertise/security/web/session-management.md +1101 -0
- package/expertise/security/web/xss.md +1158 -0
- package/exports/README.md +17 -0
- package/exports/hosts/claude/.claude/agents/clarifier.md +42 -0
- package/exports/hosts/claude/.claude/agents/content-author.md +63 -0
- package/exports/hosts/claude/.claude/agents/designer.md +55 -0
- package/exports/hosts/claude/.claude/agents/executor.md +55 -0
- package/exports/hosts/claude/.claude/agents/learner.md +51 -0
- package/exports/hosts/claude/.claude/agents/planner.md +53 -0
- package/exports/hosts/claude/.claude/agents/researcher.md +43 -0
- package/exports/hosts/claude/.claude/agents/reviewer.md +54 -0
- package/exports/hosts/claude/.claude/agents/specifier.md +47 -0
- package/exports/hosts/claude/.claude/agents/verifier.md +71 -0
- package/exports/hosts/claude/.claude/commands/author.md +42 -0
- package/exports/hosts/claude/.claude/commands/clarify.md +38 -0
- package/exports/hosts/claude/.claude/commands/design-review.md +46 -0
- package/exports/hosts/claude/.claude/commands/design.md +44 -0
- package/exports/hosts/claude/.claude/commands/discover.md +37 -0
- package/exports/hosts/claude/.claude/commands/execute.md +48 -0
- package/exports/hosts/claude/.claude/commands/learn.md +38 -0
- package/exports/hosts/claude/.claude/commands/plan-review.md +42 -0
- package/exports/hosts/claude/.claude/commands/plan.md +39 -0
- package/exports/hosts/claude/.claude/commands/prepare-next.md +37 -0
- package/exports/hosts/claude/.claude/commands/review.md +40 -0
- package/exports/hosts/claude/.claude/commands/run-audit.md +41 -0
- package/exports/hosts/claude/.claude/commands/spec-challenge.md +41 -0
- package/exports/hosts/claude/.claude/commands/specify.md +38 -0
- package/exports/hosts/claude/.claude/commands/verify.md +37 -0
- package/exports/hosts/claude/.claude/settings.json +34 -0
- package/exports/hosts/claude/CLAUDE.md +19 -0
- package/exports/hosts/claude/export.manifest.json +38 -0
- package/exports/hosts/claude/host-package.json +67 -0
- package/exports/hosts/codex/AGENTS.md +19 -0
- package/exports/hosts/codex/export.manifest.json +38 -0
- package/exports/hosts/codex/host-package.json +41 -0
- package/exports/hosts/cursor/.cursor/hooks.json +16 -0
- package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +19 -0
- package/exports/hosts/cursor/export.manifest.json +38 -0
- package/exports/hosts/cursor/host-package.json +42 -0
- package/exports/hosts/gemini/GEMINI.md +19 -0
- package/exports/hosts/gemini/export.manifest.json +38 -0
- package/exports/hosts/gemini/host-package.json +41 -0
- package/hooks/README.md +18 -0
- package/hooks/definitions/loop_cap_guard.yaml +21 -0
- package/hooks/definitions/post_tool_capture.yaml +24 -0
- package/hooks/definitions/pre_compact_summary.yaml +19 -0
- package/hooks/definitions/pre_tool_capture_route.yaml +19 -0
- package/hooks/definitions/protected_path_write_guard.yaml +19 -0
- package/hooks/definitions/session_start.yaml +19 -0
- package/hooks/definitions/stop_handoff_harvest.yaml +20 -0
- package/hooks/loop-cap-guard +17 -0
- package/hooks/post-tool-lint +36 -0
- package/hooks/protected-path-write-guard +17 -0
- package/hooks/session-start +41 -0
- package/llms-full.txt +2355 -0
- package/llms.txt +43 -0
- package/package.json +79 -0
- package/roles/README.md +20 -0
- package/roles/clarifier.md +42 -0
- package/roles/content-author.md +63 -0
- package/roles/designer.md +55 -0
- package/roles/executor.md +55 -0
- package/roles/learner.md +51 -0
- package/roles/planner.md +53 -0
- package/roles/researcher.md +43 -0
- package/roles/reviewer.md +54 -0
- package/roles/specifier.md +47 -0
- package/roles/verifier.md +71 -0
- package/schemas/README.md +24 -0
- package/schemas/accepted-learning.schema.json +20 -0
- package/schemas/author-artifact.schema.json +156 -0
- package/schemas/clarification.schema.json +19 -0
- package/schemas/design-artifact.schema.json +80 -0
- package/schemas/docs-claim.schema.json +18 -0
- package/schemas/export-manifest.schema.json +20 -0
- package/schemas/hook.schema.json +67 -0
- package/schemas/host-export-package.schema.json +18 -0
- package/schemas/implementation-plan.schema.json +19 -0
- package/schemas/proposed-learning.schema.json +19 -0
- package/schemas/research.schema.json +18 -0
- package/schemas/review.schema.json +29 -0
- package/schemas/run-manifest.schema.json +18 -0
- package/schemas/spec-challenge.schema.json +18 -0
- package/schemas/spec.schema.json +20 -0
- package/schemas/usage.schema.json +102 -0
- package/schemas/verification-proof.schema.json +29 -0
- package/schemas/wazir-manifest.schema.json +173 -0
- package/skills/README.md +40 -0
- package/skills/brainstorming/SKILL.md +77 -0
- package/skills/debugging/SKILL.md +50 -0
- package/skills/design/SKILL.md +61 -0
- package/skills/dispatching-parallel-agents/SKILL.md +128 -0
- package/skills/executing-plans/SKILL.md +70 -0
- package/skills/finishing-a-development-branch/SKILL.md +169 -0
- package/skills/humanize/SKILL.md +123 -0
- package/skills/init-pipeline/SKILL.md +124 -0
- package/skills/prepare-next/SKILL.md +20 -0
- package/skills/receiving-code-review/SKILL.md +123 -0
- package/skills/requesting-code-review/SKILL.md +105 -0
- package/skills/requesting-code-review/code-reviewer.md +108 -0
- package/skills/run-audit/SKILL.md +197 -0
- package/skills/scan-project/SKILL.md +41 -0
- package/skills/self-audit/SKILL.md +153 -0
- package/skills/subagent-driven-development/SKILL.md +154 -0
- package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
- package/skills/subagent-driven-development/implementer-prompt.md +102 -0
- package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/skills/tdd/SKILL.md +23 -0
- package/skills/using-git-worktrees/SKILL.md +163 -0
- package/skills/using-skills/SKILL.md +95 -0
- package/skills/verification/SKILL.md +22 -0
- package/skills/wazir/SKILL.md +463 -0
- package/skills/writing-plans/SKILL.md +30 -0
- package/skills/writing-skills/SKILL.md +157 -0
- package/skills/writing-skills/anthropic-best-practices.md +122 -0
- package/skills/writing-skills/persuasion-principles.md +50 -0
- package/templates/README.md +20 -0
- package/templates/artifacts/README.md +10 -0
- package/templates/artifacts/accepted-learning.md +19 -0
- package/templates/artifacts/accepted-learning.template.json +12 -0
- package/templates/artifacts/author.md +74 -0
- package/templates/artifacts/author.template.json +19 -0
- package/templates/artifacts/clarification.md +21 -0
- package/templates/artifacts/clarification.template.json +12 -0
- package/templates/artifacts/execute-notes.md +19 -0
- package/templates/artifacts/implementation-plan.md +21 -0
- package/templates/artifacts/implementation-plan.template.json +11 -0
- package/templates/artifacts/learning-proposal.md +19 -0
- package/templates/artifacts/next-run-handoff.md +21 -0
- package/templates/artifacts/plan-review.md +19 -0
- package/templates/artifacts/proposed-learning.template.json +12 -0
- package/templates/artifacts/research.md +21 -0
- package/templates/artifacts/research.template.json +12 -0
- package/templates/artifacts/review-findings.md +19 -0
- package/templates/artifacts/review.template.json +11 -0
- package/templates/artifacts/run-manifest.template.json +8 -0
- package/templates/artifacts/spec-challenge.md +19 -0
- package/templates/artifacts/spec-challenge.template.json +11 -0
- package/templates/artifacts/spec.md +21 -0
- package/templates/artifacts/spec.template.json +12 -0
- package/templates/artifacts/verification-proof.md +19 -0
- package/templates/artifacts/verification-proof.template.json +11 -0
- package/templates/examples/accepted-learning.example.json +14 -0
- package/templates/examples/author.example.json +152 -0
- package/templates/examples/clarification.example.json +15 -0
- package/templates/examples/docs-claim.example.json +8 -0
- package/templates/examples/export-manifest.example.json +7 -0
- package/templates/examples/host-export-package.example.json +11 -0
- package/templates/examples/implementation-plan.example.json +17 -0
- package/templates/examples/proposed-learning.example.json +13 -0
- package/templates/examples/research.example.json +15 -0
- package/templates/examples/research.example.md +6 -0
- package/templates/examples/review.example.json +17 -0
- package/templates/examples/run-manifest.example.json +9 -0
- package/templates/examples/spec-challenge.example.json +14 -0
- package/templates/examples/spec.example.json +21 -0
- package/templates/examples/verification-proof.example.json +21 -0
- package/templates/examples/wazir-manifest.example.yaml +65 -0
- package/templates/task-definition-schema.md +99 -0
- package/tooling/README.md +20 -0
- package/tooling/src/adapters/context-mode.js +50 -0
- package/tooling/src/capture/command.js +376 -0
- package/tooling/src/capture/store.js +99 -0
- package/tooling/src/capture/usage.js +270 -0
- package/tooling/src/checks/branches.js +50 -0
- package/tooling/src/checks/brand-truth.js +110 -0
- package/tooling/src/checks/changelog.js +231 -0
- package/tooling/src/checks/command-registry.js +36 -0
- package/tooling/src/checks/commits.js +102 -0
- package/tooling/src/checks/docs-drift.js +103 -0
- package/tooling/src/checks/docs-truth.js +201 -0
- package/tooling/src/checks/runtime-surface.js +156 -0
- package/tooling/src/cli.js +116 -0
- package/tooling/src/command-options.js +56 -0
- package/tooling/src/commands/validate.js +320 -0
- package/tooling/src/doctor/command.js +91 -0
- package/tooling/src/export/command.js +77 -0
- package/tooling/src/export/compiler.js +498 -0
- package/tooling/src/guards/loop-cap-guard.js +52 -0
- package/tooling/src/guards/protected-path-write-guard.js +67 -0
- package/tooling/src/index/command.js +152 -0
- package/tooling/src/index/storage.js +1061 -0
- package/tooling/src/index/summarizers.js +261 -0
- package/tooling/src/loaders.js +18 -0
- package/tooling/src/project-root.js +22 -0
- package/tooling/src/recall/command.js +225 -0
- package/tooling/src/schema-validator.js +30 -0
- package/tooling/src/state-root.js +40 -0
- package/tooling/src/status/command.js +71 -0
- package/wazir.manifest.yaml +135 -0
- package/workflows/README.md +19 -0
- package/workflows/author.md +42 -0
- package/workflows/clarify.md +38 -0
- package/workflows/design-review.md +46 -0
- package/workflows/design.md +44 -0
- package/workflows/discover.md +37 -0
- package/workflows/execute.md +48 -0
- package/workflows/learn.md +38 -0
- package/workflows/plan-review.md +42 -0
- package/workflows/plan.md +39 -0
- package/workflows/prepare-next.md +37 -0
- package/workflows/review.md +40 -0
- package/workflows/run-audit.md +41 -0
- package/workflows/spec-challenge.md +41 -0
- package/workflows/specify.md +38 -0
- package/workflows/verify.md +37 -0
|
@@ -0,0 +1,700 @@
|
|
|
1
|
+
# Secure Software Development Lifecycle (SDLC)
|
|
2
|
+
|
|
3
|
+
> Integrating security into every SDLC phase — requirements through operations.
|
|
4
|
+
> Covers shift-left security, SAST/DAST/SCA tooling, CI/CD pipeline integration,
|
|
5
|
+
> threat modeling, and compliance with NIST SSDF, OWASP SAMM, and Microsoft SDL.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Threat Landscape
|
|
10
|
+
|
|
11
|
+
### The Cost of Late Security Fixes
|
|
12
|
+
|
|
13
|
+
Security defects discovered late cost exponentially more to remediate:
|
|
14
|
+
|
|
15
|
+
| Discovery Phase | Relative Cost Multiplier | Example Cost per Defect |
|
|
16
|
+
|----------------------|--------------------------|-------------------------|
|
|
17
|
+
| Requirements | 1x | $100–$500 |
|
|
18
|
+
| Design | 3–6x | $500–$3,000 |
|
|
19
|
+
| Implementation | 10x | $1,000–$5,000 |
|
|
20
|
+
| Testing | 15–40x | $5,000–$25,000 |
|
|
21
|
+
| Production | 30–100x | $10,000–$100,000+ |
|
|
22
|
+
| Post-breach | 640x+ | $4.44M average (2025) |
|
|
23
|
+
|
|
24
|
+
**IBM/Ponemon 2025 Cost of a Data Breach Report:**
|
|
25
|
+
- Global average breach cost: **$4.44M** (2025); U.S. average: **$10.22M** (all-time high)
|
|
26
|
+
- Average time to identify and contain: **241 days** (nine-year low)
|
|
27
|
+
- Detection/escalation costs: **$1.47M** average — largest cost driver four years running
|
|
28
|
+
- 97% of AI-related breach victims lacked proper access controls
|
|
29
|
+
- Study: 600 organizations, 17 industries, 16 countries (IBM/Ponemon 2025)
|
|
30
|
+
|
|
31
|
+
### Breaches From Skipping Security Phases
|
|
32
|
+
|
|
33
|
+
| Incident | Root Cause (Skipped Phase) | Impact |
|
|
34
|
+
|------------------------------|-------------------------------------------|---------------------------------|
|
|
35
|
+
| Equifax (2017) | No SCA — unpatched Apache Struts CVE | 147M records, $700M settlement |
|
|
36
|
+
| SolarWinds (2020) | No supply chain security, weak build CI | 18,000 orgs compromised |
|
|
37
|
+
| Log4Shell (2021) | No dependency threat modeling | Millions of systems vulnerable |
|
|
38
|
+
| MOVEit Transfer (2023) | No DAST on file transfer endpoints | 2,500+ orgs, 90M individuals |
|
|
39
|
+
| XZ Utils backdoor (2024) | No supply chain integrity verification | Near-miss on global SSH infra |
|
|
40
|
+
| npm Shai Hulud attack (2025) | No behavioral SCA / supply chain monitor | Malicious packages in ecosystem |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 2. Core Security Principles
|
|
45
|
+
|
|
46
|
+
### Shift-Left Security
|
|
47
|
+
|
|
48
|
+
Move security as early as possible. Instead of a gate before release, embed it
|
|
49
|
+
into every phase starting with requirements:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
Traditional: [Dev] → [Dev] → [Dev] → [Test] → [SECURITY] → [Release]
|
|
53
|
+
Shift-Left: [SEC+Dev] → [SEC+Dev] → [SEC+Test] → [SEC+Deploy] → [SEC+Ops]
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Security by Design
|
|
57
|
+
|
|
58
|
+
Security is an architectural property, not a bolt-on. Every design decision must consider:
|
|
59
|
+
- **Least privilege** — minimum necessary permissions
|
|
60
|
+
- **Fail-safe defaults** — deny by default, allow explicitly
|
|
61
|
+
- **Complete mediation** — verify every access attempt
|
|
62
|
+
- **Separation of duties** — no single point of compromise
|
|
63
|
+
- **Economy of mechanism** — simple, auditable designs
|
|
64
|
+
|
|
65
|
+
### Defense in Depth at Every Phase
|
|
66
|
+
|
|
67
|
+
| Phase | Primary Control | Secondary Control | Tertiary Control |
|
|
68
|
+
|-----------------|------------------------------|--------------------------------|---------------------------|
|
|
69
|
+
| Requirements | Security requirements | Abuse case analysis | Compliance mapping |
|
|
70
|
+
| Design | Threat modeling | Security architecture review | Attack surface analysis |
|
|
71
|
+
| Implementation | SAST in IDE | Secure coding standards | Peer code review |
|
|
72
|
+
| Build | SAST in CI | SCA dependency scan | Secret scanning |
|
|
73
|
+
| Test | DAST on staging | Penetration testing | Fuzz testing |
|
|
74
|
+
| Deploy | IaC scanning | Container image scanning | Configuration validation |
|
|
75
|
+
| Operations | Runtime protection (RASP) | WAF / API gateway | SIEM / monitoring |
|
|
76
|
+
|
|
77
|
+
### Security as Code
|
|
78
|
+
|
|
79
|
+
Codify security policies so they are version-controlled, reviewable via pull
|
|
80
|
+
requests, testable with unit tests, automated in CI/CD, and reproducible.
|
|
81
|
+
|
|
82
|
+
### Continuous Validation
|
|
83
|
+
|
|
84
|
+
- Automated scans on every commit (SAST, SCA, secrets)
|
|
85
|
+
- Dynamic scans on every staging deployment (DAST)
|
|
86
|
+
- Periodic penetration tests (quarterly or after major changes)
|
|
87
|
+
- Continuous production monitoring (SIEM, anomaly detection)
|
|
88
|
+
- Regular dependency updates and vulnerability patching
|
|
89
|
+
|
|
90
|
+
### Threat Modeling Before Coding
|
|
91
|
+
|
|
92
|
+
1. **Decompose** — components and data flows
|
|
93
|
+
2. **Identify** — assets, entry points, trust boundaries
|
|
94
|
+
3. **Enumerate** — threats using STRIDE or LINDDUN
|
|
95
|
+
4. **Rate** — risk using DREAD or CVSS
|
|
96
|
+
5. **Mitigate** — specific, testable security controls
|
|
97
|
+
6. **Validate** — mitigations through testing
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 3. Implementation Patterns
|
|
102
|
+
|
|
103
|
+
### Security Requirements Gathering
|
|
104
|
+
|
|
105
|
+
Every feature spec should include security requirements:
|
|
106
|
+
|
|
107
|
+
```markdown
|
|
108
|
+
## Feature: User Profile Update API
|
|
109
|
+
### Security Requirements
|
|
110
|
+
- [ ] Authentication: Require valid JWT with `profile:write` scope
|
|
111
|
+
- [ ] Authorization: Users can only modify own profile (IDOR prevention)
|
|
112
|
+
- [ ] Input validation: Display name max 100 chars, alphanumeric + spaces
|
|
113
|
+
- [ ] Rate limiting: Max 10 updates per hour per user
|
|
114
|
+
- [ ] Audit logging: Log all changes with before/after values
|
|
115
|
+
- [ ] Data classification: Email is PII — encrypt at rest, mask in logs
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Threat Modeling in Design (STRIDE)
|
|
119
|
+
|
|
120
|
+
| Category | Question | Example Threat |
|
|
121
|
+
|----------------------------|---------------------------------------------------|-----------------------------------------|
|
|
122
|
+
| **S**poofing | Can attacker impersonate a user or component? | Stolen JWT used from different IP |
|
|
123
|
+
| **T**ampering | Can data be modified in transit or at rest? | MITM on API calls |
|
|
124
|
+
| **R**epudiation | Can a user deny performing an action? | No audit log for financial transactions |
|
|
125
|
+
| **I**nformation Disclosure | Can sensitive data leak? | Stack traces in error responses |
|
|
126
|
+
| **D**enial of Service | Can the system be made unavailable? | Unbounded query on search endpoint |
|
|
127
|
+
| **E**levation of Privilege | Can a user gain unauthorized access? | Mass assignment on user role field |
|
|
128
|
+
|
|
129
|
+
### SAST in CI
|
|
130
|
+
|
|
131
|
+
**Semgrep** — 20K–100K loc/sec, custom rules look like source code:
|
|
132
|
+
```yaml
|
|
133
|
+
# .semgrep.yml
|
|
134
|
+
rules:
|
|
135
|
+
- id: hardcoded-jwt-secret
|
|
136
|
+
patterns:
|
|
137
|
+
- pattern: jwt.sign($PAYLOAD, "...")
|
|
138
|
+
message: "JWT secret must come from environment variables"
|
|
139
|
+
severity: ERROR
|
|
140
|
+
languages: [javascript, typescript]
|
|
141
|
+
|
|
142
|
+
- id: sql-injection-template-literal
|
|
143
|
+
patterns:
|
|
144
|
+
- pattern: $DB.query(`... ${$USER_INPUT} ...`)
|
|
145
|
+
message: "Use parameterized queries instead of template literals"
|
|
146
|
+
severity: ERROR
|
|
147
|
+
languages: [javascript, typescript]
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**CodeQL** — 88% accuracy, 5% false positive rate. Native to GitHub Advanced
|
|
151
|
+
Security. Excels at taint tracking (source-to-sink). Slower but deeper
|
|
152
|
+
inter-procedural analysis.
|
|
153
|
+
|
|
154
|
+
**SonarQube** — ~0.4K loc/sec. Broader scope: code smells, duplication,
|
|
155
|
+
coverage, technical debt. Quality gates can block merges below thresholds.
|
|
156
|
+
|
|
157
|
+
### DAST in Staging
|
|
158
|
+
|
|
159
|
+
**OWASP ZAP** automation framework configuration:
|
|
160
|
+
```yaml
|
|
161
|
+
# zap-config.yaml
|
|
162
|
+
env:
|
|
163
|
+
contexts:
|
|
164
|
+
- name: "staging-app"
|
|
165
|
+
urls: ["https://staging.example.com"]
|
|
166
|
+
authentication:
|
|
167
|
+
method: "json"
|
|
168
|
+
parameters:
|
|
169
|
+
loginRequestUrl: "https://staging.example.com/api/auth/login"
|
|
170
|
+
loginRequestBody: '{"email":"{%username%}","password":"{%password%}"}'
|
|
171
|
+
jobs:
|
|
172
|
+
- type: spider
|
|
173
|
+
parameters: { maxDuration: 5, maxDepth: 10 }
|
|
174
|
+
- type: passiveScan-wait
|
|
175
|
+
parameters: { maxDuration: 10 }
|
|
176
|
+
- type: activeScan
|
|
177
|
+
parameters: { maxRuleDurationInMins: 5 }
|
|
178
|
+
- type: report
|
|
179
|
+
parameters: { template: "sarif-json", reportDir: "/zap/reports" }
|
|
180
|
+
risks: [high, medium]
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### SCA — Three-Layer Dependency Security
|
|
184
|
+
|
|
185
|
+
| Layer | Purpose | Tools | Coverage |
|
|
186
|
+
|-------|------------------------------|--------------------------|------------------------------|
|
|
187
|
+
| 1 | Dependency update automation | Dependabot, Renovate | Keeps versions current |
|
|
188
|
+
| 2 | CVE vulnerability scanning | Snyk, npm audit, Trivy | Known vulnerability database |
|
|
189
|
+
| 3 | Malicious package detection | Socket.dev, Phylum | Behavioral / supply chain |
|
|
190
|
+
|
|
191
|
+
No single tool covers all three layers — build a stack, not buy a solution.
|
|
192
|
+
|
|
193
|
+
### Security Code Review Checklist
|
|
194
|
+
|
|
195
|
+
```markdown
|
|
196
|
+
### Authentication & Authorization
|
|
197
|
+
- [ ] All endpoints require authentication (unless explicitly public)
|
|
198
|
+
- [ ] Authorization checks verify resource ownership (no IDOR)
|
|
199
|
+
|
|
200
|
+
### Input Validation
|
|
201
|
+
- [ ] All user input validated server-side
|
|
202
|
+
- [ ] SQL uses parameterized queries; output encoding for context
|
|
203
|
+
|
|
204
|
+
### Data Handling
|
|
205
|
+
- [ ] No secrets in code; PII masked in logs
|
|
206
|
+
- [ ] Sensitive data encrypted at rest and in transit
|
|
207
|
+
|
|
208
|
+
### Business Logic
|
|
209
|
+
- [ ] Race conditions considered; rate limiting on sensitive endpoints
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Penetration Testing Cadence
|
|
213
|
+
|
|
214
|
+
| Trigger | Scope | Type |
|
|
215
|
+
|--------------------------|--------------------------|--------------------|
|
|
216
|
+
| Quarterly schedule | Full application | External pen test |
|
|
217
|
+
| Major feature release | New feature + interfaces | Targeted pen test |
|
|
218
|
+
| Infrastructure change | Network / cloud config | Infrastructure |
|
|
219
|
+
| Post-incident | Attack vector + surface | Focused assessment |
|
|
220
|
+
|
|
221
|
+
### Security Champions Program
|
|
222
|
+
|
|
223
|
+
1. **Select** one volunteer developer per team
|
|
224
|
+
2. **Train** via OWASP, SANS, vendor certifications
|
|
225
|
+
3. **Empower** with authority to flag/block security issues
|
|
226
|
+
4. **Connect** through cross-team community of practice
|
|
227
|
+
5. **Rotate** annually to spread knowledge
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## 4. Vulnerability Catalog
|
|
232
|
+
|
|
233
|
+
Process-level vulnerabilities introducing systemic security risk:
|
|
234
|
+
|
|
235
|
+
| # | Vulnerability | Risk | Mitigation |
|
|
236
|
+
|----|--------------------------------------|----------|-----------------------------------------------------|
|
|
237
|
+
| 1 | Missing threat model | Critical | Mandatory threat model in design review |
|
|
238
|
+
| 2 | No SAST in CI pipeline | High | SAST gate on every PR (Semgrep/CodeQL) |
|
|
239
|
+
| 3 | Insecure defaults in frameworks | High | Hardened base configs, env-aware defaults |
|
|
240
|
+
| 4 | Missing security requirements | Critical | Security requirements template per feature |
|
|
241
|
+
| 5 | Security as afterthought | Critical | Security review as design phase gate |
|
|
242
|
+
| 6 | No SCA / dependency scanning | High | Automated SCA with blocking on high/critical |
|
|
243
|
+
| 7 | No secret scanning in pipeline | Critical | Pre-commit hooks + CI secret scanning |
|
|
244
|
+
| 8 | Missing security regression tests | Medium | Security test suite on every build |
|
|
245
|
+
| 9 | No DAST on staging | High | Automated DAST in staging pipeline |
|
|
246
|
+
| 10 | Shared secrets across environments | High | Separate secrets per env, vault-based management |
|
|
247
|
+
| 11 | No security training for developers | Medium | Annual secure coding training + champions |
|
|
248
|
+
| 12 | Manual security reviews only | Medium | Automated tooling + manual review for high-risk |
|
|
249
|
+
| 13 | No IaC scanning | High | Checkov/tfsec in CI for all infrastructure code |
|
|
250
|
+
| 14 | Missing vulnerability disclosure | Medium | Published security.txt + responsible disclosure |
|
|
251
|
+
| 15 | No container image scanning | High | Trivy/Grype scan in build pipeline |
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## 5. Security Checklist
|
|
256
|
+
|
|
257
|
+
### Requirements Phase
|
|
258
|
+
- [ ] Security requirements documented for every feature
|
|
259
|
+
- [ ] Abuse cases and misuse cases defined
|
|
260
|
+
- [ ] Data classification completed (public, internal, confidential, restricted)
|
|
261
|
+
- [ ] Compliance requirements mapped (GDPR, PCI-DSS, HIPAA, SOC2)
|
|
262
|
+
- [ ] Third-party integration security requirements defined
|
|
263
|
+
|
|
264
|
+
### Design Phase
|
|
265
|
+
- [ ] Threat model created using STRIDE or equivalent
|
|
266
|
+
- [ ] Security architecture review completed and signed off
|
|
267
|
+
- [ ] Attack surface analysis documented
|
|
268
|
+
- [ ] Auth model designed; data flow diagrams include encryption boundaries
|
|
269
|
+
- [ ] Secure defaults defined for all configuration parameters
|
|
270
|
+
|
|
271
|
+
### Implementation Phase
|
|
272
|
+
- [ ] Secure coding standards followed (OWASP Secure Coding Practices)
|
|
273
|
+
- [ ] SAST integrated in IDE for real-time feedback
|
|
274
|
+
- [ ] Pre-commit hooks for secret scanning
|
|
275
|
+
- [ ] Parameterized queries for all database operations
|
|
276
|
+
- [ ] Server-side input validation; context-appropriate output encoding
|
|
277
|
+
- [ ] Error handling does not leak sensitive information
|
|
278
|
+
- [ ] Security events logged; sensitive data excluded from logs
|
|
279
|
+
|
|
280
|
+
### Testing Phase
|
|
281
|
+
- [ ] SAST passes with zero high/critical findings
|
|
282
|
+
- [ ] SCA — no high/critical CVEs in dependencies
|
|
283
|
+
- [ ] DAST on staging (authenticated + unauthenticated)
|
|
284
|
+
- [ ] Security regression tests pass
|
|
285
|
+
- [ ] Penetration test scheduled for major releases
|
|
286
|
+
- [ ] Fuzz testing on parsing and input-handling code
|
|
287
|
+
|
|
288
|
+
### Deployment Phase
|
|
289
|
+
- [ ] IaC security scan passes (Checkov, tfsec)
|
|
290
|
+
- [ ] Container images scanned — no critical base image vulnerabilities
|
|
291
|
+
- [ ] Secrets injected at runtime, not baked into images
|
|
292
|
+
- [ ] TLS with strong ciphers; security headers configured
|
|
293
|
+
- [ ] Network segmentation enforced
|
|
294
|
+
|
|
295
|
+
### Operations Phase
|
|
296
|
+
- [ ] Security monitoring/alerting active (SIEM)
|
|
297
|
+
- [ ] Incident response plan documented and tested
|
|
298
|
+
- [ ] Vulnerability disclosure policy published
|
|
299
|
+
- [ ] Dependency update automation enabled
|
|
300
|
+
- [ ] Access reviews conducted quarterly
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## 6. Tools & Automation
|
|
305
|
+
|
|
306
|
+
### SAST
|
|
307
|
+
|
|
308
|
+
| Tool | Speed | Languages | Best For |
|
|
309
|
+
|-------------|--------------------|-----------|-----------------------------------|
|
|
310
|
+
| Semgrep | 20K–100K loc/sec | 30+ | Fast PR scanning, custom rules |
|
|
311
|
+
| CodeQL | Slower (deep) | 12 | Taint analysis, semantic bugs |
|
|
312
|
+
| SonarQube | ~0.4K loc/sec | 30+ | Code quality + security |
|
|
313
|
+
| Snyk Code | Fast (AI-assisted) | 10+ | AI-powered fix suggestions |
|
|
314
|
+
|
|
315
|
+
### DAST
|
|
316
|
+
|
|
317
|
+
| Tool | Type | Auth | Best For |
|
|
318
|
+
|-------------|--------------|---------|-----------------------------------|
|
|
319
|
+
| OWASP ZAP | Open source | Full | Free, comprehensive, CI-friendly |
|
|
320
|
+
| Burp Suite | Commercial | Full | Manual + automated pen testing |
|
|
321
|
+
| Nuclei | Open source | Template| Fast template-based scanning |
|
|
322
|
+
|
|
323
|
+
### SCA
|
|
324
|
+
|
|
325
|
+
| Tool | Detection Approach | Supply Chain | Integration |
|
|
326
|
+
|----------------|------------------------|--------------|---------------------|
|
|
327
|
+
| Snyk | CVE (proprietary+NVD) | Basic | CI/CD, IDE, CLI |
|
|
328
|
+
| Socket.dev | Behavioral analysis | Deep | GitHub, npm |
|
|
329
|
+
| Trivy | CVE (NVD, GitHub) | Basic | CI/CD, CLI |
|
|
330
|
+
| Dependabot | CVE (GitHub Advisory) | No | GitHub native |
|
|
331
|
+
|
|
332
|
+
### Secret Scanning
|
|
333
|
+
|
|
334
|
+
| Tool | Patterns | Verification | Pre-commit |
|
|
335
|
+
|----------------|-------------|------------------|------------|
|
|
336
|
+
| Gitleaks | 160+ types | No | Yes |
|
|
337
|
+
| TruffleHog | Entropy+pat | Live verification| Yes |
|
|
338
|
+
| GitHub Native | 200+ types | Partner verify | Auto |
|
|
339
|
+
|
|
340
|
+
### IaC Scanning
|
|
341
|
+
|
|
342
|
+
| Tool | Frameworks | Policies | Notes |
|
|
343
|
+
|-------------|-------------------------------|----------|----------------------|
|
|
344
|
+
| Checkov | Terraform, CF, K8s, Docker | 1000+ | Graph-based analysis |
|
|
345
|
+
| tfsec | Terraform | 300+ | Merged into Trivy |
|
|
346
|
+
| Terrascan | Terraform, K8s, CF, Docker | 500+ | Rego (OPA) policies |
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
## 7. Platform-Specific Guidance
|
|
351
|
+
|
|
352
|
+
### GitHub Actions Security Pipeline
|
|
353
|
+
|
|
354
|
+
```yaml
|
|
355
|
+
# .github/workflows/security.yml
|
|
356
|
+
name: Security Pipeline
|
|
357
|
+
on:
|
|
358
|
+
pull_request:
|
|
359
|
+
branches: [main, develop]
|
|
360
|
+
push:
|
|
361
|
+
branches: [main]
|
|
362
|
+
schedule:
|
|
363
|
+
- cron: '0 6 * * 1' # Weekly Monday scan
|
|
364
|
+
|
|
365
|
+
permissions:
|
|
366
|
+
contents: read
|
|
367
|
+
security-events: write
|
|
368
|
+
|
|
369
|
+
jobs:
|
|
370
|
+
secret-scan:
|
|
371
|
+
runs-on: ubuntu-latest
|
|
372
|
+
steps:
|
|
373
|
+
- uses: actions/checkout@v4
|
|
374
|
+
with: { fetch-depth: 0 }
|
|
375
|
+
- uses: gitleaks/gitleaks-action@v2
|
|
376
|
+
env:
|
|
377
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
378
|
+
|
|
379
|
+
sast:
|
|
380
|
+
runs-on: ubuntu-latest
|
|
381
|
+
steps:
|
|
382
|
+
- uses: actions/checkout@v4
|
|
383
|
+
- uses: semgrep/semgrep-action@v1
|
|
384
|
+
with:
|
|
385
|
+
config: "p/default p/owasp-top-ten p/nodejs"
|
|
386
|
+
generateSarif: "1"
|
|
387
|
+
env:
|
|
388
|
+
SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }}
|
|
389
|
+
- uses: github/codeql-action/upload-sarif@v3
|
|
390
|
+
if: always()
|
|
391
|
+
with: { sarif_file: semgrep.sarif }
|
|
392
|
+
|
|
393
|
+
codeql:
|
|
394
|
+
runs-on: ubuntu-latest
|
|
395
|
+
steps:
|
|
396
|
+
- uses: actions/checkout@v4
|
|
397
|
+
- uses: github/codeql-action/init@v3
|
|
398
|
+
with: { languages: javascript-typescript, queries: security-extended }
|
|
399
|
+
- uses: github/codeql-action/autobuild@v3
|
|
400
|
+
- uses: github/codeql-action/analyze@v3
|
|
401
|
+
|
|
402
|
+
sca:
|
|
403
|
+
runs-on: ubuntu-latest
|
|
404
|
+
steps:
|
|
405
|
+
- uses: actions/checkout@v4
|
|
406
|
+
- uses: snyk/actions/node@master
|
|
407
|
+
env:
|
|
408
|
+
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
|
|
409
|
+
with: { args: --severity-threshold=high }
|
|
410
|
+
- uses: aquasecurity/trivy-action@master
|
|
411
|
+
with:
|
|
412
|
+
scan-type: 'fs'
|
|
413
|
+
format: 'sarif'
|
|
414
|
+
output: 'trivy.sarif'
|
|
415
|
+
severity: 'CRITICAL,HIGH'
|
|
416
|
+
- uses: github/codeql-action/upload-sarif@v3
|
|
417
|
+
if: always()
|
|
418
|
+
with: { sarif_file: 'trivy.sarif' }
|
|
419
|
+
|
|
420
|
+
iac-scan:
|
|
421
|
+
runs-on: ubuntu-latest
|
|
422
|
+
steps:
|
|
423
|
+
- uses: actions/checkout@v4
|
|
424
|
+
- uses: bridgecrewio/checkov-action@master
|
|
425
|
+
with: { directory: ./infrastructure, framework: terraform, soft_fail: false }
|
|
426
|
+
|
|
427
|
+
dast:
|
|
428
|
+
runs-on: ubuntu-latest
|
|
429
|
+
needs: [sast, sca, secret-scan]
|
|
430
|
+
if: github.ref == 'refs/heads/main'
|
|
431
|
+
steps:
|
|
432
|
+
- uses: actions/checkout@v4
|
|
433
|
+
- uses: zaproxy/action-full-scan@v0.11.0
|
|
434
|
+
with:
|
|
435
|
+
target: 'https://staging.example.com'
|
|
436
|
+
rules_file_name: '.zap/rules.tsv'
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
### GitLab CI/CD Security
|
|
440
|
+
|
|
441
|
+
```yaml
|
|
442
|
+
# .gitlab-ci.yml — leverage built-in security templates
|
|
443
|
+
include:
|
|
444
|
+
- template: Security/SAST.gitlab-ci.yml
|
|
445
|
+
- template: Security/Secret-Detection.gitlab-ci.yml
|
|
446
|
+
- template: Security/Dependency-Scanning.gitlab-ci.yml
|
|
447
|
+
- template: Security/Container-Scanning.gitlab-ci.yml
|
|
448
|
+
- template: Security/DAST.gitlab-ci.yml
|
|
449
|
+
|
|
450
|
+
semgrep:
|
|
451
|
+
stage: security
|
|
452
|
+
image: semgrep/semgrep:latest
|
|
453
|
+
script: semgrep ci --config auto --sarif --output semgrep.sarif
|
|
454
|
+
artifacts:
|
|
455
|
+
reports: { sast: semgrep.sarif }
|
|
456
|
+
rules:
|
|
457
|
+
- if: $CI_MERGE_REQUEST_IID
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
### Jenkins Pipeline
|
|
461
|
+
|
|
462
|
+
```groovy
|
|
463
|
+
pipeline {
|
|
464
|
+
agent any
|
|
465
|
+
stages {
|
|
466
|
+
stage('Security') {
|
|
467
|
+
parallel {
|
|
468
|
+
stage('Secrets') { steps { sh 'gitleaks detect --source .' } }
|
|
469
|
+
stage('SAST') { steps { sh 'semgrep ci --config auto' } }
|
|
470
|
+
stage('SCA') { steps { sh 'snyk test --severity-threshold=high' } }
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
stage('IaC') { steps { sh 'checkov -d infrastructure/' } }
|
|
474
|
+
stage('Container') { steps { sh 'trivy image --severity HIGH,CRITICAL app:${BUILD_NUMBER}' } }
|
|
475
|
+
stage('DAST') {
|
|
476
|
+
when { branch 'main' }
|
|
477
|
+
steps {
|
|
478
|
+
sh 'docker run --rm ghcr.io/zaproxy/zaproxy:stable zap-full-scan.py -t https://staging.example.com'
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
### Azure DevOps
|
|
486
|
+
|
|
487
|
+
```yaml
|
|
488
|
+
# azure-pipelines.yml
|
|
489
|
+
stages:
|
|
490
|
+
- stage: SecurityScans
|
|
491
|
+
jobs:
|
|
492
|
+
- job: SAST
|
|
493
|
+
steps:
|
|
494
|
+
- script: semgrep ci --config auto --sarif -o semgrep.sarif
|
|
495
|
+
- task: PublishBuildArtifacts@1
|
|
496
|
+
inputs: { PathtoPublish: semgrep.sarif, ArtifactName: SecurityReports }
|
|
497
|
+
- job: SCA
|
|
498
|
+
steps:
|
|
499
|
+
- task: SnykSecurityScan@1
|
|
500
|
+
inputs: { testType: app, severityThreshold: high, failOnIssues: true }
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
---
|
|
504
|
+
|
|
505
|
+
## 8. Incident Patterns
|
|
506
|
+
|
|
507
|
+
### Security Regression Detection
|
|
508
|
+
|
|
509
|
+
```javascript
|
|
510
|
+
// security-regression.test.js — each test maps to a previously discovered vuln
|
|
511
|
+
describe('Security Regressions', () => {
|
|
512
|
+
test('VULN-001: user search uses parameterized queries', async () => {
|
|
513
|
+
const malicious = "'; DROP TABLE users; --";
|
|
514
|
+
const res = await request(app)
|
|
515
|
+
.get(`/api/users/search?q=${encodeURIComponent(malicious)}`)
|
|
516
|
+
.set('Authorization', `Bearer ${token}`);
|
|
517
|
+
expect(res.status).not.toBe(500);
|
|
518
|
+
const count = await db.query('SELECT COUNT(*) FROM users');
|
|
519
|
+
expect(count.rows[0].count).toBeGreaterThan(0);
|
|
520
|
+
});
|
|
521
|
+
|
|
522
|
+
test('VULN-002: cannot download other user invoices', async () => {
|
|
523
|
+
const res = await request(app)
|
|
524
|
+
.get('/api/invoices/other-user-id')
|
|
525
|
+
.set('Authorization', `Bearer ${userAToken}`);
|
|
526
|
+
expect(res.status).toBe(403);
|
|
527
|
+
});
|
|
528
|
+
|
|
529
|
+
test('VULN-003: HTML in comments is sanitized', async () => {
|
|
530
|
+
const res = await request(app)
|
|
531
|
+
.post('/api/comments')
|
|
532
|
+
.set('Authorization', `Bearer ${token}`)
|
|
533
|
+
.send({ body: '<script>alert("xss")</script>' });
|
|
534
|
+
expect(res.body.body).not.toContain('<script>');
|
|
535
|
+
});
|
|
536
|
+
});
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
### Vulnerability Disclosure Process
|
|
540
|
+
|
|
541
|
+
1. **Receive** — Monitor security@company.com, HackerOne, security.txt; auto-ack within 1 business day
|
|
542
|
+
2. **Triage (48h)** — Reproduce, assess impact, classify: Critical (24h), High (7d), Medium (30d), Low (90d)
|
|
543
|
+
3. **Remediate** — Private advisory, fix in private fork, backport patches, write regression test
|
|
544
|
+
4. **Disclose** — Request CVE, coordinate 90-day timeline, publish advisory with CVSS
|
|
545
|
+
5. **Post-mortem** — Root cause analysis, update threat model, add SAST/DAST rules, share learnings
|
|
546
|
+
|
|
547
|
+
### CVE Response Playbook
|
|
548
|
+
|
|
549
|
+
| Time | Action | Owner |
|
|
550
|
+
|----------|----------------------------------------------|------------------|
|
|
551
|
+
| T+0h | CVE alert via OSV/Snyk | Security tooling |
|
|
552
|
+
| T+1h | Triage: check SBOM for affected components | Security team |
|
|
553
|
+
| T+2h | Assess exploitability in our context | Security + Dev |
|
|
554
|
+
| T+4h | Internal advisory to affected teams | Security team |
|
|
555
|
+
| T+24h | Mitigate: WAF rules, feature flags | DevOps + Dev |
|
|
556
|
+
| T+48–72h | Patch: update dependency, test, deploy | Dev team |
|
|
557
|
+
| T+1w | Verify remediation, update SBOM | Security team |
|
|
558
|
+
|
|
559
|
+
---
|
|
560
|
+
|
|
561
|
+
## 9. Compliance & Standards
|
|
562
|
+
|
|
563
|
+
### NIST SSDF SP 800-218
|
|
564
|
+
|
|
565
|
+
Four practice groups (v1.1 final; v1.2 draft released Dec 2025 per EO 14306):
|
|
566
|
+
|
|
567
|
+
| Practice Group | ID | Key Practices |
|
|
568
|
+
|-----------------------------------|----|----------------------------------------------------|
|
|
569
|
+
| Prepare the Organization | PO | Security requirements, roles, tooling, training |
|
|
570
|
+
| Protect the Software | PS | Code, build, and release integrity |
|
|
571
|
+
| Produce Well-Secured Software | PW | Design, code review, test, configure securely |
|
|
572
|
+
| Respond to Vulnerabilities | RV | Identify, analyze, remediate vulnerabilities |
|
|
573
|
+
|
|
574
|
+
**SSDF-to-CI/CD mapping:**
|
|
575
|
+
- PO.1 → Security requirements template in issue tracker
|
|
576
|
+
- PS.1 → Branch protection, signed commits, CODEOWNERS
|
|
577
|
+
- PS.2 → Reproducible builds, SLSA provenance
|
|
578
|
+
- PW.5 → SAST + DAST + SCA in pipeline
|
|
579
|
+
- RV.1 → Vulnerability scanning, dependency monitoring
|
|
580
|
+
|
|
581
|
+
### OWASP SAMM v2.0
|
|
582
|
+
|
|
583
|
+
Five business functions, 15 security practices, 3 maturity levels each:
|
|
584
|
+
|
|
585
|
+
| Business Function | Security Practices |
|
|
586
|
+
|-------------------|-------------------------------------------------------------|
|
|
587
|
+
| Governance | Strategy & Metrics, Policy & Compliance, Education |
|
|
588
|
+
| Design | Threat Assessment, Security Requirements, Security Architecture |
|
|
589
|
+
| Implementation | Secure Build, Secure Deployment, Defect Management |
|
|
590
|
+
| Verification | Architecture Assessment, Requirements Testing, Security Testing |
|
|
591
|
+
| Operations | Incident Management, Environment Mgmt, Operational Mgmt |
|
|
592
|
+
|
|
593
|
+
### Microsoft SDL
|
|
594
|
+
|
|
595
|
+
12 practices across the development lifecycle. 2024–2025 updates: six new
|
|
596
|
+
requirements, six retired, 19 major updates. New focus: memory-safe languages,
|
|
597
|
+
OSS supply chain, responsible AI, AI-assisted security tooling.
|
|
598
|
+
|
|
599
|
+
**Also relevant:** ISO 27001 (A.8.25–A.8.31), SOC 2 (CC8.1/CC7.1), PCI-DSS 4.0 (Req 6).
|
|
600
|
+
|
|
601
|
+
---
|
|
602
|
+
|
|
603
|
+
## 10. Code Examples
|
|
604
|
+
|
|
605
|
+
### Pre-commit Hook Configuration
|
|
606
|
+
|
|
607
|
+
```yaml
|
|
608
|
+
# .pre-commit-config.yaml
|
|
609
|
+
repos:
|
|
610
|
+
- repo: https://github.com/gitleaks/gitleaks
|
|
611
|
+
rev: v8.21.2
|
|
612
|
+
hooks:
|
|
613
|
+
- id: gitleaks
|
|
614
|
+
|
|
615
|
+
- repo: https://github.com/trufflesecurity/trufflehog
|
|
616
|
+
rev: v3.82.13
|
|
617
|
+
hooks:
|
|
618
|
+
- id: trufflehog
|
|
619
|
+
entry: trufflehog git file://. --since-commit HEAD --only-verified --fail
|
|
620
|
+
|
|
621
|
+
- repo: https://github.com/semgrep/semgrep
|
|
622
|
+
rev: v1.96.0
|
|
623
|
+
hooks:
|
|
624
|
+
- id: semgrep
|
|
625
|
+
args: ['--config', 'auto', '--error']
|
|
626
|
+
|
|
627
|
+
- repo: https://github.com/bridgecrewio/checkov
|
|
628
|
+
rev: 3.2.300
|
|
629
|
+
hooks:
|
|
630
|
+
- id: checkov
|
|
631
|
+
args: ['--framework', 'terraform', '--quiet']
|
|
632
|
+
|
|
633
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
634
|
+
rev: v5.0.0
|
|
635
|
+
hooks:
|
|
636
|
+
- id: detect-private-key
|
|
637
|
+
- id: check-added-large-files
|
|
638
|
+
args: ['--maxkb=500']
|
|
639
|
+
- id: no-commit-to-branch
|
|
640
|
+
args: ['--branch', 'main', '--branch', 'production']
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
### Security PR Template
|
|
644
|
+
|
|
645
|
+
```markdown
|
|
646
|
+
<!-- .github/PULL_REQUEST_TEMPLATE/security-review.md -->
|
|
647
|
+
## Security Impact Assessment
|
|
648
|
+
|
|
649
|
+
### Change Classification
|
|
650
|
+
- [ ] Modifies authentication or authorization logic
|
|
651
|
+
- [ ] Handles user input (forms, APIs, file uploads)
|
|
652
|
+
- [ ] Modifies database queries or data access
|
|
653
|
+
- [ ] Introduces new third-party dependencies
|
|
654
|
+
- [ ] Handles sensitive data (PII, credentials, financial)
|
|
655
|
+
|
|
656
|
+
### Security Checklist
|
|
657
|
+
- [ ] Threat model reviewed/updated
|
|
658
|
+
- [ ] Input validation for all new user-supplied data
|
|
659
|
+
- [ ] Authorization checks verify resource ownership
|
|
660
|
+
- [ ] No hardcoded secrets; error responses leak nothing
|
|
661
|
+
- [ ] Security regression tests added
|
|
662
|
+
```
|
|
663
|
+
|
|
664
|
+
### DAST Scan Policy for CI Gating
|
|
665
|
+
|
|
666
|
+
```tsv
|
|
667
|
+
# .zap/rules.tsv — ID, action (IGNORE/WARN/FAIL), name
|
|
668
|
+
10010 FAIL Cookie No HttpOnly Flag
|
|
669
|
+
10011 FAIL Cookie Without Secure Flag
|
|
670
|
+
10021 FAIL X-Content-Type-Options Header
|
|
671
|
+
10035 FAIL Strict-Transport-Security Header
|
|
672
|
+
10038 FAIL Content Security Policy Header Not Set
|
|
673
|
+
40012 FAIL Cross Site Scripting (Reflected)
|
|
674
|
+
40014 FAIL Cross Site Scripting (Persistent)
|
|
675
|
+
40018 FAIL SQL Injection
|
|
676
|
+
40028 FAIL Open Redirect
|
|
677
|
+
90020 FAIL Remote OS Command Injection
|
|
678
|
+
```
|
|
679
|
+
|
|
680
|
+
### SBOM Generation
|
|
681
|
+
|
|
682
|
+
```yaml
|
|
683
|
+
# GitHub Actions — SBOM for NIST SSDF PS.3 compliance
|
|
684
|
+
- name: Generate CycloneDX SBOM
|
|
685
|
+
uses: CycloneDX/gh-node-module-generatebom@v1
|
|
686
|
+
with: { output: './sbom.cdx.json' }
|
|
687
|
+
- name: Scan SBOM for vulnerabilities
|
|
688
|
+
run: trivy sbom sbom.cdx.json --severity HIGH,CRITICAL --exit-code 1
|
|
689
|
+
```
|
|
690
|
+
|
|
691
|
+
---
|
|
692
|
+
|
|
693
|
+
## References
|
|
694
|
+
|
|
695
|
+
- NIST SP 800-218 — SSDF v1.1/v1.2 draft (https://csrc.nist.gov/pubs/sp/800/218/final)
|
|
696
|
+
- OWASP SAMM v2.0 (https://owaspsamm.org/model/)
|
|
697
|
+
- Microsoft SDL (https://www.microsoft.com/en-us/securityengineering/sdl)
|
|
698
|
+
- IBM/Ponemon 2025 Cost of a Data Breach (https://www.ibm.com/reports/data-breach)
|
|
699
|
+
- OWASP Secure Coding Practices (https://owasp.org/www-project-secure-coding-practices-quick-reference-guide/)
|
|
700
|
+
- SLSA (https://slsa.dev/) | CycloneDX (https://cyclonedx.org/)
|