@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.
Files changed (629) hide show
  1. package/AGENTS.md +111 -0
  2. package/CHANGELOG.md +14 -0
  3. package/CONTRIBUTING.md +101 -0
  4. package/LICENSE +21 -0
  5. package/README.md +314 -0
  6. package/assets/composition-engine.mmd +34 -0
  7. package/assets/demo-script.sh +17 -0
  8. package/assets/logo-dark.svg +14 -0
  9. package/assets/logo.svg +14 -0
  10. package/assets/pipeline.mmd +39 -0
  11. package/assets/record-demo.sh +51 -0
  12. package/docs/README.md +51 -0
  13. package/docs/adapters/context-mode.md +60 -0
  14. package/docs/concepts/architecture.md +87 -0
  15. package/docs/concepts/artifact-model.md +60 -0
  16. package/docs/concepts/composition-engine.md +36 -0
  17. package/docs/concepts/indexing-and-recall.md +160 -0
  18. package/docs/concepts/observability.md +41 -0
  19. package/docs/concepts/roles-and-workflows.md +59 -0
  20. package/docs/concepts/terminology-policy.md +27 -0
  21. package/docs/getting-started/01-installation.md +78 -0
  22. package/docs/getting-started/02-first-run.md +102 -0
  23. package/docs/getting-started/03-adding-to-project.md +15 -0
  24. package/docs/getting-started/04-host-setup.md +15 -0
  25. package/docs/guides/ci-integration.md +15 -0
  26. package/docs/guides/creating-skills.md +15 -0
  27. package/docs/guides/expertise-module-authoring.md +15 -0
  28. package/docs/guides/hook-development.md +15 -0
  29. package/docs/guides/memory-and-learnings.md +34 -0
  30. package/docs/guides/multi-host-export.md +15 -0
  31. package/docs/guides/troubleshooting.md +101 -0
  32. package/docs/guides/writing-custom-roles.md +15 -0
  33. package/docs/plans/2026-03-15-cli-pipeline-integration-design.md +592 -0
  34. package/docs/plans/2026-03-15-cli-pipeline-integration-plan.md +598 -0
  35. package/docs/plans/2026-03-15-docs-enforcement-plan.md +238 -0
  36. package/docs/readmes/INDEX.md +99 -0
  37. package/docs/readmes/features/expertise/README.md +171 -0
  38. package/docs/readmes/features/exports/README.md +222 -0
  39. package/docs/readmes/features/hooks/README.md +103 -0
  40. package/docs/readmes/features/hooks/loop-cap-guard.md +133 -0
  41. package/docs/readmes/features/hooks/post-tool-capture.md +121 -0
  42. package/docs/readmes/features/hooks/post-tool-lint.md +130 -0
  43. package/docs/readmes/features/hooks/pre-compact-summary.md +122 -0
  44. package/docs/readmes/features/hooks/pre-tool-capture-route.md +100 -0
  45. package/docs/readmes/features/hooks/protected-path-write-guard.md +128 -0
  46. package/docs/readmes/features/hooks/session-start.md +119 -0
  47. package/docs/readmes/features/hooks/stop-handoff-harvest.md +125 -0
  48. package/docs/readmes/features/roles/README.md +157 -0
  49. package/docs/readmes/features/roles/clarifier.md +152 -0
  50. package/docs/readmes/features/roles/content-author.md +190 -0
  51. package/docs/readmes/features/roles/designer.md +193 -0
  52. package/docs/readmes/features/roles/executor.md +184 -0
  53. package/docs/readmes/features/roles/learner.md +210 -0
  54. package/docs/readmes/features/roles/planner.md +182 -0
  55. package/docs/readmes/features/roles/researcher.md +164 -0
  56. package/docs/readmes/features/roles/reviewer.md +184 -0
  57. package/docs/readmes/features/roles/specifier.md +162 -0
  58. package/docs/readmes/features/roles/verifier.md +215 -0
  59. package/docs/readmes/features/schemas/README.md +178 -0
  60. package/docs/readmes/features/skills/README.md +63 -0
  61. package/docs/readmes/features/skills/brainstorming.md +96 -0
  62. package/docs/readmes/features/skills/debugging.md +148 -0
  63. package/docs/readmes/features/skills/design.md +120 -0
  64. package/docs/readmes/features/skills/prepare-next.md +109 -0
  65. package/docs/readmes/features/skills/run-audit.md +159 -0
  66. package/docs/readmes/features/skills/scan-project.md +109 -0
  67. package/docs/readmes/features/skills/self-audit.md +176 -0
  68. package/docs/readmes/features/skills/tdd.md +137 -0
  69. package/docs/readmes/features/skills/using-skills.md +92 -0
  70. package/docs/readmes/features/skills/verification.md +120 -0
  71. package/docs/readmes/features/skills/writing-plans.md +104 -0
  72. package/docs/readmes/features/tooling/README.md +320 -0
  73. package/docs/readmes/features/workflows/README.md +186 -0
  74. package/docs/readmes/features/workflows/author.md +181 -0
  75. package/docs/readmes/features/workflows/clarify.md +154 -0
  76. package/docs/readmes/features/workflows/design-review.md +171 -0
  77. package/docs/readmes/features/workflows/design.md +169 -0
  78. package/docs/readmes/features/workflows/discover.md +162 -0
  79. package/docs/readmes/features/workflows/execute.md +173 -0
  80. package/docs/readmes/features/workflows/learn.md +167 -0
  81. package/docs/readmes/features/workflows/plan-review.md +165 -0
  82. package/docs/readmes/features/workflows/plan.md +170 -0
  83. package/docs/readmes/features/workflows/prepare-next.md +167 -0
  84. package/docs/readmes/features/workflows/review.md +169 -0
  85. package/docs/readmes/features/workflows/run-audit.md +191 -0
  86. package/docs/readmes/features/workflows/spec-challenge.md +159 -0
  87. package/docs/readmes/features/workflows/specify.md +160 -0
  88. package/docs/readmes/features/workflows/verify.md +177 -0
  89. package/docs/readmes/packages/README.md +50 -0
  90. package/docs/readmes/packages/ajv.md +117 -0
  91. package/docs/readmes/packages/context-mode.md +118 -0
  92. package/docs/readmes/packages/gray-matter.md +116 -0
  93. package/docs/readmes/packages/node-test.md +137 -0
  94. package/docs/readmes/packages/yaml.md +112 -0
  95. package/docs/reference/configuration-reference.md +159 -0
  96. package/docs/reference/expertise-index.md +52 -0
  97. package/docs/reference/git-flow.md +43 -0
  98. package/docs/reference/hooks.md +87 -0
  99. package/docs/reference/host-exports.md +50 -0
  100. package/docs/reference/launch-checklist.md +172 -0
  101. package/docs/reference/marketplace-listings.md +76 -0
  102. package/docs/reference/release-process.md +34 -0
  103. package/docs/reference/roles-reference.md +77 -0
  104. package/docs/reference/skills.md +33 -0
  105. package/docs/reference/templates.md +29 -0
  106. package/docs/reference/tooling-cli.md +94 -0
  107. package/docs/truth-claims.yaml +222 -0
  108. package/expertise/PROGRESS.md +63 -0
  109. package/expertise/README.md +18 -0
  110. package/expertise/antipatterns/PROGRESS.md +56 -0
  111. package/expertise/antipatterns/backend/api-design-antipatterns.md +1271 -0
  112. package/expertise/antipatterns/backend/auth-antipatterns.md +1195 -0
  113. package/expertise/antipatterns/backend/caching-antipatterns.md +622 -0
  114. package/expertise/antipatterns/backend/database-antipatterns.md +1038 -0
  115. package/expertise/antipatterns/backend/index.md +24 -0
  116. package/expertise/antipatterns/backend/microservices-antipatterns.md +850 -0
  117. package/expertise/antipatterns/code/architecture-antipatterns.md +919 -0
  118. package/expertise/antipatterns/code/async-antipatterns.md +622 -0
  119. package/expertise/antipatterns/code/code-smells.md +1186 -0
  120. package/expertise/antipatterns/code/dependency-antipatterns.md +1209 -0
  121. package/expertise/antipatterns/code/error-handling-antipatterns.md +1360 -0
  122. package/expertise/antipatterns/code/index.md +27 -0
  123. package/expertise/antipatterns/code/naming-and-abstraction.md +1118 -0
  124. package/expertise/antipatterns/code/state-management-antipatterns.md +1076 -0
  125. package/expertise/antipatterns/code/testing-antipatterns.md +1053 -0
  126. package/expertise/antipatterns/design/accessibility-antipatterns.md +1136 -0
  127. package/expertise/antipatterns/design/dark-patterns.md +1121 -0
  128. package/expertise/antipatterns/design/index.md +22 -0
  129. package/expertise/antipatterns/design/ui-antipatterns.md +1202 -0
  130. package/expertise/antipatterns/design/ux-antipatterns.md +680 -0
  131. package/expertise/antipatterns/frontend/css-layout-antipatterns.md +691 -0
  132. package/expertise/antipatterns/frontend/flutter-antipatterns.md +1827 -0
  133. package/expertise/antipatterns/frontend/index.md +23 -0
  134. package/expertise/antipatterns/frontend/mobile-antipatterns.md +573 -0
  135. package/expertise/antipatterns/frontend/react-antipatterns.md +1128 -0
  136. package/expertise/antipatterns/frontend/spa-antipatterns.md +1235 -0
  137. package/expertise/antipatterns/index.md +31 -0
  138. package/expertise/antipatterns/performance/index.md +20 -0
  139. package/expertise/antipatterns/performance/performance-antipatterns.md +1013 -0
  140. package/expertise/antipatterns/performance/premature-optimization.md +623 -0
  141. package/expertise/antipatterns/performance/scaling-antipatterns.md +785 -0
  142. package/expertise/antipatterns/process/ai-coding-antipatterns.md +853 -0
  143. package/expertise/antipatterns/process/code-review-antipatterns.md +656 -0
  144. package/expertise/antipatterns/process/deployment-antipatterns.md +920 -0
  145. package/expertise/antipatterns/process/index.md +23 -0
  146. package/expertise/antipatterns/process/technical-debt-antipatterns.md +647 -0
  147. package/expertise/antipatterns/security/index.md +20 -0
  148. package/expertise/antipatterns/security/secrets-antipatterns.md +849 -0
  149. package/expertise/antipatterns/security/security-theater.md +843 -0
  150. package/expertise/antipatterns/security/vulnerability-patterns.md +801 -0
  151. package/expertise/architecture/PROGRESS.md +70 -0
  152. package/expertise/architecture/data/caching-architecture.md +671 -0
  153. package/expertise/architecture/data/data-consistency.md +574 -0
  154. package/expertise/architecture/data/data-modeling.md +536 -0
  155. package/expertise/architecture/data/event-streams-and-queues.md +634 -0
  156. package/expertise/architecture/data/index.md +25 -0
  157. package/expertise/architecture/data/search-architecture.md +663 -0
  158. package/expertise/architecture/data/sql-vs-nosql.md +708 -0
  159. package/expertise/architecture/decisions/architecture-decision-records.md +640 -0
  160. package/expertise/architecture/decisions/build-vs-buy.md +616 -0
  161. package/expertise/architecture/decisions/index.md +23 -0
  162. package/expertise/architecture/decisions/monolith-to-microservices.md +790 -0
  163. package/expertise/architecture/decisions/technology-selection.md +616 -0
  164. package/expertise/architecture/distributed/cap-theorem-and-tradeoffs.md +800 -0
  165. package/expertise/architecture/distributed/circuit-breaker-bulkhead.md +741 -0
  166. package/expertise/architecture/distributed/consensus-and-coordination.md +796 -0
  167. package/expertise/architecture/distributed/distributed-systems-fundamentals.md +564 -0
  168. package/expertise/architecture/distributed/idempotency-and-retry.md +796 -0
  169. package/expertise/architecture/distributed/index.md +25 -0
  170. package/expertise/architecture/distributed/saga-pattern.md +797 -0
  171. package/expertise/architecture/foundations/architectural-thinking.md +460 -0
  172. package/expertise/architecture/foundations/coupling-and-cohesion.md +770 -0
  173. package/expertise/architecture/foundations/design-principles-solid.md +649 -0
  174. package/expertise/architecture/foundations/domain-driven-design.md +719 -0
  175. package/expertise/architecture/foundations/index.md +25 -0
  176. package/expertise/architecture/foundations/separation-of-concerns.md +472 -0
  177. package/expertise/architecture/foundations/twelve-factor-app.md +797 -0
  178. package/expertise/architecture/index.md +34 -0
  179. package/expertise/architecture/integration/api-design-graphql.md +638 -0
  180. package/expertise/architecture/integration/api-design-grpc.md +804 -0
  181. package/expertise/architecture/integration/api-design-rest.md +892 -0
  182. package/expertise/architecture/integration/index.md +25 -0
  183. package/expertise/architecture/integration/third-party-integration.md +795 -0
  184. package/expertise/architecture/integration/webhooks-and-callbacks.md +1152 -0
  185. package/expertise/architecture/integration/websockets-realtime.md +791 -0
  186. package/expertise/architecture/mobile-architecture/index.md +22 -0
  187. package/expertise/architecture/mobile-architecture/mobile-app-architecture.md +780 -0
  188. package/expertise/architecture/mobile-architecture/mobile-backend-for-frontend.md +670 -0
  189. package/expertise/architecture/mobile-architecture/offline-first.md +719 -0
  190. package/expertise/architecture/mobile-architecture/push-and-sync.md +782 -0
  191. package/expertise/architecture/patterns/cqrs-event-sourcing.md +717 -0
  192. package/expertise/architecture/patterns/event-driven.md +797 -0
  193. package/expertise/architecture/patterns/hexagonal-clean-architecture.md +870 -0
  194. package/expertise/architecture/patterns/index.md +27 -0
  195. package/expertise/architecture/patterns/layered-architecture.md +736 -0
  196. package/expertise/architecture/patterns/microservices.md +753 -0
  197. package/expertise/architecture/patterns/modular-monolith.md +692 -0
  198. package/expertise/architecture/patterns/monolith.md +626 -0
  199. package/expertise/architecture/patterns/plugin-architecture.md +735 -0
  200. package/expertise/architecture/patterns/serverless.md +780 -0
  201. package/expertise/architecture/scaling/database-scaling.md +615 -0
  202. package/expertise/architecture/scaling/feature-flags-and-rollouts.md +757 -0
  203. package/expertise/architecture/scaling/horizontal-vs-vertical.md +606 -0
  204. package/expertise/architecture/scaling/index.md +24 -0
  205. package/expertise/architecture/scaling/multi-tenancy.md +800 -0
  206. package/expertise/architecture/scaling/stateless-design.md +787 -0
  207. package/expertise/backend/embedded-firmware.md +625 -0
  208. package/expertise/backend/go.md +853 -0
  209. package/expertise/backend/index.md +24 -0
  210. package/expertise/backend/java-spring.md +448 -0
  211. package/expertise/backend/node-typescript.md +625 -0
  212. package/expertise/backend/python-fastapi.md +724 -0
  213. package/expertise/backend/rust.md +458 -0
  214. package/expertise/backend/solidity.md +711 -0
  215. package/expertise/composition-map.yaml +443 -0
  216. package/expertise/content/foundations/content-modeling.md +395 -0
  217. package/expertise/content/foundations/editorial-standards.md +449 -0
  218. package/expertise/content/foundations/index.md +24 -0
  219. package/expertise/content/foundations/microcopy.md +455 -0
  220. package/expertise/content/foundations/terminology-governance.md +509 -0
  221. package/expertise/content/index.md +34 -0
  222. package/expertise/content/patterns/accessibility-copy.md +518 -0
  223. package/expertise/content/patterns/index.md +24 -0
  224. package/expertise/content/patterns/notification-content.md +433 -0
  225. package/expertise/content/patterns/sample-content.md +486 -0
  226. package/expertise/content/patterns/state-copy.md +439 -0
  227. package/expertise/design/PROGRESS.md +58 -0
  228. package/expertise/design/disciplines/dark-mode-theming.md +577 -0
  229. package/expertise/design/disciplines/design-systems.md +595 -0
  230. package/expertise/design/disciplines/index.md +25 -0
  231. package/expertise/design/disciplines/information-architecture.md +800 -0
  232. package/expertise/design/disciplines/interaction-design.md +788 -0
  233. package/expertise/design/disciplines/responsive-design.md +552 -0
  234. package/expertise/design/disciplines/usability-testing.md +516 -0
  235. package/expertise/design/disciplines/user-research.md +792 -0
  236. package/expertise/design/foundations/accessibility-design.md +796 -0
  237. package/expertise/design/foundations/color-theory.md +797 -0
  238. package/expertise/design/foundations/iconography.md +795 -0
  239. package/expertise/design/foundations/index.md +26 -0
  240. package/expertise/design/foundations/motion-and-animation.md +653 -0
  241. package/expertise/design/foundations/rtl-design.md +585 -0
  242. package/expertise/design/foundations/spacing-and-layout.md +607 -0
  243. package/expertise/design/foundations/typography.md +800 -0
  244. package/expertise/design/foundations/visual-hierarchy.md +761 -0
  245. package/expertise/design/index.md +32 -0
  246. package/expertise/design/patterns/authentication-flows.md +474 -0
  247. package/expertise/design/patterns/content-consumption.md +789 -0
  248. package/expertise/design/patterns/data-display.md +618 -0
  249. package/expertise/design/patterns/e-commerce.md +1494 -0
  250. package/expertise/design/patterns/feedback-and-states.md +642 -0
  251. package/expertise/design/patterns/forms-and-input.md +819 -0
  252. package/expertise/design/patterns/gamification.md +801 -0
  253. package/expertise/design/patterns/index.md +31 -0
  254. package/expertise/design/patterns/microinteractions.md +449 -0
  255. package/expertise/design/patterns/navigation.md +800 -0
  256. package/expertise/design/patterns/notifications.md +705 -0
  257. package/expertise/design/patterns/onboarding.md +700 -0
  258. package/expertise/design/patterns/search-and-filter.md +601 -0
  259. package/expertise/design/patterns/settings-and-preferences.md +768 -0
  260. package/expertise/design/patterns/social-and-community.md +748 -0
  261. package/expertise/design/platforms/desktop-native.md +612 -0
  262. package/expertise/design/platforms/index.md +25 -0
  263. package/expertise/design/platforms/mobile-android.md +825 -0
  264. package/expertise/design/platforms/mobile-cross-platform.md +983 -0
  265. package/expertise/design/platforms/mobile-ios.md +699 -0
  266. package/expertise/design/platforms/tablet.md +794 -0
  267. package/expertise/design/platforms/web-dashboard.md +790 -0
  268. package/expertise/design/platforms/web-responsive.md +550 -0
  269. package/expertise/design/psychology/behavioral-nudges.md +449 -0
  270. package/expertise/design/psychology/cognitive-load.md +1191 -0
  271. package/expertise/design/psychology/error-psychology.md +778 -0
  272. package/expertise/design/psychology/index.md +22 -0
  273. package/expertise/design/psychology/persuasive-design.md +736 -0
  274. package/expertise/design/psychology/user-mental-models.md +623 -0
  275. package/expertise/design/tooling/open-pencil.md +266 -0
  276. package/expertise/frontend/angular.md +1073 -0
  277. package/expertise/frontend/desktop-electron.md +546 -0
  278. package/expertise/frontend/flutter.md +782 -0
  279. package/expertise/frontend/index.md +27 -0
  280. package/expertise/frontend/native-android.md +409 -0
  281. package/expertise/frontend/native-ios.md +490 -0
  282. package/expertise/frontend/react-native.md +1160 -0
  283. package/expertise/frontend/react.md +808 -0
  284. package/expertise/frontend/vue.md +1089 -0
  285. package/expertise/humanize/domain-rules-code.md +79 -0
  286. package/expertise/humanize/domain-rules-content.md +67 -0
  287. package/expertise/humanize/domain-rules-technical-docs.md +56 -0
  288. package/expertise/humanize/index.md +35 -0
  289. package/expertise/humanize/self-audit-checklist.md +87 -0
  290. package/expertise/humanize/sentence-patterns.md +218 -0
  291. package/expertise/humanize/vocabulary-blacklist.md +105 -0
  292. package/expertise/i18n/PROGRESS.md +65 -0
  293. package/expertise/i18n/advanced/accessibility-and-i18n.md +28 -0
  294. package/expertise/i18n/advanced/bidirectional-text-algorithm.md +38 -0
  295. package/expertise/i18n/advanced/complex-scripts.md +30 -0
  296. package/expertise/i18n/advanced/performance-and-i18n.md +27 -0
  297. package/expertise/i18n/advanced/testing-i18n.md +28 -0
  298. package/expertise/i18n/content/content-adaptation.md +23 -0
  299. package/expertise/i18n/content/locale-specific-formatting.md +23 -0
  300. package/expertise/i18n/content/machine-translation-integration.md +28 -0
  301. package/expertise/i18n/content/translation-management.md +29 -0
  302. package/expertise/i18n/foundations/date-time-calendars.md +67 -0
  303. package/expertise/i18n/foundations/i18n-architecture.md +272 -0
  304. package/expertise/i18n/foundations/locale-and-language-tags.md +79 -0
  305. package/expertise/i18n/foundations/numbers-currency-units.md +61 -0
  306. package/expertise/i18n/foundations/pluralization-and-gender.md +109 -0
  307. package/expertise/i18n/foundations/string-externalization.md +236 -0
  308. package/expertise/i18n/foundations/text-direction-bidi.md +241 -0
  309. package/expertise/i18n/foundations/unicode-and-encoding.md +86 -0
  310. package/expertise/i18n/index.md +38 -0
  311. package/expertise/i18n/platform/backend-i18n.md +31 -0
  312. package/expertise/i18n/platform/flutter-i18n.md +148 -0
  313. package/expertise/i18n/platform/native-android-i18n.md +36 -0
  314. package/expertise/i18n/platform/native-ios-i18n.md +36 -0
  315. package/expertise/i18n/platform/react-i18n.md +103 -0
  316. package/expertise/i18n/platform/web-css-i18n.md +81 -0
  317. package/expertise/i18n/rtl/arabic-specific.md +175 -0
  318. package/expertise/i18n/rtl/hebrew-specific.md +149 -0
  319. package/expertise/i18n/rtl/rtl-animations-and-transitions.md +111 -0
  320. package/expertise/i18n/rtl/rtl-forms-and-input.md +161 -0
  321. package/expertise/i18n/rtl/rtl-fundamentals.md +211 -0
  322. package/expertise/i18n/rtl/rtl-icons-and-images.md +181 -0
  323. package/expertise/i18n/rtl/rtl-layout-mirroring.md +252 -0
  324. package/expertise/i18n/rtl/rtl-navigation-and-gestures.md +107 -0
  325. package/expertise/i18n/rtl/rtl-testing-and-qa.md +147 -0
  326. package/expertise/i18n/rtl/rtl-typography.md +160 -0
  327. package/expertise/index.md +113 -0
  328. package/expertise/index.yaml +216 -0
  329. package/expertise/infrastructure/cloud-aws.md +597 -0
  330. package/expertise/infrastructure/cloud-gcp.md +599 -0
  331. package/expertise/infrastructure/cybersecurity.md +816 -0
  332. package/expertise/infrastructure/database-mongodb.md +447 -0
  333. package/expertise/infrastructure/database-postgres.md +400 -0
  334. package/expertise/infrastructure/devops-cicd.md +787 -0
  335. package/expertise/infrastructure/index.md +27 -0
  336. package/expertise/performance/PROGRESS.md +50 -0
  337. package/expertise/performance/backend/api-latency.md +1204 -0
  338. package/expertise/performance/backend/background-jobs.md +506 -0
  339. package/expertise/performance/backend/connection-pooling.md +1209 -0
  340. package/expertise/performance/backend/database-query-optimization.md +515 -0
  341. package/expertise/performance/backend/index.md +23 -0
  342. package/expertise/performance/backend/rate-limiting-and-throttling.md +971 -0
  343. package/expertise/performance/foundations/algorithmic-complexity.md +954 -0
  344. package/expertise/performance/foundations/caching-strategies.md +489 -0
  345. package/expertise/performance/foundations/concurrency-and-parallelism.md +847 -0
  346. package/expertise/performance/foundations/index.md +24 -0
  347. package/expertise/performance/foundations/measuring-and-profiling.md +440 -0
  348. package/expertise/performance/foundations/memory-management.md +964 -0
  349. package/expertise/performance/foundations/performance-budgets.md +1314 -0
  350. package/expertise/performance/index.md +31 -0
  351. package/expertise/performance/infrastructure/auto-scaling.md +1059 -0
  352. package/expertise/performance/infrastructure/cdn-and-edge.md +1081 -0
  353. package/expertise/performance/infrastructure/index.md +22 -0
  354. package/expertise/performance/infrastructure/load-balancing.md +1081 -0
  355. package/expertise/performance/infrastructure/observability.md +1079 -0
  356. package/expertise/performance/mobile/index.md +23 -0
  357. package/expertise/performance/mobile/mobile-animations.md +544 -0
  358. package/expertise/performance/mobile/mobile-memory-battery.md +416 -0
  359. package/expertise/performance/mobile/mobile-network.md +452 -0
  360. package/expertise/performance/mobile/mobile-rendering.md +599 -0
  361. package/expertise/performance/mobile/mobile-startup-time.md +505 -0
  362. package/expertise/performance/platform-specific/flutter-performance.md +647 -0
  363. package/expertise/performance/platform-specific/index.md +22 -0
  364. package/expertise/performance/platform-specific/node-performance.md +1307 -0
  365. package/expertise/performance/platform-specific/postgres-performance.md +1366 -0
  366. package/expertise/performance/platform-specific/react-performance.md +1403 -0
  367. package/expertise/performance/web/bundle-optimization.md +1239 -0
  368. package/expertise/performance/web/image-and-media.md +636 -0
  369. package/expertise/performance/web/index.md +24 -0
  370. package/expertise/performance/web/network-optimization.md +1133 -0
  371. package/expertise/performance/web/rendering-performance.md +1098 -0
  372. package/expertise/performance/web/ssr-and-hydration.md +918 -0
  373. package/expertise/performance/web/web-vitals.md +1374 -0
  374. package/expertise/quality/accessibility.md +985 -0
  375. package/expertise/quality/evidence-based-verification.md +499 -0
  376. package/expertise/quality/index.md +24 -0
  377. package/expertise/quality/ml-model-audit.md +614 -0
  378. package/expertise/quality/performance.md +600 -0
  379. package/expertise/quality/testing-api.md +891 -0
  380. package/expertise/quality/testing-mobile.md +496 -0
  381. package/expertise/quality/testing-web.md +849 -0
  382. package/expertise/security/PROGRESS.md +54 -0
  383. package/expertise/security/agentic-identity.md +540 -0
  384. package/expertise/security/compliance-frameworks.md +601 -0
  385. package/expertise/security/data/data-encryption.md +364 -0
  386. package/expertise/security/data/data-privacy-gdpr.md +692 -0
  387. package/expertise/security/data/database-security.md +1171 -0
  388. package/expertise/security/data/index.md +22 -0
  389. package/expertise/security/data/pii-handling.md +531 -0
  390. package/expertise/security/foundations/authentication.md +1041 -0
  391. package/expertise/security/foundations/authorization.md +603 -0
  392. package/expertise/security/foundations/cryptography.md +1001 -0
  393. package/expertise/security/foundations/index.md +25 -0
  394. package/expertise/security/foundations/owasp-top-10.md +1354 -0
  395. package/expertise/security/foundations/secrets-management.md +1217 -0
  396. package/expertise/security/foundations/secure-sdlc.md +700 -0
  397. package/expertise/security/foundations/supply-chain-security.md +698 -0
  398. package/expertise/security/index.md +31 -0
  399. package/expertise/security/infrastructure/cloud-security-aws.md +1296 -0
  400. package/expertise/security/infrastructure/cloud-security-gcp.md +1376 -0
  401. package/expertise/security/infrastructure/container-security.md +721 -0
  402. package/expertise/security/infrastructure/incident-response.md +1295 -0
  403. package/expertise/security/infrastructure/index.md +24 -0
  404. package/expertise/security/infrastructure/logging-and-monitoring.md +1618 -0
  405. package/expertise/security/infrastructure/network-security.md +1337 -0
  406. package/expertise/security/mobile/index.md +23 -0
  407. package/expertise/security/mobile/mobile-android-security.md +1218 -0
  408. package/expertise/security/mobile/mobile-binary-protection.md +1229 -0
  409. package/expertise/security/mobile/mobile-data-storage.md +1265 -0
  410. package/expertise/security/mobile/mobile-ios-security.md +1401 -0
  411. package/expertise/security/mobile/mobile-network-security.md +1520 -0
  412. package/expertise/security/smart-contract-security.md +594 -0
  413. package/expertise/security/testing/index.md +22 -0
  414. package/expertise/security/testing/penetration-testing.md +1258 -0
  415. package/expertise/security/testing/security-code-review.md +1765 -0
  416. package/expertise/security/testing/threat-modeling.md +1074 -0
  417. package/expertise/security/testing/vulnerability-scanning.md +1062 -0
  418. package/expertise/security/web/api-security.md +586 -0
  419. package/expertise/security/web/cors-and-headers.md +433 -0
  420. package/expertise/security/web/csrf.md +562 -0
  421. package/expertise/security/web/file-upload.md +1477 -0
  422. package/expertise/security/web/index.md +25 -0
  423. package/expertise/security/web/injection.md +1375 -0
  424. package/expertise/security/web/session-management.md +1101 -0
  425. package/expertise/security/web/xss.md +1158 -0
  426. package/exports/README.md +17 -0
  427. package/exports/hosts/claude/.claude/agents/clarifier.md +42 -0
  428. package/exports/hosts/claude/.claude/agents/content-author.md +63 -0
  429. package/exports/hosts/claude/.claude/agents/designer.md +55 -0
  430. package/exports/hosts/claude/.claude/agents/executor.md +55 -0
  431. package/exports/hosts/claude/.claude/agents/learner.md +51 -0
  432. package/exports/hosts/claude/.claude/agents/planner.md +53 -0
  433. package/exports/hosts/claude/.claude/agents/researcher.md +43 -0
  434. package/exports/hosts/claude/.claude/agents/reviewer.md +54 -0
  435. package/exports/hosts/claude/.claude/agents/specifier.md +47 -0
  436. package/exports/hosts/claude/.claude/agents/verifier.md +71 -0
  437. package/exports/hosts/claude/.claude/commands/author.md +42 -0
  438. package/exports/hosts/claude/.claude/commands/clarify.md +38 -0
  439. package/exports/hosts/claude/.claude/commands/design-review.md +46 -0
  440. package/exports/hosts/claude/.claude/commands/design.md +44 -0
  441. package/exports/hosts/claude/.claude/commands/discover.md +37 -0
  442. package/exports/hosts/claude/.claude/commands/execute.md +48 -0
  443. package/exports/hosts/claude/.claude/commands/learn.md +38 -0
  444. package/exports/hosts/claude/.claude/commands/plan-review.md +42 -0
  445. package/exports/hosts/claude/.claude/commands/plan.md +39 -0
  446. package/exports/hosts/claude/.claude/commands/prepare-next.md +37 -0
  447. package/exports/hosts/claude/.claude/commands/review.md +40 -0
  448. package/exports/hosts/claude/.claude/commands/run-audit.md +41 -0
  449. package/exports/hosts/claude/.claude/commands/spec-challenge.md +41 -0
  450. package/exports/hosts/claude/.claude/commands/specify.md +38 -0
  451. package/exports/hosts/claude/.claude/commands/verify.md +37 -0
  452. package/exports/hosts/claude/.claude/settings.json +34 -0
  453. package/exports/hosts/claude/CLAUDE.md +19 -0
  454. package/exports/hosts/claude/export.manifest.json +38 -0
  455. package/exports/hosts/claude/host-package.json +67 -0
  456. package/exports/hosts/codex/AGENTS.md +19 -0
  457. package/exports/hosts/codex/export.manifest.json +38 -0
  458. package/exports/hosts/codex/host-package.json +41 -0
  459. package/exports/hosts/cursor/.cursor/hooks.json +16 -0
  460. package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +19 -0
  461. package/exports/hosts/cursor/export.manifest.json +38 -0
  462. package/exports/hosts/cursor/host-package.json +42 -0
  463. package/exports/hosts/gemini/GEMINI.md +19 -0
  464. package/exports/hosts/gemini/export.manifest.json +38 -0
  465. package/exports/hosts/gemini/host-package.json +41 -0
  466. package/hooks/README.md +18 -0
  467. package/hooks/definitions/loop_cap_guard.yaml +21 -0
  468. package/hooks/definitions/post_tool_capture.yaml +24 -0
  469. package/hooks/definitions/pre_compact_summary.yaml +19 -0
  470. package/hooks/definitions/pre_tool_capture_route.yaml +19 -0
  471. package/hooks/definitions/protected_path_write_guard.yaml +19 -0
  472. package/hooks/definitions/session_start.yaml +19 -0
  473. package/hooks/definitions/stop_handoff_harvest.yaml +20 -0
  474. package/hooks/loop-cap-guard +17 -0
  475. package/hooks/post-tool-lint +36 -0
  476. package/hooks/protected-path-write-guard +17 -0
  477. package/hooks/session-start +41 -0
  478. package/llms-full.txt +2355 -0
  479. package/llms.txt +43 -0
  480. package/package.json +79 -0
  481. package/roles/README.md +20 -0
  482. package/roles/clarifier.md +42 -0
  483. package/roles/content-author.md +63 -0
  484. package/roles/designer.md +55 -0
  485. package/roles/executor.md +55 -0
  486. package/roles/learner.md +51 -0
  487. package/roles/planner.md +53 -0
  488. package/roles/researcher.md +43 -0
  489. package/roles/reviewer.md +54 -0
  490. package/roles/specifier.md +47 -0
  491. package/roles/verifier.md +71 -0
  492. package/schemas/README.md +24 -0
  493. package/schemas/accepted-learning.schema.json +20 -0
  494. package/schemas/author-artifact.schema.json +156 -0
  495. package/schemas/clarification.schema.json +19 -0
  496. package/schemas/design-artifact.schema.json +80 -0
  497. package/schemas/docs-claim.schema.json +18 -0
  498. package/schemas/export-manifest.schema.json +20 -0
  499. package/schemas/hook.schema.json +67 -0
  500. package/schemas/host-export-package.schema.json +18 -0
  501. package/schemas/implementation-plan.schema.json +19 -0
  502. package/schemas/proposed-learning.schema.json +19 -0
  503. package/schemas/research.schema.json +18 -0
  504. package/schemas/review.schema.json +29 -0
  505. package/schemas/run-manifest.schema.json +18 -0
  506. package/schemas/spec-challenge.schema.json +18 -0
  507. package/schemas/spec.schema.json +20 -0
  508. package/schemas/usage.schema.json +102 -0
  509. package/schemas/verification-proof.schema.json +29 -0
  510. package/schemas/wazir-manifest.schema.json +173 -0
  511. package/skills/README.md +40 -0
  512. package/skills/brainstorming/SKILL.md +77 -0
  513. package/skills/debugging/SKILL.md +50 -0
  514. package/skills/design/SKILL.md +61 -0
  515. package/skills/dispatching-parallel-agents/SKILL.md +128 -0
  516. package/skills/executing-plans/SKILL.md +70 -0
  517. package/skills/finishing-a-development-branch/SKILL.md +169 -0
  518. package/skills/humanize/SKILL.md +123 -0
  519. package/skills/init-pipeline/SKILL.md +124 -0
  520. package/skills/prepare-next/SKILL.md +20 -0
  521. package/skills/receiving-code-review/SKILL.md +123 -0
  522. package/skills/requesting-code-review/SKILL.md +105 -0
  523. package/skills/requesting-code-review/code-reviewer.md +108 -0
  524. package/skills/run-audit/SKILL.md +197 -0
  525. package/skills/scan-project/SKILL.md +41 -0
  526. package/skills/self-audit/SKILL.md +153 -0
  527. package/skills/subagent-driven-development/SKILL.md +154 -0
  528. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
  529. package/skills/subagent-driven-development/implementer-prompt.md +102 -0
  530. package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  531. package/skills/tdd/SKILL.md +23 -0
  532. package/skills/using-git-worktrees/SKILL.md +163 -0
  533. package/skills/using-skills/SKILL.md +95 -0
  534. package/skills/verification/SKILL.md +22 -0
  535. package/skills/wazir/SKILL.md +463 -0
  536. package/skills/writing-plans/SKILL.md +30 -0
  537. package/skills/writing-skills/SKILL.md +157 -0
  538. package/skills/writing-skills/anthropic-best-practices.md +122 -0
  539. package/skills/writing-skills/persuasion-principles.md +50 -0
  540. package/templates/README.md +20 -0
  541. package/templates/artifacts/README.md +10 -0
  542. package/templates/artifacts/accepted-learning.md +19 -0
  543. package/templates/artifacts/accepted-learning.template.json +12 -0
  544. package/templates/artifacts/author.md +74 -0
  545. package/templates/artifacts/author.template.json +19 -0
  546. package/templates/artifacts/clarification.md +21 -0
  547. package/templates/artifacts/clarification.template.json +12 -0
  548. package/templates/artifacts/execute-notes.md +19 -0
  549. package/templates/artifacts/implementation-plan.md +21 -0
  550. package/templates/artifacts/implementation-plan.template.json +11 -0
  551. package/templates/artifacts/learning-proposal.md +19 -0
  552. package/templates/artifacts/next-run-handoff.md +21 -0
  553. package/templates/artifacts/plan-review.md +19 -0
  554. package/templates/artifacts/proposed-learning.template.json +12 -0
  555. package/templates/artifacts/research.md +21 -0
  556. package/templates/artifacts/research.template.json +12 -0
  557. package/templates/artifacts/review-findings.md +19 -0
  558. package/templates/artifacts/review.template.json +11 -0
  559. package/templates/artifacts/run-manifest.template.json +8 -0
  560. package/templates/artifacts/spec-challenge.md +19 -0
  561. package/templates/artifacts/spec-challenge.template.json +11 -0
  562. package/templates/artifacts/spec.md +21 -0
  563. package/templates/artifacts/spec.template.json +12 -0
  564. package/templates/artifacts/verification-proof.md +19 -0
  565. package/templates/artifacts/verification-proof.template.json +11 -0
  566. package/templates/examples/accepted-learning.example.json +14 -0
  567. package/templates/examples/author.example.json +152 -0
  568. package/templates/examples/clarification.example.json +15 -0
  569. package/templates/examples/docs-claim.example.json +8 -0
  570. package/templates/examples/export-manifest.example.json +7 -0
  571. package/templates/examples/host-export-package.example.json +11 -0
  572. package/templates/examples/implementation-plan.example.json +17 -0
  573. package/templates/examples/proposed-learning.example.json +13 -0
  574. package/templates/examples/research.example.json +15 -0
  575. package/templates/examples/research.example.md +6 -0
  576. package/templates/examples/review.example.json +17 -0
  577. package/templates/examples/run-manifest.example.json +9 -0
  578. package/templates/examples/spec-challenge.example.json +14 -0
  579. package/templates/examples/spec.example.json +21 -0
  580. package/templates/examples/verification-proof.example.json +21 -0
  581. package/templates/examples/wazir-manifest.example.yaml +65 -0
  582. package/templates/task-definition-schema.md +99 -0
  583. package/tooling/README.md +20 -0
  584. package/tooling/src/adapters/context-mode.js +50 -0
  585. package/tooling/src/capture/command.js +376 -0
  586. package/tooling/src/capture/store.js +99 -0
  587. package/tooling/src/capture/usage.js +270 -0
  588. package/tooling/src/checks/branches.js +50 -0
  589. package/tooling/src/checks/brand-truth.js +110 -0
  590. package/tooling/src/checks/changelog.js +231 -0
  591. package/tooling/src/checks/command-registry.js +36 -0
  592. package/tooling/src/checks/commits.js +102 -0
  593. package/tooling/src/checks/docs-drift.js +103 -0
  594. package/tooling/src/checks/docs-truth.js +201 -0
  595. package/tooling/src/checks/runtime-surface.js +156 -0
  596. package/tooling/src/cli.js +116 -0
  597. package/tooling/src/command-options.js +56 -0
  598. package/tooling/src/commands/validate.js +320 -0
  599. package/tooling/src/doctor/command.js +91 -0
  600. package/tooling/src/export/command.js +77 -0
  601. package/tooling/src/export/compiler.js +498 -0
  602. package/tooling/src/guards/loop-cap-guard.js +52 -0
  603. package/tooling/src/guards/protected-path-write-guard.js +67 -0
  604. package/tooling/src/index/command.js +152 -0
  605. package/tooling/src/index/storage.js +1061 -0
  606. package/tooling/src/index/summarizers.js +261 -0
  607. package/tooling/src/loaders.js +18 -0
  608. package/tooling/src/project-root.js +22 -0
  609. package/tooling/src/recall/command.js +225 -0
  610. package/tooling/src/schema-validator.js +30 -0
  611. package/tooling/src/state-root.js +40 -0
  612. package/tooling/src/status/command.js +71 -0
  613. package/wazir.manifest.yaml +135 -0
  614. package/workflows/README.md +19 -0
  615. package/workflows/author.md +42 -0
  616. package/workflows/clarify.md +38 -0
  617. package/workflows/design-review.md +46 -0
  618. package/workflows/design.md +44 -0
  619. package/workflows/discover.md +37 -0
  620. package/workflows/execute.md +48 -0
  621. package/workflows/learn.md +38 -0
  622. package/workflows/plan-review.md +42 -0
  623. package/workflows/plan.md +39 -0
  624. package/workflows/prepare-next.md +37 -0
  625. package/workflows/review.md +40 -0
  626. package/workflows/run-audit.md +41 -0
  627. package/workflows/spec-challenge.md +41 -0
  628. package/workflows/specify.md +38 -0
  629. package/workflows/verify.md +37 -0
