@waratahlabs/canopy 0.5.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/LICENSE +21 -0
- package/README.md +323 -0
- package/SKILL.md +97 -0
- package/demo/data/openclaw-demo.tc.json +397 -0
- package/demo/data/openclaw-nemoclaw-demo.tc.json +475 -0
- package/demo/index.html +556 -0
- package/dist/adapters/a2a.d.ts +82 -0
- package/dist/adapters/a2a.d.ts.map +1 -0
- package/dist/adapters/a2a.js +215 -0
- package/dist/adapters/a2a.js.map +1 -0
- package/dist/adapters/a2a.test.d.ts +2 -0
- package/dist/adapters/a2a.test.d.ts.map +1 -0
- package/dist/adapters/a2a.test.js +196 -0
- package/dist/adapters/a2a.test.js.map +1 -0
- package/dist/adapters/langfuse.d.ts +28 -0
- package/dist/adapters/langfuse.d.ts.map +1 -0
- package/dist/adapters/langfuse.js +192 -0
- package/dist/adapters/langfuse.js.map +1 -0
- package/dist/adapters/n8n.d.ts +4 -0
- package/dist/adapters/n8n.d.ts.map +1 -0
- package/dist/adapters/n8n.js +89 -0
- package/dist/adapters/n8n.js.map +1 -0
- package/dist/adapters/openclaw.d.ts +58 -0
- package/dist/adapters/openclaw.d.ts.map +1 -0
- package/dist/adapters/openclaw.js +275 -0
- package/dist/adapters/openclaw.js.map +1 -0
- package/dist/adapters/types.d.ts +33 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/aivss/atlas/coverage-matrix.d.ts +12 -0
- package/dist/aivss/atlas/coverage-matrix.d.ts.map +1 -0
- package/dist/aivss/atlas/coverage-matrix.js +272 -0
- package/dist/aivss/atlas/coverage-matrix.js.map +1 -0
- package/dist/aivss/atlas/loader.d.ts +28 -0
- package/dist/aivss/atlas/loader.d.ts.map +1 -0
- package/dist/aivss/atlas/loader.js +126 -0
- package/dist/aivss/atlas/loader.js.map +1 -0
- package/dist/aivss/atlas/loader.test.d.ts +11 -0
- package/dist/aivss/atlas/loader.test.d.ts.map +1 -0
- package/dist/aivss/atlas/loader.test.js +111 -0
- package/dist/aivss/atlas/loader.test.js.map +1 -0
- package/dist/aivss/atlas/resolve-path.d.ts +34 -0
- package/dist/aivss/atlas/resolve-path.d.ts.map +1 -0
- package/dist/aivss/atlas/resolve-path.js +58 -0
- package/dist/aivss/atlas/resolve-path.js.map +1 -0
- package/dist/aivss/batch/batch-builder.d.ts +11 -0
- package/dist/aivss/batch/batch-builder.d.ts.map +1 -0
- package/dist/aivss/batch/batch-builder.js +75 -0
- package/dist/aivss/batch/batch-builder.js.map +1 -0
- package/dist/aivss/index.d.ts +21 -0
- package/dist/aivss/index.d.ts.map +1 -0
- package/dist/aivss/index.js +19 -0
- package/dist/aivss/index.js.map +1 -0
- package/dist/aivss/knowledge-base/kb-client.d.ts +9 -0
- package/dist/aivss/knowledge-base/kb-client.d.ts.map +1 -0
- package/dist/aivss/knowledge-base/kb-client.js +139 -0
- package/dist/aivss/knowledge-base/kb-client.js.map +1 -0
- package/dist/aivss/knowledge-base/kb-types.d.ts +21 -0
- package/dist/aivss/knowledge-base/kb-types.d.ts.map +1 -0
- package/dist/aivss/knowledge-base/kb-types.js +2 -0
- package/dist/aivss/knowledge-base/kb-types.js.map +1 -0
- package/dist/aivss/knowledge-base/search-builder.d.ts +7 -0
- package/dist/aivss/knowledge-base/search-builder.d.ts.map +1 -0
- package/dist/aivss/knowledge-base/search-builder.js +119 -0
- package/dist/aivss/knowledge-base/search-builder.js.map +1 -0
- package/dist/aivss/metrics/aa.d.ts +3 -0
- package/dist/aivss/metrics/aa.d.ts.map +1 -0
- package/dist/aivss/metrics/aa.js +26 -0
- package/dist/aivss/metrics/aa.js.map +1 -0
- package/dist/aivss/metrics/ad.d.ts +3 -0
- package/dist/aivss/metrics/ad.d.ts.map +1 -0
- package/dist/aivss/metrics/ad.js +30 -0
- package/dist/aivss/metrics/ad.js.map +1 -0
- package/dist/aivss/metrics/cs.d.ts +3 -0
- package/dist/aivss/metrics/cs.d.ts.map +1 -0
- package/dist/aivss/metrics/cs.js +50 -0
- package/dist/aivss/metrics/cs.js.map +1 -0
- package/dist/aivss/metrics/dc.d.ts +3 -0
- package/dist/aivss/metrics/dc.d.ts.map +1 -0
- package/dist/aivss/metrics/dc.js +30 -0
- package/dist/aivss/metrics/dc.js.map +1 -0
- package/dist/aivss/metrics/ds.d.ts +3 -0
- package/dist/aivss/metrics/ds.d.ts.map +1 -0
- package/dist/aivss/metrics/ds.js +26 -0
- package/dist/aivss/metrics/ds.js.map +1 -0
- package/dist/aivss/metrics/ei.d.ts +3 -0
- package/dist/aivss/metrics/ei.d.ts.map +1 -0
- package/dist/aivss/metrics/ei.js +30 -0
- package/dist/aivss/metrics/ei.js.map +1 -0
- package/dist/aivss/metrics/gv.d.ts +3 -0
- package/dist/aivss/metrics/gv.d.ts.map +1 -0
- package/dist/aivss/metrics/gv.js +34 -0
- package/dist/aivss/metrics/gv.js.map +1 -0
- package/dist/aivss/metrics/ll.d.ts +3 -0
- package/dist/aivss/metrics/ll.d.ts.map +1 -0
- package/dist/aivss/metrics/ll.js +30 -0
- package/dist/aivss/metrics/ll.js.map +1 -0
- package/dist/aivss/metrics/mr.d.ts +3 -0
- package/dist/aivss/metrics/mr.d.ts.map +1 -0
- package/dist/aivss/metrics/mr.js +26 -0
- package/dist/aivss/metrics/mr.js.map +1 -0
- package/dist/aivss/metrics/shared.d.ts +22 -0
- package/dist/aivss/metrics/shared.d.ts.map +1 -0
- package/dist/aivss/metrics/shared.js +70 -0
- package/dist/aivss/metrics/shared.js.map +1 -0
- package/dist/aivss/prompts/base-system-prompt.d.ts +2 -0
- package/dist/aivss/prompts/base-system-prompt.d.ts.map +1 -0
- package/dist/aivss/prompts/base-system-prompt.js +31 -0
- package/dist/aivss/prompts/base-system-prompt.js.map +1 -0
- package/dist/aivss/prompts/prompt-composer.d.ts +13 -0
- package/dist/aivss/prompts/prompt-composer.d.ts.map +1 -0
- package/dist/aivss/prompts/prompt-composer.js +21 -0
- package/dist/aivss/prompts/prompt-composer.js.map +1 -0
- package/dist/aivss/scoring/a2a-corpus.test.d.ts +28 -0
- package/dist/aivss/scoring/a2a-corpus.test.d.ts.map +1 -0
- package/dist/aivss/scoring/a2a-corpus.test.js +109 -0
- package/dist/aivss/scoring/a2a-corpus.test.js.map +1 -0
- package/dist/aivss/scoring/determinism.test.d.ts +16 -0
- package/dist/aivss/scoring/determinism.test.d.ts.map +1 -0
- package/dist/aivss/scoring/determinism.test.js +169 -0
- package/dist/aivss/scoring/determinism.test.js.map +1 -0
- package/dist/aivss/scoring/heuristic-scorer.d.ts +21 -0
- package/dist/aivss/scoring/heuristic-scorer.d.ts.map +1 -0
- package/dist/aivss/scoring/heuristic-scorer.js +299 -0
- package/dist/aivss/scoring/heuristic-scorer.js.map +1 -0
- package/dist/aivss/scoring/heuristic-scorer.test.d.ts +8 -0
- package/dist/aivss/scoring/heuristic-scorer.test.d.ts.map +1 -0
- package/dist/aivss/scoring/heuristic-scorer.test.js +150 -0
- package/dist/aivss/scoring/heuristic-scorer.test.js.map +1 -0
- package/dist/aivss/scoring/scoring-mode.d.ts +48 -0
- package/dist/aivss/scoring/scoring-mode.d.ts.map +1 -0
- package/dist/aivss/scoring/scoring-mode.js +64 -0
- package/dist/aivss/scoring/scoring-mode.js.map +1 -0
- package/dist/aivss/scoring/v4-engine.d.ts +15 -0
- package/dist/aivss/scoring/v4-engine.d.ts.map +1 -0
- package/dist/aivss/scoring/v4-engine.js +84 -0
- package/dist/aivss/scoring/v4-engine.js.map +1 -0
- package/dist/aivss/scoring/v4-engine.test.d.ts +16 -0
- package/dist/aivss/scoring/v4-engine.test.d.ts.map +1 -0
- package/dist/aivss/scoring/v4-engine.test.js +156 -0
- package/dist/aivss/scoring/v4-engine.test.js.map +1 -0
- package/dist/aivss/types.d.ts +92 -0
- package/dist/aivss/types.d.ts.map +1 -0
- package/dist/aivss/types.js +25 -0
- package/dist/aivss/types.js.map +1 -0
- package/dist/baseline/baseline.test.d.ts +2 -0
- package/dist/baseline/baseline.test.d.ts.map +1 -0
- package/dist/baseline/baseline.test.js +219 -0
- package/dist/baseline/baseline.test.js.map +1 -0
- package/dist/baseline/diff.d.ts +42 -0
- package/dist/baseline/diff.d.ts.map +1 -0
- package/dist/baseline/diff.js +124 -0
- package/dist/baseline/diff.js.map +1 -0
- package/dist/baseline/store.d.ts +51 -0
- package/dist/baseline/store.d.ts.map +1 -0
- package/dist/baseline/store.js +92 -0
- package/dist/baseline/store.js.map +1 -0
- package/dist/batch/anthropic-batch-runner.d.ts +50 -0
- package/dist/batch/anthropic-batch-runner.d.ts.map +1 -0
- package/dist/batch/anthropic-batch-runner.js +91 -0
- package/dist/batch/anthropic-batch-runner.js.map +1 -0
- package/dist/batch/bedrock-batch-runner.d.ts +90 -0
- package/dist/batch/bedrock-batch-runner.d.ts.map +1 -0
- package/dist/batch/bedrock-batch-runner.js +199 -0
- package/dist/batch/bedrock-batch-runner.js.map +1 -0
- package/dist/batch/providers/anthropic.d.ts +55 -0
- package/dist/batch/providers/anthropic.d.ts.map +1 -0
- package/dist/batch/providers/anthropic.js +103 -0
- package/dist/batch/providers/anthropic.js.map +1 -0
- package/dist/batch/providers/bedrock.d.ts +31 -0
- package/dist/batch/providers/bedrock.d.ts.map +1 -0
- package/dist/batch/providers/bedrock.js +42 -0
- package/dist/batch/providers/bedrock.js.map +1 -0
- package/dist/batch/providers/harness.d.ts +36 -0
- package/dist/batch/providers/harness.d.ts.map +1 -0
- package/dist/batch/providers/harness.js +65 -0
- package/dist/batch/providers/harness.js.map +1 -0
- package/dist/batch/providers/harness.test.d.ts +7 -0
- package/dist/batch/providers/harness.test.d.ts.map +1 -0
- package/dist/batch/providers/harness.test.js +84 -0
- package/dist/batch/providers/harness.test.js.map +1 -0
- package/dist/batch/providers/index.d.ts +82 -0
- package/dist/batch/providers/index.d.ts.map +1 -0
- package/dist/batch/providers/index.js +82 -0
- package/dist/batch/providers/index.js.map +1 -0
- package/dist/batch/providers/ollama.d.ts +68 -0
- package/dist/batch/providers/ollama.d.ts.map +1 -0
- package/dist/batch/providers/ollama.js +108 -0
- package/dist/batch/providers/ollama.js.map +1 -0
- package/dist/batch/response-parser.d.ts +45 -0
- package/dist/batch/response-parser.d.ts.map +1 -0
- package/dist/batch/response-parser.js +161 -0
- package/dist/batch/response-parser.js.map +1 -0
- package/dist/batch/types.d.ts +87 -0
- package/dist/batch/types.d.ts.map +1 -0
- package/dist/batch/types.js +8 -0
- package/dist/batch/types.js.map +1 -0
- package/dist/cli.d.ts +15 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1037 -0
- package/dist/cli.js.map +1 -0
- package/dist/examples/a2a-assessment.d.ts +20 -0
- package/dist/examples/a2a-assessment.d.ts.map +1 -0
- package/dist/examples/a2a-assessment.js +115 -0
- package/dist/examples/a2a-assessment.js.map +1 -0
- package/dist/examples/batch-assessment.d.ts +18 -0
- package/dist/examples/batch-assessment.d.ts.map +1 -0
- package/dist/examples/batch-assessment.js +112 -0
- package/dist/examples/batch-assessment.js.map +1 -0
- package/dist/examples/batch-submission-flow.d.ts +2 -0
- package/dist/examples/batch-submission-flow.d.ts.map +1 -0
- package/dist/examples/batch-submission-flow.js +279 -0
- package/dist/examples/batch-submission-flow.js.map +1 -0
- package/dist/examples/demo-agent-definition.json +58 -0
- package/dist/examples/langfuse-assessment.d.ts +2 -0
- package/dist/examples/langfuse-assessment.d.ts.map +1 -0
- package/dist/examples/langfuse-assessment.js +46 -0
- package/dist/examples/langfuse-assessment.js.map +1 -0
- package/dist/examples/model-eval.d.ts +25 -0
- package/dist/examples/model-eval.d.ts.map +1 -0
- package/dist/examples/model-eval.js +94 -0
- package/dist/examples/model-eval.js.map +1 -0
- package/dist/examples/openclaw-assessment.d.ts +17 -0
- package/dist/examples/openclaw-assessment.d.ts.map +1 -0
- package/dist/examples/openclaw-assessment.js +79 -0
- package/dist/examples/openclaw-assessment.js.map +1 -0
- package/dist/examples/simple-assessment.d.ts +2 -0
- package/dist/examples/simple-assessment.d.ts.map +1 -0
- package/dist/examples/simple-assessment.js +146 -0
- package/dist/examples/simple-assessment.js.map +1 -0
- package/dist/examples/threat-model-demo.d.ts +2 -0
- package/dist/examples/threat-model-demo.d.ts.map +1 -0
- package/dist/examples/threat-model-demo.js +103 -0
- package/dist/examples/threat-model-demo.js.map +1 -0
- package/dist/index.d.ts +60 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +155 -0
- package/dist/index.js.map +1 -0
- package/dist/output/likec4-generator.d.ts +43 -0
- package/dist/output/likec4-generator.d.ts.map +1 -0
- package/dist/output/likec4-generator.js +287 -0
- package/dist/output/likec4-generator.js.map +1 -0
- package/dist/output/slot-filler.d.ts +6 -0
- package/dist/output/slot-filler.d.ts.map +1 -0
- package/dist/output/slot-filler.js +71 -0
- package/dist/output/slot-filler.js.map +1 -0
- package/dist/output/tc-assembler.d.ts +30 -0
- package/dist/output/tc-assembler.d.ts.map +1 -0
- package/dist/output/tc-assembler.js +227 -0
- package/dist/output/tc-assembler.js.map +1 -0
- package/dist/output/tc-types.d.ts +41 -0
- package/dist/output/tc-types.d.ts.map +1 -0
- package/dist/output/tc-types.js +5 -0
- package/dist/output/tc-types.js.map +1 -0
- package/dist/output/tc-validator.test.d.ts +9 -0
- package/dist/output/tc-validator.test.d.ts.map +1 -0
- package/dist/output/tc-validator.test.js +194 -0
- package/dist/output/tc-validator.test.js.map +1 -0
- package/dist/providers/anthropic.d.ts +9 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +30 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/bedrock.d.ts +9 -0
- package/dist/providers/bedrock.d.ts.map +1 -0
- package/dist/providers/bedrock.js +38 -0
- package/dist/providers/bedrock.js.map +1 -0
- package/dist/providers/index.d.ts +6 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +14 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/types.d.ts +12 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +5 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/references/acsc-risks.d.ts +18 -0
- package/dist/references/acsc-risks.d.ts.map +1 -0
- package/dist/references/acsc-risks.js +232 -0
- package/dist/references/acsc-risks.js.map +1 -0
- package/dist/references/aicm.d.ts +41 -0
- package/dist/references/aicm.d.ts.map +1 -0
- package/dist/references/aicm.js +447 -0
- package/dist/references/aicm.js.map +1 -0
- package/dist/references/dstg-meaid.d.ts +59 -0
- package/dist/references/dstg-meaid.d.ts.map +1 -0
- package/dist/references/dstg-meaid.js +352 -0
- package/dist/references/dstg-meaid.js.map +1 -0
- package/dist/references/index.d.ts +20 -0
- package/dist/references/index.d.ts.map +1 -0
- package/dist/references/index.js +31 -0
- package/dist/references/index.js.map +1 -0
- package/dist/references/nemoclaw.d.ts +48 -0
- package/dist/references/nemoclaw.d.ts.map +1 -0
- package/dist/references/nemoclaw.js +140 -0
- package/dist/references/nemoclaw.js.map +1 -0
- package/dist/references/nist-ai-rmf.d.ts +31 -0
- package/dist/references/nist-ai-rmf.d.ts.map +1 -0
- package/dist/references/nist-ai-rmf.js +627 -0
- package/dist/references/nist-ai-rmf.js.map +1 -0
- package/dist/references/owasp-agentic-top10.d.ts +50 -0
- package/dist/references/owasp-agentic-top10.d.ts.map +1 -0
- package/dist/references/owasp-agentic-top10.js +202 -0
- package/dist/references/owasp-agentic-top10.js.map +1 -0
- package/dist/references/registry-parity.test.d.ts +17 -0
- package/dist/references/registry-parity.test.d.ts.map +1 -0
- package/dist/references/registry-parity.test.js +87 -0
- package/dist/references/registry-parity.test.js.map +1 -0
- package/dist/references/registry.d.ts +90 -0
- package/dist/references/registry.d.ts.map +1 -0
- package/dist/references/registry.js +29 -0
- package/dist/references/registry.js.map +1 -0
- package/dist/tools/model-eval.d.ts +97 -0
- package/dist/tools/model-eval.d.ts.map +1 -0
- package/dist/tools/model-eval.js +307 -0
- package/dist/tools/model-eval.js.map +1 -0
- package/package.json +105 -0
- package/schemas/threat-composer-v1.schema.json +966 -0
- package/vendor/atlas-release/ATLAS-2026.07.yaml +17877 -0
- package/vendor/atlas-release/README.md +41 -0
|
@@ -0,0 +1,966 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"description": "Threat Composer data exchange format schema for importing/exporting threat modeling data. This schema defines the complete structure for threat modeling sessions including application info, architecture diagrams, data flows, threats, mitigations, and assumptions. Files conforming to this schema should use the .tc.json file extension and can be imported/exported through the Threat Composer application. When generating or validating threat model data, ensure all optional fields are included when available (and additive) to provide comprehensive threat modeling coverage. For more information about Threat Composer and threat modeling best practices, visit: https://github.com/awslabs/threat-composer",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"schema": {
|
|
7
|
+
"description": "Schema version identifier",
|
|
8
|
+
"type": "number",
|
|
9
|
+
"maximum": 1
|
|
10
|
+
},
|
|
11
|
+
"applicationInfo": {
|
|
12
|
+
"description": "Information about the application being threat modeled",
|
|
13
|
+
"type": "object",
|
|
14
|
+
"properties": {
|
|
15
|
+
"name": {
|
|
16
|
+
"description": "Application name. Plain-text",
|
|
17
|
+
"type": "string",
|
|
18
|
+
"maxLength": 200
|
|
19
|
+
},
|
|
20
|
+
"description": {
|
|
21
|
+
"description": "Markdown detailed description of the application. Start your headers from H3 maximum",
|
|
22
|
+
"type": "string",
|
|
23
|
+
"maxLength": 100000
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"additionalProperties": false
|
|
27
|
+
},
|
|
28
|
+
"architecture": {
|
|
29
|
+
"description": "System architecture information about the application being threat modeled",
|
|
30
|
+
"type": "object",
|
|
31
|
+
"properties": {
|
|
32
|
+
"description": {
|
|
33
|
+
"description": "Markdown detailed description of the application architecture. Start your headers from H3 maximum",
|
|
34
|
+
"type": "string",
|
|
35
|
+
"maxLength": 100000
|
|
36
|
+
},
|
|
37
|
+
"image": {
|
|
38
|
+
"description": "Architecture diagram image. Image URL or base64 encoded image data. Supports image/* MIME types, though browser rendering compatibility varies by format. For URLs: maximum 2048 characters. For base64: maximum 1000000 characters (approximately 750KB for typical images due to base64 encoding overhead). Common formats (PNG/JPG/GIF) are automatically compressed, making original file size limits difficult to specify precisely. The constraint applies to the resulting base64 string length rather than the original file size.",
|
|
39
|
+
"type": "string"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"additionalProperties": false
|
|
43
|
+
},
|
|
44
|
+
"dataflow": {
|
|
45
|
+
"description": "Data flow information about the application being threat modeled",
|
|
46
|
+
"type": "object",
|
|
47
|
+
"properties": {
|
|
48
|
+
"description": {
|
|
49
|
+
"description": "Markdown detailed description of the application data flows. Start your headers from H3 maximum",
|
|
50
|
+
"type": "string",
|
|
51
|
+
"maxLength": 100000
|
|
52
|
+
},
|
|
53
|
+
"image": {
|
|
54
|
+
"description": "Data-flow diagram image. Image URL or base64 encoded image data. Supports image/* MIME types, though browser rendering compatibility varies by format. For URLs: maximum 2048 characters. For base64: maximum 1000000 characters (approximately 750KB for typical images due to base64 encoding overhead). Common formats (PNG/JPG/GIF) are automatically compressed, making original file size limits difficult to specify precisely. The constraint applies to the resulting base64 string length rather than the original file size.",
|
|
55
|
+
"type": "string"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"additionalProperties": false
|
|
59
|
+
},
|
|
60
|
+
"assumptions": {
|
|
61
|
+
"description": "Assumptions about the design, threats and migations of the application being threat modeled",
|
|
62
|
+
"type": "array",
|
|
63
|
+
"items": {
|
|
64
|
+
"type": "object",
|
|
65
|
+
"properties": {
|
|
66
|
+
"id": {
|
|
67
|
+
"description": "UUID v4 identifier",
|
|
68
|
+
"type": "string",
|
|
69
|
+
"maxLength": 36
|
|
70
|
+
},
|
|
71
|
+
"numericId": {
|
|
72
|
+
"description": "Numeric identifier for display purposes",
|
|
73
|
+
"type": "number"
|
|
74
|
+
},
|
|
75
|
+
"displayOrder": {
|
|
76
|
+
"description": "Order for displaying threats",
|
|
77
|
+
"type": "number"
|
|
78
|
+
},
|
|
79
|
+
"metadata": {
|
|
80
|
+
"description": "Additional metadata as key-value pairs",
|
|
81
|
+
"type": "array",
|
|
82
|
+
"items": {
|
|
83
|
+
"anyOf": [
|
|
84
|
+
{
|
|
85
|
+
"type": "object",
|
|
86
|
+
"properties": {
|
|
87
|
+
"key": {
|
|
88
|
+
"type": "string",
|
|
89
|
+
"const": "Comments"
|
|
90
|
+
},
|
|
91
|
+
"value": {
|
|
92
|
+
"description": "Comment value",
|
|
93
|
+
"type": "string",
|
|
94
|
+
"maxLength": 1000
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"required": [
|
|
98
|
+
"key",
|
|
99
|
+
"value"
|
|
100
|
+
],
|
|
101
|
+
"additionalProperties": false
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"type": "object",
|
|
105
|
+
"properties": {
|
|
106
|
+
"key": {
|
|
107
|
+
"type": "string",
|
|
108
|
+
"maxLength": 50,
|
|
109
|
+
"pattern": "^custom:.*"
|
|
110
|
+
},
|
|
111
|
+
"value": {
|
|
112
|
+
"anyOf": [
|
|
113
|
+
{
|
|
114
|
+
"type": "string"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"type": "array",
|
|
118
|
+
"items": {
|
|
119
|
+
"type": "string"
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
"required": [
|
|
126
|
+
"key",
|
|
127
|
+
"value"
|
|
128
|
+
],
|
|
129
|
+
"additionalProperties": false
|
|
130
|
+
}
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"tags": {
|
|
135
|
+
"description": "Categorization tags",
|
|
136
|
+
"type": "array",
|
|
137
|
+
"items": {
|
|
138
|
+
"description": "Tag value",
|
|
139
|
+
"type": "string",
|
|
140
|
+
"minLength": 1,
|
|
141
|
+
"maxLength": 30
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
"content": {
|
|
145
|
+
"description": "Assumption. Plain-text",
|
|
146
|
+
"type": "string",
|
|
147
|
+
"maxLength": 1000
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
"required": [
|
|
151
|
+
"id",
|
|
152
|
+
"numericId",
|
|
153
|
+
"content"
|
|
154
|
+
],
|
|
155
|
+
"additionalProperties": false
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"mitigations": {
|
|
159
|
+
"description": "Mitigations for the application being threat modeled",
|
|
160
|
+
"type": "array",
|
|
161
|
+
"items": {
|
|
162
|
+
"type": "object",
|
|
163
|
+
"properties": {
|
|
164
|
+
"id": {
|
|
165
|
+
"description": "UUID v4 identifier",
|
|
166
|
+
"type": "string",
|
|
167
|
+
"maxLength": 36
|
|
168
|
+
},
|
|
169
|
+
"numericId": {
|
|
170
|
+
"description": "Numeric identifier for display purposes",
|
|
171
|
+
"type": "number"
|
|
172
|
+
},
|
|
173
|
+
"displayOrder": {
|
|
174
|
+
"description": "Order for displaying threats",
|
|
175
|
+
"type": "number"
|
|
176
|
+
},
|
|
177
|
+
"metadata": {
|
|
178
|
+
"description": "Additional metadata as key-value pairs for mitigations",
|
|
179
|
+
"type": "array",
|
|
180
|
+
"items": {
|
|
181
|
+
"anyOf": [
|
|
182
|
+
{
|
|
183
|
+
"type": "object",
|
|
184
|
+
"properties": {
|
|
185
|
+
"key": {
|
|
186
|
+
"type": "string",
|
|
187
|
+
"const": "Comments"
|
|
188
|
+
},
|
|
189
|
+
"value": {
|
|
190
|
+
"description": "Comment value",
|
|
191
|
+
"type": "string",
|
|
192
|
+
"maxLength": 1000
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
"required": [
|
|
196
|
+
"key",
|
|
197
|
+
"value"
|
|
198
|
+
],
|
|
199
|
+
"additionalProperties": false
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"type": "object",
|
|
203
|
+
"properties": {
|
|
204
|
+
"key": {
|
|
205
|
+
"type": "string",
|
|
206
|
+
"maxLength": 50,
|
|
207
|
+
"pattern": "^custom:.*"
|
|
208
|
+
},
|
|
209
|
+
"value": {
|
|
210
|
+
"anyOf": [
|
|
211
|
+
{
|
|
212
|
+
"type": "string"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"type": "array",
|
|
216
|
+
"items": {
|
|
217
|
+
"type": "string"
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
]
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
"required": [
|
|
224
|
+
"key",
|
|
225
|
+
"value"
|
|
226
|
+
],
|
|
227
|
+
"additionalProperties": false
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"type": "object",
|
|
231
|
+
"properties": {
|
|
232
|
+
"key": {
|
|
233
|
+
"type": "string",
|
|
234
|
+
"const": "source"
|
|
235
|
+
},
|
|
236
|
+
"value": {
|
|
237
|
+
"description": "Source type indicating type of pack",
|
|
238
|
+
"type": "string",
|
|
239
|
+
"enum": [
|
|
240
|
+
"mitigationPack"
|
|
241
|
+
]
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
"required": [
|
|
245
|
+
"key",
|
|
246
|
+
"value"
|
|
247
|
+
],
|
|
248
|
+
"additionalProperties": false
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"type": "object",
|
|
252
|
+
"properties": {
|
|
253
|
+
"key": {
|
|
254
|
+
"type": "string",
|
|
255
|
+
"const": "mitigationPackId"
|
|
256
|
+
},
|
|
257
|
+
"value": {
|
|
258
|
+
"description": "Identifier for the mitigation pack",
|
|
259
|
+
"type": "string",
|
|
260
|
+
"minLength": 1,
|
|
261
|
+
"maxLength": 30
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
"required": [
|
|
265
|
+
"key",
|
|
266
|
+
"value"
|
|
267
|
+
],
|
|
268
|
+
"additionalProperties": false
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"type": "object",
|
|
272
|
+
"properties": {
|
|
273
|
+
"key": {
|
|
274
|
+
"type": "string",
|
|
275
|
+
"const": "mitigationPackMitigationId"
|
|
276
|
+
},
|
|
277
|
+
"value": {
|
|
278
|
+
"description": "UUID v4 identifier for the specific mitigation within the pack",
|
|
279
|
+
"type": "string",
|
|
280
|
+
"maxLength": 36
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
"required": [
|
|
284
|
+
"key",
|
|
285
|
+
"value"
|
|
286
|
+
],
|
|
287
|
+
"additionalProperties": false
|
|
288
|
+
}
|
|
289
|
+
]
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
"tags": {
|
|
293
|
+
"description": "Categorization tags",
|
|
294
|
+
"type": "array",
|
|
295
|
+
"items": {
|
|
296
|
+
"description": "Tag value",
|
|
297
|
+
"type": "string",
|
|
298
|
+
"minLength": 1,
|
|
299
|
+
"maxLength": 30
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
"content": {
|
|
303
|
+
"description": "Mitigation. Plain-text",
|
|
304
|
+
"type": "string",
|
|
305
|
+
"maxLength": 1000
|
|
306
|
+
},
|
|
307
|
+
"status": {
|
|
308
|
+
"description": "Status of the mitigation",
|
|
309
|
+
"type": "string",
|
|
310
|
+
"enum": [
|
|
311
|
+
"mitigationIdentified",
|
|
312
|
+
"mitigationInProgress",
|
|
313
|
+
"mitigationResolved",
|
|
314
|
+
"mitigationResolvedWillNotAction"
|
|
315
|
+
]
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
"required": [
|
|
319
|
+
"id",
|
|
320
|
+
"numericId",
|
|
321
|
+
"content"
|
|
322
|
+
],
|
|
323
|
+
"additionalProperties": false
|
|
324
|
+
}
|
|
325
|
+
},
|
|
326
|
+
"assumptionLinks": {
|
|
327
|
+
"description": "Links between assumptions and threats/mitigations",
|
|
328
|
+
"type": "array",
|
|
329
|
+
"items": {
|
|
330
|
+
"type": "object",
|
|
331
|
+
"properties": {
|
|
332
|
+
"type": {
|
|
333
|
+
"anyOf": [
|
|
334
|
+
{
|
|
335
|
+
"type": "string",
|
|
336
|
+
"const": "Mitigation"
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"type": "string",
|
|
340
|
+
"const": "Threat"
|
|
341
|
+
}
|
|
342
|
+
]
|
|
343
|
+
},
|
|
344
|
+
"assumptionId": {
|
|
345
|
+
"description": "UUID for the assumption",
|
|
346
|
+
"type": "string",
|
|
347
|
+
"minLength": 36,
|
|
348
|
+
"maxLength": 36
|
|
349
|
+
},
|
|
350
|
+
"linkedId": {
|
|
351
|
+
"description": "UUID of the linked threat or mitigation",
|
|
352
|
+
"type": "string",
|
|
353
|
+
"minLength": 36,
|
|
354
|
+
"maxLength": 36
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
"required": [
|
|
358
|
+
"type",
|
|
359
|
+
"assumptionId",
|
|
360
|
+
"linkedId"
|
|
361
|
+
],
|
|
362
|
+
"additionalProperties": false
|
|
363
|
+
}
|
|
364
|
+
},
|
|
365
|
+
"mitigationLinks": {
|
|
366
|
+
"description": "Links between mitigations and threats",
|
|
367
|
+
"type": "array",
|
|
368
|
+
"items": {
|
|
369
|
+
"type": "object",
|
|
370
|
+
"properties": {
|
|
371
|
+
"mitigationId": {
|
|
372
|
+
"description": "UUID for the mitigation",
|
|
373
|
+
"type": "string",
|
|
374
|
+
"minLength": 36,
|
|
375
|
+
"maxLength": 36
|
|
376
|
+
},
|
|
377
|
+
"linkedId": {
|
|
378
|
+
"description": "UUID of the linked threat or assumption",
|
|
379
|
+
"type": "string",
|
|
380
|
+
"minLength": 36,
|
|
381
|
+
"maxLength": 36
|
|
382
|
+
}
|
|
383
|
+
},
|
|
384
|
+
"required": [
|
|
385
|
+
"mitigationId",
|
|
386
|
+
"linkedId"
|
|
387
|
+
],
|
|
388
|
+
"additionalProperties": false
|
|
389
|
+
}
|
|
390
|
+
},
|
|
391
|
+
"threats": {
|
|
392
|
+
"description": "Threats for the application being threat modeled",
|
|
393
|
+
"type": "array",
|
|
394
|
+
"items": {
|
|
395
|
+
"type": "object",
|
|
396
|
+
"properties": {
|
|
397
|
+
"id": {
|
|
398
|
+
"description": "UUID v4 identifier",
|
|
399
|
+
"type": "string",
|
|
400
|
+
"maxLength": 36
|
|
401
|
+
},
|
|
402
|
+
"numericId": {
|
|
403
|
+
"description": "Numeric identifier for display purposes",
|
|
404
|
+
"type": "number"
|
|
405
|
+
},
|
|
406
|
+
"displayOrder": {
|
|
407
|
+
"description": "Order for displaying threats",
|
|
408
|
+
"type": "number"
|
|
409
|
+
},
|
|
410
|
+
"metadata": {
|
|
411
|
+
"description": "Additional metadata as key-value pairs for threats",
|
|
412
|
+
"type": "array",
|
|
413
|
+
"items": {
|
|
414
|
+
"anyOf": [
|
|
415
|
+
{
|
|
416
|
+
"type": "object",
|
|
417
|
+
"properties": {
|
|
418
|
+
"key": {
|
|
419
|
+
"type": "string",
|
|
420
|
+
"const": "Comments"
|
|
421
|
+
},
|
|
422
|
+
"value": {
|
|
423
|
+
"description": "Comment value",
|
|
424
|
+
"type": "string",
|
|
425
|
+
"maxLength": 1000
|
|
426
|
+
}
|
|
427
|
+
},
|
|
428
|
+
"required": [
|
|
429
|
+
"key",
|
|
430
|
+
"value"
|
|
431
|
+
],
|
|
432
|
+
"additionalProperties": false
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
"type": "object",
|
|
436
|
+
"properties": {
|
|
437
|
+
"key": {
|
|
438
|
+
"type": "string",
|
|
439
|
+
"maxLength": 50,
|
|
440
|
+
"pattern": "^custom:.*"
|
|
441
|
+
},
|
|
442
|
+
"value": {
|
|
443
|
+
"anyOf": [
|
|
444
|
+
{
|
|
445
|
+
"type": "string"
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
"type": "array",
|
|
449
|
+
"items": {
|
|
450
|
+
"type": "string"
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
]
|
|
454
|
+
}
|
|
455
|
+
},
|
|
456
|
+
"required": [
|
|
457
|
+
"key",
|
|
458
|
+
"value"
|
|
459
|
+
],
|
|
460
|
+
"additionalProperties": false
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
"type": "object",
|
|
464
|
+
"properties": {
|
|
465
|
+
"key": {
|
|
466
|
+
"type": "string",
|
|
467
|
+
"const": "source"
|
|
468
|
+
},
|
|
469
|
+
"value": {
|
|
470
|
+
"description": "Source type indicating type of pack",
|
|
471
|
+
"type": "string",
|
|
472
|
+
"enum": [
|
|
473
|
+
"threatPack"
|
|
474
|
+
]
|
|
475
|
+
}
|
|
476
|
+
},
|
|
477
|
+
"required": [
|
|
478
|
+
"key",
|
|
479
|
+
"value"
|
|
480
|
+
],
|
|
481
|
+
"additionalProperties": false
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
"type": "object",
|
|
485
|
+
"properties": {
|
|
486
|
+
"key": {
|
|
487
|
+
"type": "string",
|
|
488
|
+
"const": "STRIDE"
|
|
489
|
+
},
|
|
490
|
+
"value": {
|
|
491
|
+
"type": "array",
|
|
492
|
+
"items": {
|
|
493
|
+
"type": "string",
|
|
494
|
+
"enum": [
|
|
495
|
+
"S",
|
|
496
|
+
"T",
|
|
497
|
+
"R",
|
|
498
|
+
"I",
|
|
499
|
+
"D",
|
|
500
|
+
"E"
|
|
501
|
+
]
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
},
|
|
505
|
+
"required": [
|
|
506
|
+
"key",
|
|
507
|
+
"value"
|
|
508
|
+
],
|
|
509
|
+
"additionalProperties": false
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
"type": "object",
|
|
513
|
+
"properties": {
|
|
514
|
+
"key": {
|
|
515
|
+
"type": "string",
|
|
516
|
+
"const": "Priority"
|
|
517
|
+
},
|
|
518
|
+
"value": {
|
|
519
|
+
"type": "string",
|
|
520
|
+
"enum": [
|
|
521
|
+
"High",
|
|
522
|
+
"Medium",
|
|
523
|
+
"Low"
|
|
524
|
+
]
|
|
525
|
+
}
|
|
526
|
+
},
|
|
527
|
+
"required": [
|
|
528
|
+
"key",
|
|
529
|
+
"value"
|
|
530
|
+
],
|
|
531
|
+
"additionalProperties": false
|
|
532
|
+
},
|
|
533
|
+
{
|
|
534
|
+
"type": "object",
|
|
535
|
+
"properties": {
|
|
536
|
+
"key": {
|
|
537
|
+
"type": "string",
|
|
538
|
+
"const": "threatPackId"
|
|
539
|
+
},
|
|
540
|
+
"value": {
|
|
541
|
+
"description": "Identifier for the threat pack",
|
|
542
|
+
"type": "string",
|
|
543
|
+
"minLength": 1,
|
|
544
|
+
"maxLength": 30
|
|
545
|
+
}
|
|
546
|
+
},
|
|
547
|
+
"required": [
|
|
548
|
+
"key",
|
|
549
|
+
"value"
|
|
550
|
+
],
|
|
551
|
+
"additionalProperties": false
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
"type": "object",
|
|
555
|
+
"properties": {
|
|
556
|
+
"key": {
|
|
557
|
+
"type": "string",
|
|
558
|
+
"const": "threatPackThreatId"
|
|
559
|
+
},
|
|
560
|
+
"value": {
|
|
561
|
+
"description": "UUID v4 identifier for the specific threat within the pack",
|
|
562
|
+
"type": "string",
|
|
563
|
+
"maxLength": 36
|
|
564
|
+
}
|
|
565
|
+
},
|
|
566
|
+
"required": [
|
|
567
|
+
"key",
|
|
568
|
+
"value"
|
|
569
|
+
],
|
|
570
|
+
"additionalProperties": false
|
|
571
|
+
},
|
|
572
|
+
{
|
|
573
|
+
"type": "object",
|
|
574
|
+
"properties": {
|
|
575
|
+
"key": {
|
|
576
|
+
"type": "string",
|
|
577
|
+
"const": "threatPackMitigationCandidateId"
|
|
578
|
+
},
|
|
579
|
+
"value": {
|
|
580
|
+
"description": "UUID v4 identifier for the mitigation candidate from the threat pack",
|
|
581
|
+
"type": "string",
|
|
582
|
+
"maxLength": 36
|
|
583
|
+
}
|
|
584
|
+
},
|
|
585
|
+
"required": [
|
|
586
|
+
"key",
|
|
587
|
+
"value"
|
|
588
|
+
],
|
|
589
|
+
"additionalProperties": false
|
|
590
|
+
}
|
|
591
|
+
]
|
|
592
|
+
}
|
|
593
|
+
},
|
|
594
|
+
"tags": {
|
|
595
|
+
"description": "Categorization tags",
|
|
596
|
+
"type": "array",
|
|
597
|
+
"items": {
|
|
598
|
+
"description": "Tag value",
|
|
599
|
+
"type": "string",
|
|
600
|
+
"minLength": 1,
|
|
601
|
+
"maxLength": 30
|
|
602
|
+
}
|
|
603
|
+
},
|
|
604
|
+
"threatSource": {
|
|
605
|
+
"description": "The entity taking action. For example: An actor (a useful default), An internet-based actor, An internal or external actor.",
|
|
606
|
+
"type": "string",
|
|
607
|
+
"maxLength": 200
|
|
608
|
+
},
|
|
609
|
+
"prerequisites": {
|
|
610
|
+
"description": "Conditions or requirements that must be met for a threat source's action to be viable. For example: -with access to another user's token. -who has administrator access -with user permissions - in a mitm position -with a network path to the API. If no prerequistes known return empty string, if know return but first word must be lower case",
|
|
611
|
+
"type": "string",
|
|
612
|
+
"maxLength": 200
|
|
613
|
+
},
|
|
614
|
+
"threatAction": {
|
|
615
|
+
"description": "The action being performed by the threat source. For example: -spoof another user -tamper with data stored in the database -make thousands of concurrent requests. first word must be lower case",
|
|
616
|
+
"type": "string",
|
|
617
|
+
"maxLength": 200
|
|
618
|
+
},
|
|
619
|
+
"threatImpact": {
|
|
620
|
+
"description": "What impact this has on the system.The direct impact of a successful threat action. For example: - unauthorized access to the user's bank account information -modifying the username for the all-time high score. -a web application being unable to handle other user requests.if know return but first word must be lower case",
|
|
621
|
+
"type": "string",
|
|
622
|
+
"maxLength": 200
|
|
623
|
+
},
|
|
624
|
+
"impactedGoal": {
|
|
625
|
+
"description": "The information security or business objective that is negatively affected. This is most commonly the CIA triad: -confidentiality, -integrity, -availability. If not known return empty string in array, else strings in array first word must be lower case",
|
|
626
|
+
"type": "array",
|
|
627
|
+
"items": {
|
|
628
|
+
"type": "string",
|
|
629
|
+
"maxLength": 200
|
|
630
|
+
}
|
|
631
|
+
},
|
|
632
|
+
"impactedAssets": {
|
|
633
|
+
"description": "List of assets affected by this threat. If not known return empty string in array, else strings in array first word must be lower case",
|
|
634
|
+
"type": "array",
|
|
635
|
+
"items": {
|
|
636
|
+
"type": "string",
|
|
637
|
+
"maxLength": 200
|
|
638
|
+
}
|
|
639
|
+
},
|
|
640
|
+
"statement": {
|
|
641
|
+
"description": "concatenate the above as follows into a one of the following permutations based on if the default is available or not - trim any repated white space into a single white space: 1/ A/an [threat_source] [prerequisites] can [threat_action], 2/ A/an [threat_source] [prerequisites] can [threat_action], which leads to [threat_impact], 3/ A/an [threat_source] [prerequisites] can [threat_action], resulting in reduced [impacted_goal], 4/ A/An [threat_source] [prerequisites] can [threat_action], which leads to [threat_impact], resulting in reduced [impacted_goal], 5/ A/An [threat_source] [prerequisites] can [threat_action], negatively impacting [impacted_assets], 6/ A/An [threat_source] [prerequisites] can [threat_action], which leads to [threat_impact], negatively impacting [impacted_assets], 7/ A/An [threat_source] [prerequisites] can [threat_action], resulting in reduced [impacted_goal] of [impacted_assets], 8/ A/An [threat_source] [prerequisites] can [threat_action], which leads to [threat_impact], resulting in reduced [impacted_goal] of [impacted_assets]",
|
|
642
|
+
"type": "string",
|
|
643
|
+
"maxLength": 1400
|
|
644
|
+
},
|
|
645
|
+
"customTemplate": {
|
|
646
|
+
"description": "Custom template used for threat statement generation. Example: A [threatSource] [prerequisites] can [threatAction]",
|
|
647
|
+
"type": "string",
|
|
648
|
+
"maxLength": 200
|
|
649
|
+
},
|
|
650
|
+
"status": {
|
|
651
|
+
"description": "Status of the threat",
|
|
652
|
+
"type": "string",
|
|
653
|
+
"enum": [
|
|
654
|
+
"threatIdentified",
|
|
655
|
+
"threatResolved",
|
|
656
|
+
"threatResolvedNotUseful"
|
|
657
|
+
]
|
|
658
|
+
}
|
|
659
|
+
},
|
|
660
|
+
"required": [
|
|
661
|
+
"id",
|
|
662
|
+
"numericId"
|
|
663
|
+
],
|
|
664
|
+
"additionalProperties": false
|
|
665
|
+
}
|
|
666
|
+
},
|
|
667
|
+
"brainstorm": {
|
|
668
|
+
"description": "Brainstorm data for this threat model. Including: assumptions, mitigitations, threat sources, threat prerequisites, threat actions, threat impacts, impacted goals, and impacted assets",
|
|
669
|
+
"type": "object",
|
|
670
|
+
"properties": {
|
|
671
|
+
"assumptions": {
|
|
672
|
+
"description": "Assumptions about the design, threats and migations of the application being threat modeled",
|
|
673
|
+
"type": "array",
|
|
674
|
+
"items": {
|
|
675
|
+
"type": "object",
|
|
676
|
+
"properties": {
|
|
677
|
+
"id": {
|
|
678
|
+
"description": "UUID v4 identifier",
|
|
679
|
+
"type": "string",
|
|
680
|
+
"maxLength": 36
|
|
681
|
+
},
|
|
682
|
+
"content": {
|
|
683
|
+
"description": "Brainstorm item for assumption. Assumption about the design, threats and migations of the application being threat modeled. Plain-text",
|
|
684
|
+
"type": "string",
|
|
685
|
+
"maxLength": 200
|
|
686
|
+
},
|
|
687
|
+
"createdAt": {
|
|
688
|
+
"description": "ISO 8601 UTC timestamp when the item was created (e.g., \"2024-01-15T14:30:45.123Z\")",
|
|
689
|
+
"type": "string",
|
|
690
|
+
"format": "date-time",
|
|
691
|
+
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
|
|
692
|
+
},
|
|
693
|
+
"createdBy": {
|
|
694
|
+
"description": "Identifier of who created this item (user email, ID, display name, or \"ai-agent\"). AI agents should use \"ai-agent\" as the default value.",
|
|
695
|
+
"type": "string",
|
|
696
|
+
"maxLength": 50
|
|
697
|
+
},
|
|
698
|
+
"groupId": {
|
|
699
|
+
"description": "UUID v4 identifier of the group this item belongs to. If not provided, item is not grouped.",
|
|
700
|
+
"type": "string",
|
|
701
|
+
"maxLength": 36
|
|
702
|
+
}
|
|
703
|
+
},
|
|
704
|
+
"required": [
|
|
705
|
+
"id",
|
|
706
|
+
"content",
|
|
707
|
+
"createdAt"
|
|
708
|
+
],
|
|
709
|
+
"additionalProperties": false
|
|
710
|
+
}
|
|
711
|
+
},
|
|
712
|
+
"threatSources": {
|
|
713
|
+
"description": "Brainstormed threat sources for the application being threat modeled",
|
|
714
|
+
"type": "array",
|
|
715
|
+
"items": {
|
|
716
|
+
"type": "object",
|
|
717
|
+
"properties": {
|
|
718
|
+
"id": {
|
|
719
|
+
"description": "UUID v4 identifier",
|
|
720
|
+
"type": "string",
|
|
721
|
+
"maxLength": 36
|
|
722
|
+
},
|
|
723
|
+
"content": {
|
|
724
|
+
"description": "Brainstorm item for threat source. The entity taking action. For example: An actor (a useful default), An internet-based actor, An internal or external actor. Plain-text",
|
|
725
|
+
"type": "string",
|
|
726
|
+
"maxLength": 200
|
|
727
|
+
},
|
|
728
|
+
"createdAt": {
|
|
729
|
+
"description": "ISO 8601 UTC timestamp when the item was created (e.g., \"2024-01-15T14:30:45.123Z\")",
|
|
730
|
+
"type": "string",
|
|
731
|
+
"format": "date-time",
|
|
732
|
+
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
|
|
733
|
+
},
|
|
734
|
+
"createdBy": {
|
|
735
|
+
"description": "Identifier of who created this item (user email, ID, display name, or \"ai-agent\"). AI agents should use \"ai-agent\" as the default value.",
|
|
736
|
+
"type": "string",
|
|
737
|
+
"maxLength": 50
|
|
738
|
+
},
|
|
739
|
+
"groupId": {
|
|
740
|
+
"description": "UUID v4 identifier of the group this item belongs to. If not provided, item is not grouped.",
|
|
741
|
+
"type": "string",
|
|
742
|
+
"maxLength": 36
|
|
743
|
+
}
|
|
744
|
+
},
|
|
745
|
+
"required": [
|
|
746
|
+
"id",
|
|
747
|
+
"content",
|
|
748
|
+
"createdAt"
|
|
749
|
+
],
|
|
750
|
+
"additionalProperties": false
|
|
751
|
+
}
|
|
752
|
+
},
|
|
753
|
+
"threatPrerequisites": {
|
|
754
|
+
"description": "Brainstormed prerequisites for threats against the application being threat modeled",
|
|
755
|
+
"type": "array",
|
|
756
|
+
"items": {
|
|
757
|
+
"type": "object",
|
|
758
|
+
"properties": {
|
|
759
|
+
"id": {
|
|
760
|
+
"description": "UUID v4 identifier",
|
|
761
|
+
"type": "string",
|
|
762
|
+
"maxLength": 36
|
|
763
|
+
},
|
|
764
|
+
"content": {
|
|
765
|
+
"description": "Brainstorm item for threat prerequisite. Conditions or requirements that must be met for a threat source's action to be viable. For example: -with access to another user's token. -who has administrator access -with user permissions - in a mitm position -with a network path to the API. If no prerequistes known return empty string, if know return but first word must be lower case. Plain-text",
|
|
766
|
+
"type": "string",
|
|
767
|
+
"maxLength": 200
|
|
768
|
+
},
|
|
769
|
+
"createdAt": {
|
|
770
|
+
"description": "ISO 8601 UTC timestamp when the item was created (e.g., \"2024-01-15T14:30:45.123Z\")",
|
|
771
|
+
"type": "string",
|
|
772
|
+
"format": "date-time",
|
|
773
|
+
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
|
|
774
|
+
},
|
|
775
|
+
"createdBy": {
|
|
776
|
+
"description": "Identifier of who created this item (user email, ID, display name, or \"ai-agent\"). AI agents should use \"ai-agent\" as the default value.",
|
|
777
|
+
"type": "string",
|
|
778
|
+
"maxLength": 50
|
|
779
|
+
},
|
|
780
|
+
"groupId": {
|
|
781
|
+
"description": "UUID v4 identifier of the group this item belongs to. If not provided, item is not grouped.",
|
|
782
|
+
"type": "string",
|
|
783
|
+
"maxLength": 36
|
|
784
|
+
}
|
|
785
|
+
},
|
|
786
|
+
"required": [
|
|
787
|
+
"id",
|
|
788
|
+
"content",
|
|
789
|
+
"createdAt"
|
|
790
|
+
],
|
|
791
|
+
"additionalProperties": false
|
|
792
|
+
}
|
|
793
|
+
},
|
|
794
|
+
"threatActions": {
|
|
795
|
+
"description": "Brainstormed threat actions against the application being threat modeled",
|
|
796
|
+
"type": "array",
|
|
797
|
+
"items": {
|
|
798
|
+
"type": "object",
|
|
799
|
+
"properties": {
|
|
800
|
+
"id": {
|
|
801
|
+
"description": "UUID v4 identifier",
|
|
802
|
+
"type": "string",
|
|
803
|
+
"maxLength": 36
|
|
804
|
+
},
|
|
805
|
+
"content": {
|
|
806
|
+
"description": "Brainstorm item for threat action. The action being performed by the threat source. For example: -spoof another user -tamper with data stored in the database -make thousands of concurrent requests. first word must be lower case. Plain-text",
|
|
807
|
+
"type": "string",
|
|
808
|
+
"maxLength": 200
|
|
809
|
+
},
|
|
810
|
+
"createdAt": {
|
|
811
|
+
"description": "ISO 8601 UTC timestamp when the item was created (e.g., \"2024-01-15T14:30:45.123Z\")",
|
|
812
|
+
"type": "string",
|
|
813
|
+
"format": "date-time",
|
|
814
|
+
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
|
|
815
|
+
},
|
|
816
|
+
"createdBy": {
|
|
817
|
+
"description": "Identifier of who created this item (user email, ID, display name, or \"ai-agent\"). AI agents should use \"ai-agent\" as the default value.",
|
|
818
|
+
"type": "string",
|
|
819
|
+
"maxLength": 50
|
|
820
|
+
},
|
|
821
|
+
"groupId": {
|
|
822
|
+
"description": "UUID v4 identifier of the group this item belongs to. If not provided, item is not grouped.",
|
|
823
|
+
"type": "string",
|
|
824
|
+
"maxLength": 36
|
|
825
|
+
}
|
|
826
|
+
},
|
|
827
|
+
"required": [
|
|
828
|
+
"id",
|
|
829
|
+
"content",
|
|
830
|
+
"createdAt"
|
|
831
|
+
],
|
|
832
|
+
"additionalProperties": false
|
|
833
|
+
}
|
|
834
|
+
},
|
|
835
|
+
"threatImpacts": {
|
|
836
|
+
"description": "Brainstormed threat impacts for the application being threat modeled",
|
|
837
|
+
"type": "array",
|
|
838
|
+
"items": {
|
|
839
|
+
"type": "object",
|
|
840
|
+
"properties": {
|
|
841
|
+
"id": {
|
|
842
|
+
"description": "UUID v4 identifier",
|
|
843
|
+
"type": "string",
|
|
844
|
+
"maxLength": 36
|
|
845
|
+
},
|
|
846
|
+
"content": {
|
|
847
|
+
"description": "Brainstorm item for threat impact. What impact this has on the system.The direct impact of a successful threat action. For example: - unauthorized access to the user's bank account information -modifying the username for the all-time high score. -a web application being unable to handle other user requests.if know return but first word must be lower case. Plain-text",
|
|
848
|
+
"type": "string",
|
|
849
|
+
"maxLength": 200
|
|
850
|
+
},
|
|
851
|
+
"createdAt": {
|
|
852
|
+
"description": "ISO 8601 UTC timestamp when the item was created (e.g., \"2024-01-15T14:30:45.123Z\")",
|
|
853
|
+
"type": "string",
|
|
854
|
+
"format": "date-time",
|
|
855
|
+
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
|
|
856
|
+
},
|
|
857
|
+
"createdBy": {
|
|
858
|
+
"description": "Identifier of who created this item (user email, ID, display name, or \"ai-agent\"). AI agents should use \"ai-agent\" as the default value.",
|
|
859
|
+
"type": "string",
|
|
860
|
+
"maxLength": 50
|
|
861
|
+
},
|
|
862
|
+
"groupId": {
|
|
863
|
+
"description": "UUID v4 identifier of the group this item belongs to. If not provided, item is not grouped.",
|
|
864
|
+
"type": "string",
|
|
865
|
+
"maxLength": 36
|
|
866
|
+
}
|
|
867
|
+
},
|
|
868
|
+
"required": [
|
|
869
|
+
"id",
|
|
870
|
+
"content",
|
|
871
|
+
"createdAt"
|
|
872
|
+
],
|
|
873
|
+
"additionalProperties": false
|
|
874
|
+
}
|
|
875
|
+
},
|
|
876
|
+
"assets": {
|
|
877
|
+
"description": "Brainstormed assets for the application being threat modeled",
|
|
878
|
+
"type": "array",
|
|
879
|
+
"items": {
|
|
880
|
+
"type": "object",
|
|
881
|
+
"properties": {
|
|
882
|
+
"id": {
|
|
883
|
+
"description": "UUID v4 identifier",
|
|
884
|
+
"type": "string",
|
|
885
|
+
"maxLength": 36
|
|
886
|
+
},
|
|
887
|
+
"content": {
|
|
888
|
+
"description": "Brainstorm item for asset. List of assets affected by this threat. If not known return empty string in array, else strings in array first word must be lower case. Plain-text",
|
|
889
|
+
"type": "string",
|
|
890
|
+
"maxLength": 200
|
|
891
|
+
},
|
|
892
|
+
"createdAt": {
|
|
893
|
+
"description": "ISO 8601 UTC timestamp when the item was created (e.g., \"2024-01-15T14:30:45.123Z\")",
|
|
894
|
+
"type": "string",
|
|
895
|
+
"format": "date-time",
|
|
896
|
+
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
|
|
897
|
+
},
|
|
898
|
+
"createdBy": {
|
|
899
|
+
"description": "Identifier of who created this item (user email, ID, display name, or \"ai-agent\"). AI agents should use \"ai-agent\" as the default value.",
|
|
900
|
+
"type": "string",
|
|
901
|
+
"maxLength": 50
|
|
902
|
+
},
|
|
903
|
+
"groupId": {
|
|
904
|
+
"description": "UUID v4 identifier of the group this item belongs to. If not provided, item is not grouped.",
|
|
905
|
+
"type": "string",
|
|
906
|
+
"maxLength": 36
|
|
907
|
+
}
|
|
908
|
+
},
|
|
909
|
+
"required": [
|
|
910
|
+
"id",
|
|
911
|
+
"content",
|
|
912
|
+
"createdAt"
|
|
913
|
+
],
|
|
914
|
+
"additionalProperties": false
|
|
915
|
+
}
|
|
916
|
+
},
|
|
917
|
+
"mitigations": {
|
|
918
|
+
"description": "Mitigations for the application being threat modeled",
|
|
919
|
+
"type": "array",
|
|
920
|
+
"items": {
|
|
921
|
+
"type": "object",
|
|
922
|
+
"properties": {
|
|
923
|
+
"id": {
|
|
924
|
+
"description": "UUID v4 identifier",
|
|
925
|
+
"type": "string",
|
|
926
|
+
"maxLength": 36
|
|
927
|
+
},
|
|
928
|
+
"content": {
|
|
929
|
+
"description": "Brainstorm item for mitigation. Mitigation for the application being threat modeled. Plain-text",
|
|
930
|
+
"type": "string",
|
|
931
|
+
"maxLength": 200
|
|
932
|
+
},
|
|
933
|
+
"createdAt": {
|
|
934
|
+
"description": "ISO 8601 UTC timestamp when the item was created (e.g., \"2024-01-15T14:30:45.123Z\")",
|
|
935
|
+
"type": "string",
|
|
936
|
+
"format": "date-time",
|
|
937
|
+
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
|
|
938
|
+
},
|
|
939
|
+
"createdBy": {
|
|
940
|
+
"description": "Identifier of who created this item (user email, ID, display name, or \"ai-agent\"). AI agents should use \"ai-agent\" as the default value.",
|
|
941
|
+
"type": "string",
|
|
942
|
+
"maxLength": 50
|
|
943
|
+
},
|
|
944
|
+
"groupId": {
|
|
945
|
+
"description": "UUID v4 identifier of the group this item belongs to. If not provided, item is not grouped.",
|
|
946
|
+
"type": "string",
|
|
947
|
+
"maxLength": 36
|
|
948
|
+
}
|
|
949
|
+
},
|
|
950
|
+
"required": [
|
|
951
|
+
"id",
|
|
952
|
+
"content",
|
|
953
|
+
"createdAt"
|
|
954
|
+
],
|
|
955
|
+
"additionalProperties": false
|
|
956
|
+
}
|
|
957
|
+
}
|
|
958
|
+
},
|
|
959
|
+
"additionalProperties": false
|
|
960
|
+
}
|
|
961
|
+
},
|
|
962
|
+
"required": [
|
|
963
|
+
"schema"
|
|
964
|
+
],
|
|
965
|
+
"additionalProperties": false
|
|
966
|
+
}
|