cdktg
Version:
Agile Threat Modeling as Code
1,179 lines • 33.3 kB
JSON
{
"$schema": "https://threagile.io/schema#",
"id": "https://threagile.io/schema.json",
"title": "Threagile",
"description": "Agile Threat Modeling",
"type": "object",
"properties": {
"threagile_version": {
"description": "Version of the Threagile toolkit",
"type": "string"
},
"title": {
"description": "Title of the model",
"type": "string"
},
"date": {
"description": "Date of the model",
"type": [
"string",
"null"
],
"format": "date"
},
"author": {
"description": "Author of the model",
"type": "object",
"properties": {
"name": {
"description": "Author name",
"type": [
"string",
"null"
]
},
"homepage": {
"description": "Author homepage",
"type": [
"string",
"null"
]
}
},
"required": [
"name"
]
},
"management_summary_comment": {
"description": "Individual management summary for the report",
"type": [
"string",
"null"
]
},
"business_criticality": {
"description": "Business criticality of the target",
"type": "string",
"enum": [
"archive",
"operational",
"important",
"critical",
"mission-critical"
]
},
"business_overview": {
"description": "Individual business overview for the report",
"type": "object",
"properties": {
"description": {
"description": "Individual business overview for the report",
"type": [
"string",
"null"
]
},
"images": {
"description": "Custom images for the report",
"type": [
"array",
"null"
],
"uniqueItems": true
}
}
},
"technical_overview": {
"description": "Individual technical overview for the report",
"type": "object",
"properties": {
"description": {
"description": "Individual technical overview for the report",
"type": [
"string",
"null"
]
},
"images": {
"description": "Custom images for the report",
"type": [
"array",
"null"
],
"uniqueItems": true
}
}
},
"questions": {
"description": "Custom questions for the report",
"type": [
"object",
"null"
],
"uniqueItems": true
},
"abuse_cases": {
"description": "Custom abuse cases for the report",
"type": [
"object",
"null"
],
"uniqueItems": true
},
"security_requirements": {
"description": "Custom security requirements for the report",
"type": [
"object",
"null"
],
"uniqueItems": true
},
"tags_available": {
"description": "Tags available",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"type": "string"
}
},
"data_assets": {
"description": "Data assets",
"type": "object",
"uniqueItems": true,
"additionalProperties": {
"type": "object",
"properties": {
"id": {
"description": "ID",
"type": "string"
},
"description": {
"description": "Description",
"type": [
"string",
"null"
]
},
"usage": {
"description": "Usage",
"type": "string",
"enum": [
"business",
"devops"
]
},
"tags": {
"description": "Tags",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"type": "string"
}
},
"origin": {
"description": "Origin",
"type": [
"string",
"null"
]
},
"owner": {
"description": "Owner",
"type": [
"string",
"null"
]
},
"quantity": {
"description": "Quantity",
"type": "string",
"enum": [
"very-few",
"few",
"many",
"very-many"
]
},
"confidentiality": {
"description": "Confidentiality",
"type": "string",
"enum": [
"public",
"internal",
"restricted",
"confidential",
"strictly-confidential"
]
},
"integrity": {
"description": "Integrity",
"type": "string",
"enum": [
"archive",
"operational",
"important",
"critical",
"mission-critical"
]
},
"availability": {
"description": "Availability",
"type": "string",
"enum": [
"archive",
"operational",
"important",
"critical",
"mission-critical"
]
},
"justification_cia_rating": {
"description": "Justification of the rating",
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"description",
"usage",
"quantity",
"confidentiality",
"integrity",
"availability"
]
}
},
"technical_assets": {
"description": "Technical assets",
"type": "object",
"uniqueItems": true,
"additionalProperties": {
"type": "object",
"properties": {
"id": {
"description": "ID",
"type": "string"
},
"description": {
"description": "Description",
"type": [
"string",
"null"
]
},
"type": {
"description": "Type",
"type": "string",
"enum": [
"external-entity",
"process",
"datastore"
]
},
"usage": {
"description": "Usage",
"type": "string",
"enum": [
"business",
"devops"
]
},
"used_as_client_by_human": {
"description": "Used as client by human",
"type": "boolean"
},
"out_of_scope": {
"description": "Out of scope",
"type": "boolean"
},
"justification_out_of_scope": {
"description": "Justification of out of scope",
"type": [
"string",
"null"
]
},
"size": {
"description": "Size",
"type": "string",
"enum": [
"system",
"service",
"application",
"component"
]
},
"technology": {
"description": "Technology",
"type": "string",
"enum": [
"unknown-technology",
"client-system",
"browser",
"desktop",
"mobile-app",
"devops-client",
"web-server",
"web-application",
"application-server",
"database",
"file-server",
"local-file-system",
"erp",
"cms",
"web-service-rest",
"web-service-soap",
"ejb",
"search-index",
"search-engine",
"service-registry",
"reverse-proxy",
"load-balancer",
"build-pipeline",
"sourcecode-repository",
"artifact-registry",
"code-inspection-platform",
"monitoring",
"ldap-server",
"container-platform",
"batch-processing",
"event-listener",
"identity-provider",
"identity-store-ldap",
"identity-store-database",
"tool",
"cli",
"task",
"function",
"gateway",
"iot-device",
"message-queue",
"stream-processing",
"service-mesh",
"data-lake",
"report-engine",
"ai",
"mail-server",
"vault",
"hsm",
"waf",
"ids",
"ips",
"scheduler",
"mainframe",
"block-storage",
"library"
]
},
"tags": {
"description": "Tags",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"type": "string"
}
},
"internet": {
"description": "Internet",
"type": "boolean"
},
"machine": {
"description": "Machine",
"type": "string",
"enum": [
"physical",
"virtual",
"container",
"serverless"
]
},
"encryption": {
"description": "Encryption",
"type": "string",
"enum": [
"none",
"transparent",
"data-with-symmetric-shared-key",
"data-with-asymmetric-shared-key",
"data-with-enduser-individual-key"
]
},
"owner": {
"description": "Owner",
"type": [
"string",
"null"
]
},
"confidentiality": {
"description": "Confidentiality",
"type": "string",
"enum": [
"public",
"internal",
"restricted",
"confidential",
"strictly-confidential"
]
},
"integrity": {
"description": "Integrity",
"type": "string",
"enum": [
"archive",
"operational",
"important",
"critical",
"mission-critical"
]
},
"availability": {
"description": "Availability",
"type": "string",
"enum": [
"archive",
"operational",
"important",
"critical",
"mission-critical"
]
},
"justification_cia_rating": {
"description": "Justification of the rating",
"type": [
"string",
"null"
]
},
"multi_tenant": {
"description": "Multi tenant",
"type": "boolean"
},
"redundant": {
"description": "Redundant",
"type": "boolean"
},
"custom_developed_parts": {
"description": "Custom developed parts",
"type": "boolean"
},
"data_assets_processed": {
"description": "Data assets processed",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"type": "string"
}
},
"data_assets_stored": {
"description": "Data assets stored",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"type": "string"
}
},
"data_formats_accepted": {
"description": "Data formats accepted",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"type": "string",
"enum": [
"json",
"xml",
"serialization",
"file",
"csv"
]
}
},
"diagram_tweak_order": {
"description": "diagram tweak order (affects left to right positioning)",
"type": "integer"
},
"communication_links": {
"description": "Communication links",
"type": [
"object",
"null"
],
"uniqueItems": true,
"additionalProperties": {
"type": "object",
"properties": {
"target": {
"description": "Target",
"type": "string"
},
"description": {
"description": "Description",
"type": [
"string",
"null"
]
},
"protocol": {
"description": "Protocol",
"type": "string",
"enum": [
"unknown-protocol",
"http",
"https",
"ws",
"wss",
"reverse-proxy-web-protocol",
"reverse-proxy-web-protocol-encrypted",
"mqtt",
"jdbc",
"jdbc-encrypted",
"odbc",
"odbc-encrypted",
"sql-access-protocol",
"sql-access-protocol-encrypted",
"nosql-access-protocol",
"nosql-access-protocol-encrypted",
"binary",
"binary-encrypted",
"text",
"text-encrypted",
"ssh",
"ssh-tunnel",
"smtp",
"smtp-encrypted",
"pop3",
"pop3-encrypted",
"imap",
"imap-encrypted",
"ftp",
"ftps",
"sftp",
"scp",
"ldap",
"ldaps",
"jms",
"nfs",
"smb",
"smb-encrypted",
"local-file-access",
"nrpe",
"xmpp",
"iiop",
"iiop-encrypted",
"jrmp",
"jrmp-encrypted",
"in-process-library-call",
"container-spawning"
]
},
"authentication": {
"description": "Authentication",
"type": "string",
"enum": [
"none",
"credentials",
"session-id",
"token",
"client-certificate",
"two-factor",
"externalized"
]
},
"authorization": {
"description": "Authorization",
"type": "string",
"enum": [
"none",
"technical-user",
"enduser-identity-propagation"
]
},
"tags": {
"description": "Tags",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"type": "string"
}
},
"vpn": {
"description": "VPN",
"type": "boolean"
},
"ip_filtered": {
"description": "IP filtered",
"type": "boolean"
},
"readonly": {
"description": "readonly",
"type": "boolean"
},
"usage": {
"description": "Usage",
"type": "string",
"enum": [
"business",
"devops"
]
},
"data_assets_sent": {
"description": "Data assets sent",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"type": "string"
}
},
"data_assets_received": {
"description": "Data assets received",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"type": "string"
}
},
"diagram_tweak_weight": {
"description": "diagram tweak weight",
"type": "integer"
},
"diagram_tweak_constraint": {
"description": "diagram tweak constraint",
"type": "boolean"
}
},
"required": [
"target",
"description",
"protocol",
"authentication",
"authorization",
"vpn",
"ip_filtered",
"readonly",
"usage",
"data_assets_sent",
"data_assets_received"
]
}
},
"required": [
"id",
"description",
"type",
"usage",
"used_as_client_by_human",
"out_of_scope",
"size",
"technology",
"internet",
"machine",
"encryption",
"owner",
"confidentiality",
"integrity",
"availability",
"multi_tenant",
"redundant",
"custom_developed_parts",
"data_assets_processed",
"data_assets_stored",
"data_formats_accepted",
"communication_links"
]
}
}
},
"trust_boundaries": {
"description": "Trust boundaries",
"type": "object",
"uniqueItems": true,
"additionalProperties": {
"type": "object",
"properties": {
"id": {
"description": "ID",
"type": "string"
},
"description": {
"description": "Description",
"type": [
"string",
"null"
]
},
"type": {
"description": "Type",
"type": "string",
"enum": [
"network-on-prem",
"network-dedicated-hoster",
"network-virtual-lan",
"network-cloud-provider",
"network-cloud-security-group",
"network-policy-namespace-isolation",
"execution-environment"
]
},
"tags": {
"description": "Tags",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"type": "string"
}
},
"technical_assets_inside": {
"description": "Technical assets inside",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"type": "string"
}
},
"trust_boundaries_nested": {
"description": "Trust boundaries nested",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"type": "string"
}
}
},
"required": [
"id",
"description",
"type",
"technical_assets_inside",
"trust_boundaries_nested"
]
}
},
"shared_runtimes": {
"description": "Shared runtimes",
"type": "object",
"uniqueItems": true,
"additionalProperties": {
"type": "object",
"properties": {
"id": {
"description": "ID",
"type": "string"
},
"description": {
"description": "Description",
"type": [
"string",
"null"
]
},
"tags": {
"description": "Tags",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"type": "string"
}
},
"technical_assets_running": {
"description": "Technical assets running",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"type": "string"
}
}
},
"required": [
"id",
"description",
"technical_assets_running"
]
}
},
"individual_risk_categories": {
"description": "Individual risk categories",
"type": [
"object",
"null"
],
"uniqueItems": true,
"additionalProperties": {
"type": "object",
"properties": {
"id": {
"description": "ID",
"type": "string"
},
"description": {
"description": "Description",
"type": [
"string",
"null"
]
},
"impact": {
"description": "Impact",
"type": "string"
},
"asvs": {
"description": "ASVS",
"type": "string"
},
"cheat_sheet": {
"description": "Cheat sheet",
"type": "string"
},
"action": {
"description": "Action",
"type": "string"
},
"mitigation": {
"description": "Mitigation",
"type": "string"
},
"check": {
"description": "Check",
"type": "string"
},
"function": {
"description": "Function",
"type": "string",
"enum": [
"business-side",
"architecture",
"development",
"operations"
]
},
"stride": {
"description": "STRIDE",
"type": "string",
"enum": [
"spoofing",
"tampering",
"repudiation",
"information-disclosure",
"denial-of-service",
"elevation-of-privilege"
]
},
"detection_logic": {
"description": "Detection logic",
"type": "string"
},
"risk_assessment": {
"description": "Risk assessment",
"type": "string"
},
"false_positives": {
"description": "False positives",
"type": "string"
},
"model_failure_possible_reason": {
"description": "Model failure possible reason",
"type": "boolean"
},
"cwe": {
"description": "CWE",
"type": "integer"
},
"risks_identified": {
"description": "Risks identified",
"type": "object",
"uniqueItems": true,
"additionalProperties": {
"type": "object",
"properties": {
"severity": {
"description": "Severity",
"type": "string",
"enum": [
"low",
"medium",
"elevated",
"high",
"critical"
]
},
"exploitation_likelihood": {
"description": "Exploitation likelihood",
"type": "string",
"enum": [
"unlikely",
"likely",
"very-likely",
"frequent"
]
},
"exploitation_impact": {
"description": "Exploitation impact",
"type": "string",
"enum": [
"low",
"medium",
"high",
"very-high"
]
},
"data_breach_probability": {
"description": "Data breach probability",
"type": "string",
"enum": [
"improbable",
"possible",
"probable"
]
},
"data_breach_technical_assets": {
"description": "Data breach technical assets",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"type": "string"
}
},
"most_relevant_data_asset": {
"description": "Most relevant data asset",
"type": [
"string",
"null"
]
},
"most_relevant_technical_asset": {
"description": "Most relevant technical asset",
"type": [
"string",
"null"
]
},
"most_relevant_communication_link": {
"description": "Most relevant communication link",
"type": [
"string",
"null"
]
},
"most_relevant_trust_boundary": {
"description": "Most relevant trust boundary",
"type": [
"string",
"null"
]
},
"most_relevant_shared_runtime": {
"description": "Most relevant shared runtime",
"type": [
"string",
"null"
]
}
}
}
}
},
"required": [
"id",
"description",
"impact",
"asvs",
"cheat_sheet",
"action",
"mitigation",
"check",
"function",
"stride",
"detection_logic",
"risk_assessment",
"false_positives",
"model_failure_possible_reason",
"cwe",
"risks_identified"
]
}
},
"risk_tracking": {
"description": "Risk tracking",
"type": [
"object",
"null"
],
"uniqueItems": true,
"additionalProperties": {
"type": "object",
"properties": {
"status": {
"description": "Status",
"type": "string",
"enum": [
"unchecked",
"in-discussion",
"accepted",
"in-progress",
"mitigated",
"false-positive"
]
},
"justification": {
"description": "Justification",
"type": [
"string",
"null"
]
},
"ticket": {
"description": "Ticket",
"type": [
"string",
"null"
]
},
"date": {
"description": "Date",
"type": [
"string",
"null"
],
"format": "date"
},
"checked_by": {
"description": "Checked by",
"type": [
"string",
"null"
]
}
},
"required": [
"status",
"justification",
"ticket",
"date",
"checked_by"
]
}
},
"diagram_tweak_suppress_edge_labels": {
"description": "Diagram tweak suppress edge labels",
"type": [
"boolean",
"null"
]
},
"diagram_tweak_layout_left_to_right": {
"description": "Diagram tweak layout left to right",
"type": [
"boolean",
"null"
]
},
"diagram_tweak_edge_layout": {
"description": "Diagram tweak edge layout",
"type": [
"string",
"null"
],
"enum": [
"",
"ortho",
"spline",
"polyline",
"false",
"curved"
]
},
"diagram_tweak_nodesep": {
"description": "Diagram tweak nodesep",
"type": [
"integer",
"null"
]
},
"diagram_tweak_ranksep": {
"description": "Diagram tweak ranksep",
"type": [
"integer",
"null"
]
},
"diagram_tweak_invisible_connections_between_assets": {
"description": "Diagram tweak invisible connections between assets",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"type": "string"
}
},
"diagram_tweak_same_rank_assets": {
"description": "Diagram tweak same rank assets",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"type": "string"
}
}
},
"required": [
"threagile_version",
"title",
"author",
"business_criticality",
"tags_available",
"data_assets",
"technical_assets",
"shared_runtimes"
]
}