@@ -0,0 +1,1074 @@
1
+ # Threat Modeling — Security Expertise Module
2
+
3
+ > Audience: AI agents performing threat modeling during planning and design phases.
4
+ > Scope: Methodologies, tools, vulnerability catalogs, compliance mapping, and code examples.
5
+ > Sources: OWASP, NIST SP 800-154, Microsoft SDL, Shostack Four-Question Framework,
6
+ > MITRE ATT&CK, IBM Cost of a Data Breach 2025, Security Compass, Threagile, pytm.
7
+
8
+ ---
9
+
10
+ ## 1. Threat Landscape
11
+
12
+ ### 1.1 Why Threat Modeling Matters
13
+
14
+ Threat modeling is the structured process of identifying, quantifying, and addressing
15
+ security threats to a system. It belongs in the earliest design phases — before code is
16
+ written — because architectural flaws are orders of magnitude more expensive to fix
17
+ after deployment than during design.
18
+
19
+ **Key statistics (IBM Cost of a Data Breach Report 2025):**
20
+
21
+ - Average cost of a data breach: **$4.88 million** globally.
22
+ - Organizations with high DevSecOps adoption saved **$1.13 million** per breach.
23
+ - AI and automation in prevention workflows yield **$2.2 million** in savings.
24
+ - Incident response planning saves **$1.23 million** on average.
25
+ - Encryption lowers breach costs by approximately **$360,000**.
26
+ - Organizations using threat intelligence saved **$211,906** per breach.
27
+
28
+ **ROI of threat modeling (Security Compass):**
29
+
30
+ A 2-hour threat modeling session that prevents a design flaw requiring 100 hours of
31
+ refactoring results in $10,000 saved for a $200 investment — an ROI of 4,900%.
32
+ A system without threat modeling faces roughly a 20% annual probability of a $500K breach.
33
+
34
+ ### 1.2 Breaches That Threat Modeling Would Have Prevented
35
+
36
+ | Breach | Year | Root Cause | Threat Model Gap |
37
+ |---|---|---|---|
38
+ | Equifax | 2017 | Unpatched Apache Struts, flat network | No network segmentation model; no patch-management threat identified |
39
+ | Capital One | 2019 | Misconfigured WAF/firewall in AWS | No cloud trust-boundary analysis; SSRF not modeled |
40
+ | SolarWinds | 2020 | Compromised build pipeline | No supply-chain threat model; build integrity not in scope |
41
+ | Target | 2013 | HVAC vendor credential compromise | Third-party trust boundary missing; lateral movement unmodeled |
42
+ | Uber | 2016 | Hardcoded AWS keys in GitHub repo | No secrets-in-code threat; no data flow for CI/CD assets |
43
+ | Log4Shell | 2021 | JNDI injection in Log4j | Deserialization/injection threat absent from library DFD |
44
+
45
+ Each of these incidents involved architectural or design-level weaknesses that a
46
+ structured threat model — applied during the design phase — would have surfaced.
47
+
48
+ ---
49
+
50
+ ## 2. Core Security Principles
51
+
52
+ ### 2.1 Think Like an Attacker
53
+
54
+ Adopt an adversarial mindset. For every component, ask: "How would I abuse this?"
55
+ Consider both external attackers and malicious insiders.
56
+
57
+ ### 2.2 Identify Trust Boundaries
58
+
59
+ A trust boundary exists wherever the level of trust changes — between a public network
60
+ and a private subnet, between a user's browser and the API gateway, between
61
+ microservices in different security domains. Every trust boundary crossing is a
62
+ potential attack surface.
63
+
64
+ ### 2.3 Map Data Flows
65
+
66
+ Document how data moves through the system: ingress points, processing stages,
67
+ storage locations, and egress points. Use Data Flow Diagrams (DFDs) at minimum.
68
+ Classify data by sensitivity (public, internal, confidential, restricted).
69
+
70
+ ### 2.4 Enumerate Threats Systematically
71
+
72
+ Use a structured methodology (STRIDE, PASTA, LINDDUN) rather than ad-hoc
73
+ brainstorming. Structured approaches ensure coverage and repeatability.
74
+
75
+ ### 2.5 Prioritize by Risk
76
+
77
+ Risk = Likelihood x Impact. Use a consistent scoring model:
78
+
79
+ | Likelihood | Description |
80
+ |---|---|
81
+ | 5 — Almost Certain | Exploit is publicly available, no auth required |
82
+ | 4 — Likely | Known vulnerability, moderate skill needed |
83
+ | 3 — Possible | Requires insider knowledge or chained exploits |
84
+ | 2 — Unlikely | Requires significant resources or zero-day |
85
+ | 1 — Rare | Theoretical, no known exploit path |
86
+
87
+ | Impact | Description |
88
+ |---|---|
89
+ | 5 — Critical | Full system compromise, mass data exfiltration |
90
+ | 4 — High | Significant data loss, major service disruption |
91
+ | 3 — Moderate | Limited data exposure, partial service impact |
92
+ | 2 — Low | Minor information leak, degraded performance |
93
+ | 1 — Negligible | No data loss, cosmetic impact only |
94
+
95
+ Risk Score = Likelihood x Impact. Scores 15-25: immediate mitigation required.
96
+ Scores 8-14: planned mitigation. Scores 1-7: accept with documentation.
97
+
98
+ ### 2.6 Mitigate or Accept with Documentation
99
+
100
+ Every identified threat must have a disposition: mitigate (implement control),
101
+ transfer (insurance, SLA), accept (documented risk acceptance with sign-off),
102
+ or avoid (remove the feature/component).
103
+
104
+ ---
105
+
106
+ ## 3. Implementation Patterns
107
+
108
+ ### 3.1 STRIDE Methodology
109
+
110
+ Developed by Microsoft. Maps six threat categories to system components.
111
+
112
+ | Category | Threat | Property Violated | Example |
113
+ |---|---|---|---|
114
+ | **S**poofing | Impersonating a user or system | Authentication | Attacker uses stolen JWT to call API as admin |
115
+ | **T**ampering | Modifying data in transit or at rest | Integrity | Man-in-the-middle alters API response payloads |
116
+ | **R**epudiation | Denying an action occurred | Non-repudiation | User disputes a financial transaction; no audit log exists |
117
+ | **I**nformation Disclosure | Exposing data to unauthorized parties | Confidentiality | Database backup stored in public S3 bucket |
118
+ | **D**enial of Service | Making system unavailable | Availability | Amplification attack floods API gateway |
119
+ | **E**levation of Privilege | Gaining unauthorized access level | Authorization | IDOR allows regular user to access admin endpoints |
120
+
121
+ **How to apply STRIDE:**
122
+
123
+ 1. Draw a DFD of the system (processes, data stores, data flows, external entities).
124
+ 2. For each element in the DFD, walk through all six STRIDE categories.
125
+ 3. For each applicable threat, document: threat description, attack vector,
126
+ affected component, risk score, and proposed mitigation.
127
+ 4. Review with development and security teams.
128
+
129
+ ### 3.2 PASTA — Process for Attack Simulation and Threat Analysis
130
+
131
+ PASTA is a seven-stage risk-centric methodology that connects technical threats
132
+ to business impact. Developed by VerSprite.
133
+
134
+ **Stage 1 — Define Objectives:**
135
+ Identify business objectives, security requirements, compliance mandates
136
+ (HIPAA, GDPR, PCI-DSS), and data classification of assets in scope.
137
+
138
+ **Stage 2 — Define Technical Scope:**
139
+ Inventory all components: servers, databases, APIs, third-party services,
140
+ network segments, cloud resources. Map the full technology stack.
141
+
142
+ **Stage 3 — Application Decomposition / Data Flow Analysis:**
143
+ Create DFDs, identify trust boundaries, enumerate entry points,
144
+ map data flows across components.
145
+
146
+ **Stage 4 — Threat Analysis:**
147
+ Identify threats using threat intelligence feeds, MITRE ATT&CK,
148
+ CAPEC attack patterns, and analyst expertise. Correlate threats
149
+ with the attack surface identified in stages 2-3.
150
+
151
+ **Stage 5 — Vulnerability Analysis:**
152
+ Map known vulnerabilities (CVEs) to system components. Perform
153
+ vulnerability scanning. Correlate vulnerabilities with threats from stage 4.
154
+
155
+ **Stage 6 — Attack Modeling and Simulation:**
156
+ Build attack trees. Identify viable attack paths by mapping vulnerabilities
157
+ to threat scenarios. Simulate attacks to validate exploitability.
158
+
159
+ **Stage 7 — Risk and Impact Analysis:**
160
+ Quantify business impact of each viable attack path. Calculate residual risk.
161
+ Prioritize countermeasures by risk-adjusted ROI. Produce actionable
162
+ remediation plan with owners and deadlines.
163
+
164
+ ### 3.3 LINDDUN — Privacy Threat Modeling
165
+
166
+ LINDDUN focuses specifically on privacy threats. Essential for GDPR, HIPAA,
167
+ and CCPA compliance.
168
+
169
+ | Category | Privacy Threat |
170
+ |---|---|
171
+ | **L**inkability | Ability to link two or more items of interest related to a data subject |
172
+ | **I**dentifiability | Ability to identify a data subject from a data set |
173
+ | **N**on-repudiation | Inability to deny having performed an action (privacy concern) |
174
+ | **D**etectability | Ability to detect whether an item of interest exists |
175
+ | **D**isclosure of information | Exposure of personal data to unauthorized parties |
176
+ | **U**nawareness | Data subject is unaware of data collection and processing |
177
+ | **N**on-compliance | Failure to comply with legislation, regulations, or policy |
178
+
179
+ **When to use LINDDUN:** Any system that processes personal data, health records,
180
+ financial information, or operates under privacy regulations.
181
+
182
+ ### 3.4 Data Flow Diagrams (DFDs)
183
+
184
+ DFDs are the foundational artifact of threat modeling. Use standard notation:
185
+
186
+ ```
187
+ Element Symbols:
188
+ [External Entity] = Rectangle (users, third-party systems)
189
+ (Process) = Circle (application logic, services)
190
+ [=Data Store=] = Parallel lines (databases, file systems, caches)
191
+ --> Data Flow --> = Arrow (HTTP request, DB query, message)
192
+ --- Trust Boundary -- = Dashed line (network perimeter, auth boundary)
193
+ ```
194
+
195
+ **Levels of DFD detail:**
196
+
197
+ - **Level 0 (Context):** Single process, all external entities, major data flows.
198
+ - **Level 1 (System):** Major subsystems decomposed, trust boundaries shown.
199
+ - **Level 2 (Component):** Individual services, databases, queues, caches.
200
+
201
+ ### 3.5 Attack Trees
202
+
203
+ Formalized by Bruce Schneier (1999). Attack trees model the goal of an attacker
204
+ as the root node and decompose it into sub-goals using AND/OR logic.
205
+
206
+ ```
207
+ Root: Steal User Credentials
208
+ ├── OR: Phishing Attack
209
+ │ ├── AND: Craft convincing email
210
+ │ └── AND: Host fake login page
211
+ ├── OR: Credential Stuffing
212
+ │ ├── AND: Obtain breached credential list
213
+ │ └── AND: Automate login attempts
214
+ ├── OR: SQL Injection on Login Form
215
+ │ └── AND: Find unparameterized query
216
+ └── OR: Intercept Network Traffic
217
+ ├── AND: Perform ARP spoofing
218
+ └── AND: Capture TLS-downgraded session
219
+ ```
220
+
221
+ Assign attributes to leaf nodes: cost, time, skill level, detectability.
222
+ Propagate values up: OR nodes take the minimum (easiest path);
223
+ AND nodes take the sum (all steps required).
224
+
225
+ ### 3.6 Threat Modeling for APIs
226
+
227
+ APIs are the primary attack surface in modern architectures. Key threats:
228
+
229
+ 1. **Broken Object Level Authorization (BOLA):** Accessing other users' resources
230
+ by manipulating object IDs in API calls.
231
+ 2. **Broken Authentication:** Weak token validation, missing rate limiting on auth
232
+ endpoints, token leakage in URLs or logs.
233
+ 3. **Excessive Data Exposure:** API returns full object when client only needs
234
+ subset of fields. Sensitive fields leak to unauthorized consumers.
235
+ 4. **Lack of Rate Limiting:** No throttling enables brute-force, credential
236
+ stuffing, and denial-of-service attacks.
237
+ 5. **Mass Assignment:** API accepts and binds parameters the client should not
238
+ control (e.g., `role`, `isAdmin`).
239
+ 6. **SSRF via API:** API fetches user-supplied URLs without validation, enabling
240
+ access to internal services and metadata endpoints.
241
+
242
+ ### 3.7 Threat Modeling for Microservices
243
+
244
+ Microservices amplify the attack surface through inter-service communication,
245
+ distributed data stores, and dynamic service discovery.
246
+
247
+ **Unique microservices threats:**
248
+
249
+ - **Service-to-service impersonation:** Without mTLS, any pod can call any service.
250
+ - **Lateral movement:** Compromising one service grants network access to others.
251
+ - **Data inconsistency attacks:** Exploiting eventual consistency windows.
252
+ - **Sidecar proxy bypass:** Direct container-to-container calls skip Envoy/Istio policies.
253
+ - **Container escape:** Breaking out of container isolation to host OS.
254
+ - **Supply chain (base image) compromise:** Malicious layers in container images.
255
+ - **Secrets sprawl:** Each microservice needs credentials; more services = more secrets.
256
+
257
+ **Mitigations:** Zero-trust networking (mTLS everywhere), network policies
258
+ (Kubernetes NetworkPolicy or Calico), service mesh authorization policies,
259
+ runtime security (Falco), image scanning (Trivy, Grype), secrets management
260
+ (Vault, AWS Secrets Manager).
261
+
262
+ ### 3.8 Lightweight Threat Modeling — The Four-Question Framework
263
+
264
+ Developed by Adam Shostack, endorsed by the Threat Modeling Manifesto.
265
+ Suitable for agile teams and rapid iteration.
266
+
267
+ **The Four Questions:**
268
+
269
+ 1. **What are we working on?**
270
+ Draw a diagram. Identify components, data flows, trust boundaries.
271
+
272
+ 2. **What can go wrong?**
273
+ Use STRIDE, kill chains, or brainstorming. Focus on realistic threats.
274
+
275
+ 3. **What are we going to do about it?**
276
+ For each threat: mitigate, accept, transfer, or avoid. Assign owners.
277
+
278
+ 4. **Did we do a good enough job?**
279
+ Review completeness. Test assumptions. Update after changes.
280
+
281
+ This framework can be completed in a 60-90 minute session and produces
282
+ actionable results for a single feature or service.
283
+
284
+ ### 3.9 Threat Modeling as Code
285
+
286
+ Treat threat models as version-controlled artifacts alongside source code.
287
+ Benefits: diffable, reviewable in PRs, CI/CD integration, automated updates.
288
+
289
+ Tools: Threagile (YAML), pytm (Python), HCL-TM (Terraform-native).
290
+
291
+ ---
292
+
293
+ ## 4. Vulnerability Catalog
294
+
295
+ ### 4.1 Common Threats by Component
296
+
297
+ #### Web Server / Reverse Proxy
298
+
299
+ | # | Threat | STRIDE | Risk | Mitigation |
300
+ |---|---|---|---|---|
301
+ | 1 | TLS downgrade attack | Information Disclosure | High | Enforce TLS 1.2+, HSTS with preload, disable weak ciphers |
302
+ | 2 | HTTP request smuggling | Tampering | Critical | Normalize parsing between proxy and backend, reject ambiguous requests |
303
+ | 3 | Directory traversal via path manipulation | Information Disclosure | High | Chroot web root, canonicalize paths, deny `..` sequences |
304
+
305
+ #### Database
306
+
307
+ | # | Threat | STRIDE | Risk | Mitigation |
308
+ |---|---|---|---|---|
309
+ | 4 | SQL injection | Tampering, Info Disclosure | Critical | Parameterized queries exclusively, WAF rules, least-privilege DB accounts |
310
+ | 5 | Unencrypted data at rest | Information Disclosure | High | TDE or application-level encryption, KMS-managed keys |
311
+ | 6 | Excessive privileges on service account | Elevation of Privilege | High | Principle of least privilege, separate read/write accounts |
312
+
313
+ #### API Gateway
314
+
315
+ | # | Threat | STRIDE | Risk | Mitigation |
316
+ |---|---|---|---|---|
317
+ | 7 | Missing rate limiting enables DDoS | Denial of Service | High | Token bucket rate limiter, per-client quotas, WAF integration |
318
+ | 8 | JWT algorithm confusion (none/HS256 vs RS256) | Spoofing | Critical | Enforce algorithm in server config, reject `alg: none` |
319
+ | 9 | API key leaked in client-side code | Spoofing | High | Use OAuth2 flows, rotate keys, monitor for leaked credentials |
320
+
321
+ #### Authentication Service
322
+
323
+ | # | Threat | STRIDE | Risk | Mitigation |
324
+ |---|---|---|---|---|
325
+ | 10 | Credential stuffing | Spoofing | High | Rate limiting, CAPTCHA, breached-password checking (HaveIBeenPwned API) |
326
+ | 11 | Session fixation | Spoofing | Medium | Regenerate session ID after authentication, bind to client fingerprint |
327
+ | 12 | Missing MFA | Spoofing | High | Enforce TOTP/WebAuthn for sensitive operations |
328
+
329
+ #### File Storage (S3, GCS, Azure Blob)
330
+
331
+ | # | Threat | STRIDE | Risk | Mitigation |
332
+ |---|---|---|---|---|
333
+ | 13 | Public bucket misconfiguration | Information Disclosure | Critical | Block public access by default, SCPs/org policies, continuous scanning |
334
+ | 14 | Unrestricted file upload (web shell) | Elevation of Privilege | Critical | Validate MIME type + magic bytes, store outside web root, virus scan |
335
+
336
+ #### Message Queue (Kafka, RabbitMQ, SQS)
337
+
338
+ | # | Threat | STRIDE | Risk | Mitigation |
339
+ |---|---|---|---|---|
340
+ | 15 | Message injection / poisoning | Tampering | High | Schema validation, message signing (HMAC), consumer input validation |
341
+
342
+ ---
343
+
344
+ ## 5. Security Checklist
345
+
346
+ Use this checklist when conducting a threat modeling session.
347
+
348
+ ### Preparation
349
+ - [ ] Identify the system or feature in scope
350
+ - [ ] Gather architectural documentation, deployment diagrams, API specs
351
+ - [ ] Identify stakeholders: architect, developer, security engineer, product owner
352
+ - [ ] Choose methodology (STRIDE for security, LINDDUN for privacy, PASTA for risk)
353
+ - [ ] Schedule 60-90 minute session
354
+
355
+ ### During the Session
356
+ - [ ] Draw or validate the Data Flow Diagram (DFD)
357
+ - [ ] Mark all trust boundaries on the DFD
358
+ - [ ] Classify data flows by sensitivity (public, internal, confidential, restricted)
359
+ - [ ] Walk through each DFD element against chosen threat categories
360
+ - [ ] For each identified threat, document: description, attack vector, affected component
361
+ - [ ] Score each threat: Likelihood (1-5) x Impact (1-5) = Risk Score
362
+ - [ ] Identify existing controls that already mitigate each threat
363
+ - [ ] Determine residual risk after existing controls
364
+ - [ ] Assign disposition: mitigate, accept, transfer, or avoid
365
+ - [ ] For mitigations: define specific countermeasures with owners and deadlines
366
+
367
+ ### Post-Session
368
+ - [ ] Document the threat model in version control
369
+ - [ ] Create tickets/issues for all mitigations with risk-based priority
370
+ - [ ] Review threat model with stakeholders who could not attend
371
+ - [ ] Validate that mitigations are implemented before release
372
+ - [ ] Schedule periodic review (quarterly or on major architecture changes)
373
+ - [ ] Update threat model after any security incident
374
+ - [ ] Cross-reference with compliance requirements (PCI-DSS, HIPAA, SOC 2)
375
+ - [ ] Verify DFD accuracy matches deployed architecture
376
+ - [ ] Check for new threats from updated threat intelligence feeds
377
+ - [ ] Archive threat model artifacts with version and date
378
+
379
+ ---
380
+
381
+ ## 6. Tools and Automation
382
+
383
+ ### 6.1 Microsoft Threat Modeling Tool
384
+
385
+ - **Platform:** Windows desktop application (free).
386
+ - **Methodology:** STRIDE-based.
387
+ - **Features:** DFD drawing canvas, auto-generated threat list based on element types,
388
+ customizable threat templates, HTML/CSV report generation.
389
+ - **Best for:** Teams in Microsoft ecosystem, Azure-hosted applications.
390
+ - **Limitations:** Windows-only, limited CI/CD integration, manual process.
391
+
392
+ ### 6.2 OWASP Threat Dragon
393
+
394
+ - **Platform:** Cross-platform desktop app and web application (free, open source).
395
+ - **Features:** DFD and STRIDE-per-element analysis, threat rule engine, JSON model
396
+ storage (Git-friendly), integration with GitHub/GitLab for model storage.
397
+ - **Best for:** Teams wanting an open-source, cross-platform visual tool.
398
+ - **Repository:** https://github.com/OWASP/threat-dragon
399
+
400
+ ### 6.3 IriusRisk
401
+
402
+ - **Platform:** SaaS and on-premises (commercial).
403
+ - **Features:** Questionnaire-driven threat identification, rules engine, integration
404
+ with Jira/Azure DevOps/Jenkins, import from Microsoft TMT, library of threat
405
+ patterns, compliance mapping (PCI-DSS, HIPAA, GDPR).
406
+ - **Best for:** Enterprise teams needing compliance automation and workflow integration.
407
+
408
+ ### 6.4 Threagile — Threat Modeling as Code
409
+
410
+ - **Platform:** Cross-platform CLI, Docker image (free, open source).
411
+ - **Input:** YAML model file checked into version control.
412
+ - **Features:** 40+ built-in risk rules, custom rule support, generates PDF/Excel
413
+ risk reports, risk tracking, data flow diagrams, CI/CD pipeline integration.
414
+ - **Best for:** DevSecOps teams wanting threat models in the same repo as code.
415
+ - **Repository:** https://github.com/Threagile/threagile
416
+
417
+ ### 6.5 pytm — Pythonic Threat Modeling
418
+
419
+ - **Platform:** Python 3, cross-platform (free, open source, OWASP project).
420
+ - **Input:** Python source file defining the architecture model.
421
+ - **Features:** Auto-generates DFDs (via Graphviz), sequence diagrams, and threat
422
+ reports. Extensible threat library. Elements: TM, Server, ExternalEntity,
423
+ Datastore, Actor, Process, Dataflow, Boundary, Lambda.
424
+ - **Best for:** Developer-centric teams comfortable with Python.
425
+ - **Repository:** https://github.com/OWASP/pytm
426
+
427
+ ### 6.6 draw.io Templates
428
+
429
+ - **Platform:** Browser-based, desktop app, VS Code extension (free).
430
+ - **Usage:** Use the built-in "Threat Modeling" shape library or import
431
+ custom stencils for DFD notation. Export as XML (diffable in Git).
432
+ - **Best for:** Quick visual threat models without dedicated tooling.
433
+
434
+ ---
435
+
436
+ ## 7. Platform-Specific Guidance
437
+
438
+ ### 7.1 Web Application Threat Model Template
439
+
440
+ ```
441
+ SYSTEM: E-commerce Web Application
442
+ TRUST BOUNDARIES:
443
+ TB1: Internet <-> WAF/CDN
444
+ TB2: WAF <-> Application Load Balancer
445
+ TB3: ALB <-> Application Servers (private subnet)
446
+ TB4: Application Servers <-> Database (isolated subnet)
447
+ TB5: Application Servers <-> Payment Gateway (external API)
448
+
449
+ KEY THREATS:
450
+ 1. XSS via user-generated content -> CSP, output encoding, DOMPurify
451
+ 2. CSRF on state-changing actions -> SameSite cookies, CSRF tokens
452
+ 3. SQL injection on search/filter -> Parameterized queries, ORM
453
+ 4. Session hijacking -> Secure/HttpOnly cookies, short TTL
454
+ 5. Payment data interception -> TLS 1.3, PCI-DSS tokenization
455
+ 6. Account takeover via cred stuffing -> Rate limiting, MFA, breached-pw check
456
+ 7. Admin panel exposure -> IP allowlist, separate auth, MFA
457
+ ```
458
+
459
+ ### 7.2 Mobile Application Threat Model
460
+
461
+ ```
462
+ SYSTEM: Mobile Banking App (iOS + Android)
463
+ TRUST BOUNDARIES:
464
+ TB1: Device <-> Cellular/WiFi network
465
+ TB2: Network <-> API Gateway
466
+ TB3: API Gateway <-> Backend Services
467
+ TB4: Backend <-> Core Banking System
468
+
469
+ KEY THREATS:
470
+ 1. Reverse engineering of app binary -> Code obfuscation, root/jailbreak detection
471
+ 2. Insecure local data storage -> iOS Keychain / Android Keystore, no plaintext
472
+ 3. Man-in-the-middle on public WiFi -> Certificate pinning, TLS 1.2+
473
+ 4. Screenshot/screen recording leak -> Redact sensitive views in app switcher
474
+ 5. Biometric bypass -> Server-side validation, fallback to PIN
475
+ 6. Deep link hijacking -> Validate deep link schemes, use App Links
476
+ 7. Push notification data leakage -> No sensitive data in notification payload
477
+ ```
478
+
479
+ ### 7.3 API Threat Model
480
+
481
+ ```
482
+ SYSTEM: RESTful API with OAuth2
483
+ TRUST BOUNDARIES:
484
+ TB1: Public Internet <-> API Gateway
485
+ TB2: API Gateway <-> Microservices
486
+ TB3: Microservices <-> Databases
487
+ TB4: Microservices <-> Third-party APIs
488
+
489
+ KEY THREATS:
490
+ 1. BOLA (IDOR) -> Object-level authorization checks
491
+ 2. Broken function-level auth -> Role-based endpoint access control
492
+ 3. Mass assignment -> Explicit allowlists for bindable fields
493
+ 4. Excessive data exposure -> Response filtering, field-level permissions
494
+ 5. SSRF via URL parameters -> URL validation, deny internal ranges
495
+ 6. GraphQL query depth attack -> Query depth/complexity limits
496
+ 7. API versioning exposure -> Deprecate and remove old versions
497
+ 8. Rate limiting bypass -> Distributed rate limiting (Redis-backed)
498
+ ```
499
+
500
+ ### 7.4 Microservices Threat Model
501
+
502
+ ```
503
+ SYSTEM: Kubernetes-based Microservices Platform
504
+ TRUST BOUNDARIES:
505
+ TB1: Internet <-> Ingress Controller
506
+ TB2: Ingress <-> Service Mesh (Istio/Envoy)
507
+ TB3: Service Mesh <-> Individual Pods
508
+ TB4: Pods <-> Managed Databases (VPC peering)
509
+ TB5: Pods <-> External SaaS APIs
510
+
511
+ KEY THREATS:
512
+ 1. Service impersonation -> mTLS via service mesh, SPIFFE identities
513
+ 2. Lateral movement post-compromise -> Network policies, microsegmentation
514
+ 3. Container escape -> Seccomp profiles, no privileged containers
515
+ 4. Image supply chain attack -> Signed images (cosign), admission controllers
516
+ 5. Secrets in environment variables -> External secrets operator, Vault integration
517
+ 6. Sidecar proxy bypass -> Strict mTLS mode, deny direct pod access
518
+ 7. Resource exhaustion (noisy neighbor)-> Resource quotas, pod disruption budgets
519
+ 8. etcd data exposure -> Encrypt etcd at rest, restrict API server access
520
+ ```
521
+
522
+ ### 7.5 Cloud Infrastructure Threat Model
523
+
524
+ ```
525
+ SYSTEM: AWS Multi-Account Landing Zone
526
+ TRUST BOUNDARIES:
527
+ TB1: Internet <-> Public subnets (ALB, CloudFront)
528
+ TB2: Public subnets <-> Private subnets (app tier)
529
+ TB3: Private subnets <-> Isolated subnets (data tier)
530
+ TB4: AWS Account A <-> AWS Account B (cross-account)
531
+ TB5: AWS <-> On-premises (VPN/Direct Connect)
532
+
533
+ KEY THREATS:
534
+ 1. IAM privilege escalation -> SCPs, permission boundaries, least privilege
535
+ 2. S3 bucket misconfiguration -> S3 Block Public Access, bucket policies
536
+ 3. Metadata service (IMDS) abuse -> IMDSv2 required, hop limit = 1
537
+ 4. Cross-account role assumption -> External ID requirement, condition keys
538
+ 5. CloudTrail tampering -> Org trail, log file validation, S3 MFA delete
539
+ 6. VPC flow log gaps -> Enable all subnets, central logging account
540
+ 7. KMS key policy misconfiguration -> Key policies + IAM, no wildcard principals
541
+ ```
542
+
543
+ ---
544
+
545
+ ## 8. Incident Patterns
546
+
547
+ ### 8.1 Using Threat Models for Incident Response
548
+
549
+ When an incident occurs, the threat model is a critical response accelerant:
550
+
551
+ 1. **Rapid scoping:** The DFD immediately shows which components, data flows,
552
+ and trust boundaries are affected by the compromised component.
553
+ 2. **Impact assessment:** Data classification in the threat model tells responders
554
+ what data may have been exposed and its sensitivity level.
555
+ 3. **Lateral movement prediction:** Trust boundary analysis reveals which
556
+ adjacent systems the attacker could pivot to.
557
+ 4. **Control validation:** The threat model documents expected controls;
558
+ responders can quickly check which controls failed.
559
+ 5. **Communication template:** The threat model's asset inventory feeds
560
+ regulatory notification (which data, which users, which jurisdictions).
561
+
562
+ ### 8.2 Post-Incident Threat Model Updates
563
+
564
+ After every security incident, update the threat model:
565
+
566
+ 1. **Add the realized threat** to the catalog if it was not previously modeled.
567
+ 2. **Recalibrate risk scores** — the threat is now "proven," so likelihood increases.
568
+ 3. **Document the actual attack path** and compare it to modeled attack trees.
569
+ 4. **Identify blind spots** — which DFD elements, trust boundaries, or data flows
570
+ were missing from the model?
571
+ 5. **Update mitigations** — document the controls that were added post-incident.
572
+ 6. **Share lessons learned** — feed findings into the organization's threat library
573
+ so other teams benefit.
574
+ 7. **Re-run automated rules** (Threagile/pytm) against the updated model to
575
+ check for newly introduced risks from incident response changes.
576
+
577
+ ---
578
+
579
+ ## 9. Compliance and Standards
580
+
581
+ ### 9.1 NIST SP 800-154 — Guide to Data-Centric System Threat Modeling
582
+
583
+ NIST 800-154 provides a four-step data-centric threat modeling approach:
584
+
585
+ 1. **Identify and characterize** the system and data of interest.
586
+ 2. **Identify and select** the attack vectors to be included in the model.
587
+ 3. **Characterize the security controls** for mitigating the attack vectors.
588
+ 4. **Analyze the threat model** — determine likelihood and impact, calculate risk.
589
+
590
+ Key principle: Focus on protecting specific data types rather than only system
591
+ components. This complements component-centric methods like STRIDE.
592
+
593
+ ### 9.2 OWASP Threat Modeling
594
+
595
+ OWASP provides multiple resources:
596
+
597
+ - **Threat Modeling Cheat Sheet** — concise guidance for developers.
598
+ - **Threat Modeling Manifesto** — values and principles for the discipline.
599
+ - **OWASP Threat Dragon** — open-source modeling tool.
600
+ - **pytm** — programmatic threat modeling framework.
601
+ - **OWASP Top 10** — threat catalog for web applications.
602
+ - **OWASP API Security Top 10** — threat catalog for APIs.
603
+
604
+ ### 9.3 PCI-DSS Threat Assessment
605
+
606
+ PCI-DSS v4.0 requires threat-informed risk assessment:
607
+
608
+ - **Requirement 6.3:** Identify and manage security vulnerabilities through
609
+ a vulnerability management program informed by threat intelligence.
610
+ - **Requirement 6.5:** Address common coding vulnerabilities (informed by
611
+ threat modeling of payment flows).
612
+ - **Requirement 11.3:** Penetration testing scope informed by threat model.
613
+ - **Requirement 12.2:** Risk assessment at least annually and upon significant
614
+ changes; threat modeling feeds directly into this requirement.
615
+
616
+ Threat models for PCI-DSS must cover: cardholder data flows, segmentation
617
+ boundaries, payment channel trust boundaries, and third-party processor
618
+ connections.
619
+
620
+ ### 9.4 ISO 27001 Risk Assessment
621
+
622
+ ISO 27001:2022 Clause 6.1.2 requires organizations to:
623
+
624
+ - Define a risk assessment process that identifies risks to confidentiality,
625
+ integrity, and availability.
626
+ - Identify risk owners.
627
+ - Assess the likelihood and consequences of identified risks.
628
+ - Determine risk treatment options.
629
+
630
+ Threat modeling satisfies these requirements when:
631
+ - The DFD maps to the ISO 27001 asset inventory.
632
+ - STRIDE categories align with CIA triad properties.
633
+ - Risk scores map to the organization's risk criteria.
634
+ - Threat dispositions map to ISO 27001 Annex A controls.
635
+
636
+ ### 9.5 SOC 2 and Threat Modeling
637
+
638
+ SOC 2 Trust Services Criteria (CC3.2) requires risk assessment that includes
639
+ identification of threats. A documented threat model demonstrates:
640
+ - Systematic threat identification methodology.
641
+ - Risk scoring and prioritization.
642
+ - Mitigation tracking.
643
+ - Periodic review and update cadence.
644
+
645
+ ---
646
+
647
+ ## 10. Code Examples
648
+
649
+ ### 10.1 Threagile YAML Model
650
+
651
+ ```yaml
652
+ # threagile.yaml — Threat Model for Web Application
653
+ threagile_version: 1.0.0
654
+
655
+ title: E-Commerce Platform Threat Model
656
+ date: 2026-03-08
657
+ author:
658
+ name: Security Team
659
+ homepage: https://internal.example.com/security
660
+
661
+ business_criticality: critical
662
+
663
+ management_summary_comment: >
664
+ This threat model covers the e-commerce platform including
665
+ the web frontend, API gateway, order service, payment service,
666
+ and PostgreSQL database.
667
+
668
+ business_overview:
669
+ description: Online retail platform processing customer orders and payments.
670
+ images: []
671
+
672
+ technical_overview:
673
+ description: >
674
+ React SPA served via CDN, API Gateway (Kong), microservices on
675
+ Kubernetes, PostgreSQL on RDS, Redis cache, Stripe payment integration.
676
+ images: []
677
+
678
+ questions:
679
+ How are secrets managed?: >
680
+ AWS Secrets Manager with automatic rotation. No environment variables.
681
+ How is inter-service auth handled?: >
682
+ mTLS via Istio service mesh with SPIFFE identities.
683
+
684
+ abuse_cases:
685
+ Credential Stuffing: >
686
+ Attacker uses breached credential lists to attempt login
687
+ via the /api/auth/login endpoint at high volume.
688
+ Payment Fraud: >
689
+ Attacker manipulates order total by tampering with client-side
690
+ price data before checkout submission.
691
+
692
+ security_requirements:
693
+ Input Validation: All API inputs validated against OpenAPI schema.
694
+ Authentication: OAuth2 + PKCE for SPA, API keys for service-to-service.
695
+ Encryption: TLS 1.3 in transit, AES-256 at rest for PII.
696
+
697
+ # --- Data Assets ---
698
+ data_assets:
699
+ Customer PII:
700
+ id: customer-pii
701
+ usage: business
702
+ quantity: many
703
+ confidentiality: confidential
704
+ integrity: critical
705
+ availability: operational
706
+ justification_cia_rating: >
707
+ Names, emails, addresses used for order fulfillment.
708
+
709
+ Payment Tokens:
710
+ id: payment-tokens
711
+ usage: business
712
+ quantity: many
713
+ confidentiality: strictly-confidential
714
+ integrity: mission-critical
715
+ availability: important
716
+ justification_cia_rating: >
717
+ Stripe tokenized payment references. No raw card data stored.
718
+
719
+ Order Data:
720
+ id: order-data
721
+ usage: business
722
+ quantity: many
723
+ confidentiality: internal
724
+ integrity: critical
725
+ availability: operational
726
+
727
+ # --- Technical Assets ---
728
+ technical_assets:
729
+ API Gateway:
730
+ id: api-gateway
731
+ type: process
732
+ usage: business
733
+ used_as_client_by_human: false
734
+ out_of_scope: false
735
+ technology: api-gateway
736
+ internet: true
737
+ machine: container
738
+ encryption: none
739
+ multi_tenant: false
740
+ redundant: true
741
+ data_assets_processed:
742
+ - customer-pii
743
+ - order-data
744
+ data_assets_stored: []
745
+ data_formats_accepted:
746
+ - json
747
+
748
+ Order Service:
749
+ id: order-service
750
+ type: process
751
+ usage: business
752
+ technology: web-service-rest
753
+ internet: false
754
+ machine: container
755
+ encryption: none
756
+ multi_tenant: false
757
+ data_assets_processed:
758
+ - customer-pii
759
+ - order-data
760
+ data_assets_stored: []
761
+
762
+ PostgreSQL Database:
763
+ id: postgres-db
764
+ type: datastore
765
+ usage: business
766
+ technology: database
767
+ internet: false
768
+ machine: virtual
769
+ encryption: transparent
770
+ multi_tenant: false
771
+ data_assets_stored:
772
+ - customer-pii
773
+ - order-data
774
+ - payment-tokens
775
+
776
+ # --- Trust Boundaries ---
777
+ trust_boundaries:
778
+ Internet Boundary:
779
+ id: internet-boundary
780
+ type: network-cloud-provider
781
+ technical_assets_inside:
782
+ - api-gateway
783
+ trust_boundaries_nested: []
784
+
785
+ Internal Network:
786
+ id: internal-network
787
+ type: network-dedicated-hoster
788
+ technical_assets_inside:
789
+ - order-service
790
+ - postgres-db
791
+ trust_boundaries_nested: []
792
+ ```
793
+
794
+ Run with:
795
+ ```bash
796
+ docker run --rm -v "$(pwd)":/app/work threagile/threagile \
797
+ -verbose -model /app/work/threagile.yaml -output /app/work/output
798
+ ```
799
+
800
+ ### 10.2 pytm Python Threat Model
801
+
802
+ ```python
803
+ #!/usr/bin/env python3
804
+ """Threat model for a web application using OWASP pytm."""
805
+
806
+ from pytm import (
807
+ TM, Actor, Boundary, Dataflow, Datastore,
808
+ ExternalEntity, Lambda, Process, Server,
809
+ )
810
+
811
+ # --- Define the Threat Model ---
812
+ tm = TM("E-Commerce Platform")
813
+ tm.description = "Threat model for an online retail platform"
814
+ tm.isOrdered = True
815
+ tm.mergeResponses = True
816
+
817
+ # --- Trust Boundaries ---
818
+ internet = Boundary("Internet")
819
+ dmz = Boundary("DMZ")
820
+ internal = Boundary("Internal Network")
821
+ data_tier = Boundary("Data Tier")
822
+
823
+ # --- Actors and External Entities ---
824
+ customer = Actor("Customer")
825
+ customer.inBoundary = internet
826
+
827
+ payment_provider = ExternalEntity("Stripe API")
828
+ payment_provider.inBoundary = internet
829
+
830
+ # --- Servers and Processes ---
831
+ cdn = Server("CDN / WAF")
832
+ cdn.inBoundary = dmz
833
+ cdn.OS = "Linux"
834
+ cdn.isHardened = True
835
+
836
+ api_gw = Server("API Gateway")
837
+ api_gw.inBoundary = dmz
838
+ api_gw.OS = "Linux"
839
+ api_gw.isHardened = True
840
+ api_gw.sanitizesInput = True
841
+ api_gw.encodesOutput = True
842
+
843
+ order_svc = Process("Order Service")
844
+ order_svc.inBoundary = internal
845
+ order_svc.handlesResources = True
846
+ order_svc.sanitizesInput = True
847
+
848
+ auth_svc = Process("Auth Service")
849
+ auth_svc.inBoundary = internal
850
+ auth_svc.handlesResources = True
851
+ auth_svc.implementsAuthenticationScheme = True
852
+ auth_svc.authorizesSource = True
853
+
854
+ # --- Data Stores ---
855
+ user_db = Datastore("User Database")
856
+ user_db.inBoundary = data_tier
857
+ user_db.isEncrypted = True
858
+ user_db.isSQL = True
859
+ user_db.isSigned = False
860
+
861
+ order_db = Datastore("Order Database")
862
+ order_db.inBoundary = data_tier
863
+ order_db.isEncrypted = True
864
+ order_db.isSQL = True
865
+
866
+ cache = Datastore("Redis Cache")
867
+ cache.inBoundary = internal
868
+ cache.isEncrypted = False
869
+ cache.isSQL = False
870
+
871
+ # --- Data Flows ---
872
+ customer_to_cdn = Dataflow(customer, cdn, "HTTPS Request")
873
+ customer_to_cdn.protocol = "HTTPS"
874
+ customer_to_cdn.isEncrypted = True
875
+
876
+ cdn_to_gw = Dataflow(cdn, api_gw, "Filtered Request")
877
+ cdn_to_gw.protocol = "HTTPS"
878
+ cdn_to_gw.isEncrypted = True
879
+
880
+ gw_to_auth = Dataflow(api_gw, auth_svc, "Auth Check")
881
+ gw_to_auth.protocol = "gRPC"
882
+ gw_to_auth.isEncrypted = True
883
+
884
+ gw_to_orders = Dataflow(api_gw, order_svc, "Order Request")
885
+ gw_to_orders.protocol = "gRPC"
886
+ gw_to_orders.isEncrypted = True
887
+
888
+ auth_to_db = Dataflow(auth_svc, user_db, "User Lookup")
889
+ auth_to_db.protocol = "PostgreSQL"
890
+ auth_to_db.isEncrypted = True
891
+
892
+ orders_to_db = Dataflow(order_svc, order_db, "Order CRUD")
893
+ orders_to_db.protocol = "PostgreSQL"
894
+ orders_to_db.isEncrypted = True
895
+
896
+ orders_to_cache = Dataflow(order_svc, cache, "Cache Read/Write")
897
+ orders_to_cache.protocol = "Redis"
898
+ orders_to_cache.isEncrypted = False
899
+
900
+ orders_to_stripe = Dataflow(order_svc, payment_provider, "Payment Request")
901
+ orders_to_stripe.protocol = "HTTPS"
902
+ orders_to_stripe.isEncrypted = True
903
+
904
+ if __name__ == "__main__":
905
+ tm.process()
906
+ ```
907
+
908
+ Generate outputs:
909
+ ```bash
910
+ # Data Flow Diagram
911
+ python3 tm.py --dfd | dot -Tpng -o dfd.png
912
+
913
+ # Sequence Diagram
914
+ python3 tm.py --seq | dot -Tpng -o seq.png
915
+
916
+ # Threat Report
917
+ python3 tm.py --report threats.html
918
+ ```
919
+
920
+ ### 10.3 DFD Template (Text-Based)
921
+
922
+ ```
923
+ +------------------------------------------------------------------+
924
+ | INTERNET (Untrusted) |
925
+ | [User Browser] [Mobile App] [Third-Party Webhook] |
926
+ +--------|-----------------|--------------------|------------------+
927
+ | HTTPS | HTTPS | HTTPS
928
+ - - - - -|- - - - - - - - -|- - - - - - - - - - -|- - - - - - - - -
929
+ | TRUST BOUNDARY: DMZ |
930
+ v v v
931
+ (WAF / CDN) -------> (API Gateway) <----- (Webhook Receiver)
932
+ | | |
933
+ - - - - -|- - - - - - - - -|- - - - - - - - - - -|- - - - - - - - -
934
+ | TRUST BOUNDARY: Internal Network |
935
+ v v v
936
+ (Static Assets) (Auth Service) (Event Processor)
937
+ | |
938
+ v v
939
+ [=User DB=] [=Event Queue=]
940
+ |
941
+ - - - - - - - - - - - - - - - - - - - - - - - -|- - - - - - - - - -
942
+ TRUST BOUNDARY: Data Tier |
943
+ v
944
+ [=Analytics DB=]
945
+ ```
946
+
947
+ ### 10.4 Threat Model Report Template
948
+
949
+ ```markdown
950
+ # Threat Model Report
951
+
952
+ ## Metadata
953
+ - **System:** [Name]
954
+ - **Version:** [Architecture version]
955
+ - **Date:** [YYYY-MM-DD]
956
+ - **Author(s):** [Names]
957
+ - **Methodology:** [STRIDE / PASTA / LINDDUN]
958
+ - **Review Status:** [Draft / Reviewed / Approved]
959
+
960
+ ## System Description
961
+ [Brief description of the system, its purpose, and key users.]
962
+
963
+ ## Architecture Diagram
964
+ [Embed or link DFD — Level 0 and Level 1 minimum.]
965
+
966
+ ## Data Classification
967
+ | Data Asset | Classification | Regulations |
968
+ |---|---|---|
969
+ | [Asset name] | [Public/Internal/Confidential/Restricted] | [GDPR/PCI/HIPAA/None] |
970
+
971
+ ## Trust Boundaries
972
+ | ID | Boundary | Components Inside | Components Outside |
973
+ |---|---|---|---|
974
+ | TB1 | [Name] | [List] | [List] |
975
+
976
+ ## Threat Catalog
977
+ | ID | Threat | STRIDE Category | Component | Likelihood | Impact | Risk Score | Mitigation | Status | Owner |
978
+ |---|---|---|---|---|---|---|---|---|---|
979
+ | T001 | [Description] | [S/T/R/I/D/E] | [Component] | [1-5] | [1-5] | [1-25] | [Control] | [Open/Mitigated/Accepted] | [Name] |
980
+
981
+ ## Risk Summary
982
+ - **Critical (20-25):** [Count] threats
983
+ - **High (15-19):** [Count] threats
984
+ - **Medium (8-14):** [Count] threats
985
+ - **Low (1-7):** [Count] threats
986
+
987
+ ## Assumptions and Exclusions
988
+ - [List assumptions made during modeling]
989
+ - [List components or threats explicitly excluded and why]
990
+
991
+ ## Action Items
992
+ | Priority | Action | Owner | Deadline | Ticket |
993
+ |---|---|---|---|---|
994
+ | [Critical/High/Medium/Low] | [Description] | [Name] | [Date] | [JIRA-123] |
995
+
996
+ ## Revision History
997
+ | Version | Date | Author | Changes |
998
+ |---|---|---|---|
999
+ ```
1000
+
1001
+ ### 10.5 Example: Complete Threat Model for a Login Flow
1002
+
1003
+ ```
1004
+ SYSTEM: User Authentication Flow
1005
+ SCOPE: Login endpoint, session management, password reset
1006
+
1007
+ DATA FLOW:
1008
+ User -> [HTTPS] -> API Gateway -> [gRPC/mTLS] -> Auth Service -> [TLS] -> User DB
1009
+ Auth Service -> [TLS] -> Redis (session store)
1010
+ Auth Service -> [HTTPS] -> Email Service (password reset)
1011
+
1012
+ THREATS:
1013
+ T001: Credential stuffing on /api/auth/login
1014
+ Category: Spoofing
1015
+ Likelihood: 5 (public endpoint, automated tools readily available)
1016
+ Impact: 4 (account takeover, data access)
1017
+ Risk: 20 (Critical)
1018
+ Mitigation: Rate limiting (10 req/min per IP), CAPTCHA after 3 failures,
1019
+ breached-password check via k-anonymity API, account lockout
1020
+ after 10 failures with exponential backoff.
1021
+
1022
+ T002: Session token theft via XSS
1023
+ Category: Information Disclosure
1024
+ Likelihood: 3 (requires XSS vulnerability in application)
1025
+ Impact: 4 (session hijacking, account takeover)
1026
+ Risk: 12 (Medium)
1027
+ Mitigation: HttpOnly + Secure + SameSite=Strict cookies,
1028
+ Content-Security-Policy header, session binding to
1029
+ client fingerprint (IP + User-Agent hash).
1030
+
1031
+ T003: Password reset token brute-force
1032
+ Category: Spoofing
1033
+ Likelihood: 2 (tokens are 128-bit random)
1034
+ Impact: 4 (account takeover)
1035
+ Risk: 8 (Medium)
1036
+ Mitigation: Cryptographically random tokens (min 128 bits),
1037
+ 15-minute expiry, single-use, rate limit reset requests.
1038
+
1039
+ T004: Timing attack on login response
1040
+ Category: Information Disclosure
1041
+ Likelihood: 3 (measurable over network with statistical analysis)
1042
+ Impact: 2 (username enumeration)
1043
+ Risk: 6 (Low)
1044
+ Mitigation: Constant-time password comparison, identical response
1045
+ for valid/invalid usernames, same response time.
1046
+
1047
+ T005: Missing audit trail for login events
1048
+ Category: Repudiation
1049
+ Likelihood: 4 (if logging is not implemented)
1050
+ Impact: 3 (inability to investigate incidents)
1051
+ Risk: 12 (Medium)
1052
+ Mitigation: Log all auth events (success, failure, lockout, reset)
1053
+ with timestamp, IP, user-agent, user ID. Ship to SIEM.
1054
+ Retain for 90 days minimum.
1055
+ ```
1056
+
1057
+ ---
1058
+
1059
+ ## References
1060
+
1061
+ - OWASP Threat Modeling Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Threat_Modeling_Cheat_Sheet.html
1062
+ - OWASP Threat Modeling Project: https://owasp.org/www-project-threat-modeling/
1063
+ - NIST SP 800-154 (Draft): https://csrc.nist.gov/pubs/sp/800/154/ipd
1064
+ - Shostack, A. "Threat Modeling: Designing for Security" (Wiley, 2014)
1065
+ - Schneier, B. "Attack Trees" (Dr. Dobb's Journal, 1999): https://www.schneier.com/academic/archives/1999/12/attack_trees.html
1066
+ - PASTA Threat Modeling: https://versprite.com/blog/what-is-pasta-threat-modeling/
1067
+ - LINDDUN Privacy Threat Modeling: https://linddun.org/
1068
+ - Threagile: https://github.com/Threagile/threagile
1069
+ - OWASP pytm: https://github.com/OWASP/pytm
1070
+ - OWASP Threat Dragon: https://github.com/OWASP/threat-dragon
1071
+ - IBM Cost of a Data Breach 2025: https://www.ibm.com/reports/data-breach
1072
+ - Security Compass — Threat Modeling ROI: https://www.securitycompass.com/blog/measuring-threat-modeling-roi/
1073
+ - MITRE ATT&CK: https://attack.mitre.org/
1074
+ - Threat Modeling Manifesto: https://www.threatmodelingmanifesto.org/