Fullscreen diagram

Consolidated Security Assessment Report

Amazon ECS Fullstack App (Terraform Demo) — 2026-02-18
Methodology: STRIDE-LM + PASTA + OWASP Risk Rating | CVSS v3.1 | LINDDUN | SOC 2 / ISO 27001 / NIST CSF / PCI-DSS

I. Executive Summary

CONCERNING

This AWS ECS demo/reference architecture contains significant security gaps that make it unsuitable for production use without substantial hardening. While expected for a demonstration project, organizations forking this repository as a production starting point face serious risk. The assessment identified 26 unique findings across four specialist domains, with two CRITICAL-severity issues enabling full AWS account compromise via the CI/CD pipeline.

SeverityCountScoring System
CRITICAL2OWASP Risk Rating
HIGH10OWASP Risk Rating
MEDIUM11OWASP Risk Rating
LOW3OWASP Risk Rating
Total26

Top 3 Risks

1. Repository-Sourced Buildspec with Broad IAM (TM-004, CRITICAL, Score 25)

Any developer with GitHub push access can execute arbitrary commands with near-admin AWS permissions. This is a 4-step chain from git push to full AWS account compromise with zero gates at any step.

2. IAM PassRole on Wildcard Resource (TM-003, CRITICAL, Score 20)

Both the DevOps role and ECS task role can pass any IAM role in the account, enabling privilege escalation from any code execution context to full account admin.

3. No TLS on Public-Facing ALBs (TM-001, HIGH, Score 15)

All user traffic traverses the internet in plaintext. This enables traffic interception and response modification, including JavaScript injection into the SPA.

26
Components Assessed
25+
Data Flows Mapped
8
Trust Boundaries
5
Threat Actors Modeled
26
Unique Findings
Quick Wins (achievable in 1-2 days)

II. System Overview

System Purpose: AWS ECS Fargate-based fullstack web application serving a product catalog, deployed via Terraform. Designed as a demo/reference architecture demonstrating ECS + DevOps patterns. Not designed for production use, but commonly forked as a starting point.

Scope: Full system including 14 Terraform modules, Node.js/Express backend, Vue.js frontend, AWS CI/CD pipeline (CodePipeline, CodeBuild, CodeDeploy), networking (VPC, ALBs, Security Groups), IAM roles, and data stores (DynamoDB, S3, ECR). Out of scope: AWS account-level settings, GitHub organization settings, runtime vulnerability scanning, penetration testing.

LayerTechnologyVersionNotes
FrontendVue.js + Bootstrap-Vue2.6.11SPA served by Nginx
BackendNode.js + Express4.16.4API server with Swagger docs
Container RuntimeAWS FargateLATESTawsvpc network mode
Data StoreDynamoDBPAY_PER_REQUESTProduct catalog
Object StorageS3N/AAssets + Pipeline artifacts
CI/CDCodePipeline + CodeBuild + CodeDeployV1 actionsBlue/Green deployment
IaCTerraform≥ 0.13AWS provider ~> 3.38
AWS SDKaws-sdk v22.876.0Outdated; v3 recommended

Deployment Model: Single AWS region, single VPC (10.120.0.0/16), public + private subnets across 2 AZs. Fargate launch type with Blue/Green deployment via CodeDeploy.

III. Architecture Diagram

L1 Structural Architecture Diagram — Amazon ECS Fullstack App

Figure 1: L1 Structural Architecture Diagram — Amazon ECS Fullstack App

Component Metadata

ComponentTypeTech StackPort/ProtocolSubnet/ZoneAuth MethodEncryptionNotes
Client ALBLoad BalancerAWS ALB80/HTTPPublic SubnetsNoneNone (HTTP only)HTTPS scaffold exists but disabled
Server ALBLoad BalancerAWS ALB80/HTTPPublic SubnetsNoneNone (HTTP only)HTTPS scaffold exists but disabled
Client ECSComputeFargate + Nginx80/HTTPPrivate Client SubnetsNoneNoneVue.js SPA
Server ECSComputeFargate + Node.js/Express3001/HTTPPrivate Server SubnetsNoneNoneCORS: all origins
DynamoDBData StoreAWS DynamoDB443/HTTPSAWS ManagedIAM (ECS Task Role)AWS-owned keyProduct catalog
S3 AssetsData StoreAWS S3443/HTTPSAWS ManagedIAMDefault SSE-S3No public_access_block
S3 PipelineData StoreAWS S3443/HTTPSAWS ManagedIAMDefault SSE-S3force_destroy=true
ECRRegistryAWS ECR443/HTTPSAWS ManagedIAMDefault encryptionMUTABLE tags
CloudWatchMonitoringAWS CloudWatch443/HTTPSAWS ManagedIAMDefault encryption30-day retention
CodePipelineCI/CDAWS CodePipeline V1443/HTTPSAWS ManagedIAM (DevOps Role)AWS API encryptionNo approval gates
CodeBuildCI/CDAWS CodeBuild443/HTTPSAWS ManagedIAM (DevOps Role)AWS API encryptionPrivileged Docker mode
CodeDeployCI/CDAWS CodeDeploy443/HTTPSAWS ManagedIAM (CodeDeploy Role)AWS API encryptionBlue/Green + auto-rollback
SNSNotificationAWS SNS443/HTTPSAWS ManagedIAMNo encryptionNo subscribers

Trust Boundaries

BoundaryTrust LevelDescription
Internet / Public NetworkUntrustedAll traffic from end users and external attackers. No filtering before ALBs except AWS Shield Standard.
VPC Perimeter (10.120.0.0/16)Low-MediumNetwork boundary for all application components. IGW and NAT GW are crossing points.
Public SubnetsLowALBs are internet-facing on HTTP:80. SG allows 0.0.0.0/0:80 ingress.
Private Client SubnetsMediumClient ECS tasks. SG ingress restricted to Client ALB SG only.
Private Server SubnetsMediumServer ECS tasks. SG ingress restricted to Server ALB SG only.
AWS Managed ServicesHighDynamoDB, S3, ECR, CloudWatch, SNS. IAM-based access control.
CI/CD PipelineElevatedCodePipeline, CodeBuild, CodeDeploy. DevOps IAM role with broad permissions.
External ServicesVendor TrustGitHub, npm Registry, Public ECR. OAuth token and HTTPS connections.

IV. Risk Overlay Diagram

L4 Risk Overlay Diagram — Kill chains and severity coloring

Figure 2: L4 Risk Overlay Diagram — Kill chains and severity coloring applied

Component Risk Mapping

ComponentRisk LevelFinding IDsSTRIDE-LM CategoriesTop CWE
CodeBuildCRITICALTM-004, TM-013, TM-025S, T, E, LMCWE-269
DevOpsRoleCRITICALTM-003, TM-004E, LMCWE-269
ECSTaskRoleCRITICALTM-003E, LMCWE-269
GitHubHIGHTM-023T, RCWE-862
CodePipelineHIGHTM-014T, ECWE-862
Client ALBHIGHTM-001, TM-007I, DCWE-311
Server ALBHIGHTM-001, TM-002, TM-007S, I, DCWE-311, CWE-306
Server ECSHIGHTM-002, TM-008, TM-012, TM-015, TM-016, TM-017, TM-022S, T, I, E, LMCWE-306, CWE-209, CWE-269
Client ECSHIGHTM-017, TM-022I, E, LMCWE-269
ECRHIGHTM-006T
GitHubTokenHIGHTM-005ICWE-312
TFStateHIGHTM-005ICWE-312
DynamoDBHIGHTM-010, TM-024DCWE-770
SG_ECSHIGHTM-022I, LMCWE-269
S3 AssetsMEDIUMTM-009T, ICWE-732
S3 PipelineMEDIUMTM-009T, ICWE-732
CloudWatchMEDIUMTM-021, TM-026RCWE-390
npm RegistryMEDIUMTM-025TCWE-269
Public ECRMEDIUMTM-015T
SNSLOWTM-020RCWE-311

Critical Data Flow Highlights

Data FlowRiskIssue
User → Client/Server ALBHIGHAll traffic HTTP plaintext; no TLS encryption
GitHub → CodePipeline → CodeBuildCRITICALKill Chain 1: Push malicious buildspec, auto-triggered, broad IAM
npm Registry → CodeBuild → ECR → ECSHIGHKill Chain 2: Supply chain compromise to production
GitHubToken → CodePipelineHIGHOAuth token in plaintext state; single point of credential compromise
ECS Tasks → 0.0.0.0/0 (egress)HIGHUnrestricted egress enables C2 and data exfiltration

V. Asset Inventory

Data Assets

AssetClassificationStorage LocationEncryption at RestEncryption in TransitAccess ControlsRetention
Product catalog (id, title, path)PUBLICDynamoDBAWS-owned keyHTTPS (SDK)IAM (ECS Task Role)Indefinite
Product imagesPUBLICS3 AssetsDefault SSE-S3HTTP (via URL)ACL privateIndefinite
CI/CD artifactsINTERNALS3 PipelineDefault SSE-S3HTTPS (AWS API)IAM (DevOps Role)Indefinite (force_destroy)
Docker imagesINTERNALECRDefault encryptionHTTPS (AWS API)IAMIndefinite
Application logsINTERNALCloudWatchDefault encryptionHTTPS (AWS API)IAM30 days
GitHub OAuth tokenRESTRICTEDTF state (local), CodePipeline configPlaintextCLI / AWS APIFile system / IAMIndefinite
Terraform stateRESTRICTEDLocal filesystemNoneN/A (local)File systemIndefinite
Swagger API docsPUBLIC/api/docs endpointN/AHTTP (plaintext)NoneRuntime

Data Flow Summary

SourceDestinationProtocolData TypeSensitivityFinding Refs
End UserClient ALBHTTPSPA requestsPUBLICTM-001
End UserServer ALBHTTPAPI requestsPUBLICTM-001, TM-002
Server ECSDynamoDBHTTPSSDK queriesINTERNAL
Server ECSS3 AssetsHTTPSObject URLsPUBLIC
GitHubCodePipelineHTTPSSource codeINTERNALTM-004, TM-023
CodeBuildECRHTTPSDocker imagesINTERNALTM-006
ECS Tasks0.0.0.0/0ALLUnrestricted egressINTERNALTM-022

VI. Threat Actor Profiles

TA-1: Opportunistic Attacker / Script Kiddie

TypeExternal
MotivationCuriosity, notoriety, easy financial gain
Capability2/5
Access LevelUnauthenticated external (internet)
Linked FindingsTM-001, TM-002, TM-007, TM-008, TM-012, TM-015, TM-016

TA-2: Malicious Insider / Compromised Developer

TypeInternal
MotivationRevenge, financial gain, or compromised account
Capability3/5
Access LevelGitHub repository write access, potential AWS console access
Linked FindingsTM-003, TM-004, TM-005, TM-013, TM-014, TM-023

TA-3: Supply Chain Attacker

TypeExternal (indirect)
MotivationFinancial gain, espionage
Capability4/5
Access LevelIndirect via npm packages or Docker base images
Linked FindingsTM-006, TM-015, TM-017, TM-025

TA-4: Network-Position Attacker (MitM)

TypeExternal
MotivationData interception, session hijacking
Capability3/5
Access LevelNetwork position between user and ALB
Linked FindingsTM-001

TA-5: Negligent Insider

TypeInternal
MotivationUnintentional
Capability1/5 (inadvertent)
Access LevelDeveloper or DevOps access
Linked FindingsTM-005, TM-009

VII. Findings

CRITICAL TM-004: Repository-Sourced Buildspec with Broad IAM Permissions

IDTM-004
Affected Component(s)CodeBuild, CodePipeline, DevOpsRole, GitHub
STRIDE-LMT, E, LM
MITRE ATT&CKT1195 (Supply Chain Compromise)
CWECWE-269
CIA ImpactC: H · I: H · A: H
PASTA L×I5 × 5 = 25 (CRITICAL)
ConfidenceHIGH
RemediationR-012, R-013, R-014
SourcesThreat Model (TM-004), Code Review (CR-002 CVSS 9.8), Compliance (GRC-009)
Attack Scenario
  1. Developer pushes modified buildspec to main branch (no branch protection)
  2. CodePipeline polls GitHub, detects change, triggers CodeBuild
  3. Buildspec commands execute in privileged Docker container with DevOps IAM role
  4. Attacker exfiltrates AWS credentials with PassRole * capability
  5. Full AWS account compromise achieved

Remediation: Store buildspec inline in Terraform or in a restricted repo (R-012). Enable GitHub branch protection (R-013). Add manual approval in pipeline (R-014).

CRITICAL TM-003: Overly Broad IAM PassRole Permissions (*)

IDTM-003
Affected Component(s)DevOpsRole, ECSTaskRole, CodeBuild, ServerECS
STRIDE-LME, LM
MITRE ATT&CKT1078 (Valid Accounts)
CWECWE-269
CIA ImpactC: H · I: H · A: H
PASTA L×I4 × 5 = 20 (CRITICAL)
ConfidenceHIGH
RemediationR-011
SourcesThreat Model (TM-003), Code Review (CR-001 CVSS 9.9), Compliance (GRC-004)
Attack Scenario
  1. Achieve code execution in CodeBuild or Server ECS
  2. Enumerate IAM roles via aws iam list-roles
  3. Use iam:PassRole to create ECS task with high-privilege role
  4. Run task; retrieve credentials from task metadata endpoint
  5. Full account takeover

Remediation: Scope PassRole to specific role ARNs. Remove PassRole from ECS task role entirely (R-011).

HIGH TM-023: No Branch Protection on Repository

IDTM-023
Affected Component(s)GitHub, CodePipeline
STRIDE-LMT, R
MITRE ATT&CK / CWET1195 / CWE-862
PASTA L×I4 × 4 = 16 (HIGH)
ConfidenceMEDIUM
RemediationR-013

Remediation: Enable GitHub branch protection on main with required reviews, status checks, and force-push prevention.

HIGH TM-013: CodeBuild Privileged Docker Mode

IDTM-013
Affected Component(s)CodeBuild
STRIDE-LME, LM
MITRE ATT&CK / CWET1068 / CWE-269
PASTA L×I4 × 4 = 16 (HIGH)
ConfidenceHIGH
RemediationR-012 (secure buildspec mitigates privileged mode risk)

HIGH TM-014: No Pipeline Approval Gates or Security Scanning

IDTM-014
Affected Component(s)CodePipeline, CodeBuild, CodeDeploy
STRIDE-LMT, R
MITRE ATT&CK / CWET1195 / CWE-862
PASTA L×I4 × 4 = 16 (HIGH)
ConfidenceHIGH
RemediationR-014, R-024

HIGH TM-001: No TLS/HTTPS on Public-Facing ALBs

IDTM-001
Affected Component(s)ClientALB, ServerALB
STRIDE-LMI, T
CWECWE-311
PASTA L×I5 × 3 = 15 (HIGH)
ConfidenceHIGH
RemediationR-015
SourcesThreat Model (TM-001), Code Review (CR-004 CVSS 7.5), Compliance (GRC-001), Privacy (PA-001)

Note: Compliance and Privacy assessments rate this CRITICAL due to automatic audit failure and GDPR Art. 32 requirements. Security assessment rates HIGH given current public-only data context.

HIGH TM-002: Complete Absence of Authentication and Authorization

IDTM-002
Affected Component(s)ServerALB, ServerECS, ClientALB, ClientECS
STRIDE-LMS, E
MITRE ATT&CK / CWET1190 / CWE-306
PASTA L×I5 × 3 = 15 (HIGH)
ConfidenceHIGH
RemediationR-028

HIGH TM-005: GitHub OAuth Token in Terraform State

IDTM-005
Affected Component(s)TFState, GitHubToken, CodePipeline
STRIDE-LMI, S
MITRE ATT&CK / CWET1552 / CWE-312
PASTA L×I3 × 5 = 15 (HIGH)
ConfidenceHIGH
RemediationR-016, R-017
SourcesThreat Model (TM-005), Code Review (CR-003 CVSS 9.1), Compliance (GRC-003), Privacy (PA-009)

HIGH TM-006: Mutable ECR Image Tags + Latest Pattern

IDTM-006
Affected Component(s)ECR, CodeBuild, ServerECS, ClientECS
STRIDE-LMT
MITRE ATT&CK / CWET1195
PASTA L×I3 × 5 = 15 (HIGH)
ConfidenceHIGH (escalated from MEDIUM via cross-agent validation)
RemediationR-001, R-030

HIGH TM-007: No WAF or Rate Limiting

IDTM-007
Affected Component(s)ClientALB, ServerALB
STRIDE-LMD
MITRE ATT&CK / CWET1498 / CWE-770
PASTA L×I4 × 3 = 12 (HIGH)
ConfidenceHIGH
RemediationR-018

HIGH TM-022: Unrestricted Egress from ECS Tasks

IDTM-022
Affected Component(s)ServerECS, ClientECS, SG_ECS
STRIDE-LMI, LM
MITRE ATT&CK / CWET1048 / CWE-269
PASTA L×I3 × 4 = 12 (HIGH)
ConfidenceHIGH
RemediationR-019

HIGH TM-024: No Billing Alarm / Cost Detection

IDTM-024
Affected Component(s)DynamoDB, ServerECS
STRIDE-LMD
MITRE ATT&CK / CWET1498 / CWE-770
PASTA L×I4 × 3 = 12 (HIGH)
ConfidenceHIGH
RemediationR-005

MEDIUM TM-009: S3 Buckets Missing Security Controls

PASTA L×I3 × 3 = 9 (MEDIUM) | Confidence: HIGH (escalated)
AffectedS3Assets, S3Pipeline | CWE-732 | T1530
RemediationR-002, R-031, R-032

MEDIUM TM-011: No VPC Flow Logs

PASTA L×I3 × 3 = 9 (MEDIUM) | Confidence: HIGH
AffectedVPC | CWE-390 | T1562
RemediationR-020

MEDIUM TM-015: Outdated and Vulnerable Dependencies

PASTA L×I3 × 3 = 9 (MEDIUM) | Confidence: HIGH (escalated)
AffectedServerECS, ClientECS, CodeBuild | T1195
RemediationR-025

MEDIUM TM-017: ECS Container Hardening Deficiencies

PASTA L×I3 × 3 = 9 (MEDIUM) | Confidence: HIGH
AffectedServerECS, ClientECS | CWE-269 | T1068
RemediationR-022

MEDIUM TM-012: Error Handler Information Leakage + Bug

PASTA L×I4 × 2 = 8 (MEDIUM) | Confidence: HIGH
AffectedServerECS | CWE-209 | T1190
RemediationR-009

MEDIUM TM-025: npm install vs npm ci

PASTA L×I2 × 4 = 8 (MEDIUM) | Confidence: HIGH
AffectedCodeBuild, ServerECS, ClientECS | T1195
RemediationR-004

MEDIUM TM-008: Unrestricted CORS Configuration

PASTA L×I3 × 2 = 6 (MEDIUM) | Confidence: HIGH
AffectedServerECS | CWE-732 | T1190
RemediationR-010

MEDIUM TM-018: Single NAT Gateway (SPOF)

PASTA L×I2 × 3 = 6 (MEDIUM) | Confidence: HIGH
AffectedVPC, ServerECS, ClientECS | CWE-400 | T1498
RemediationR-007, R-027

MEDIUM TM-021: No Container Insights / Monitoring

PASTA L×I3 × 2 = 6 (MEDIUM) | Confidence: HIGH
AffectedCloudWatch, ServerECS, ClientECS | CWE-390 | T1562
RemediationR-021

MEDIUM TM-026: No CloudTrail Data Events

PASTA L×I3 × 2 = 6 (MEDIUM) | Confidence: HIGH
AffectedDynamoDB, S3Assets, S3Pipeline | CWE-390 | T1562
RemediationR-023

MEDIUM TM-016: Swagger Docs Publicly Exposed

PASTA L×I5 × 1 = 5 (MEDIUM) | Confidence: HIGH
AffectedServerECS, ServerALB | CWE-200 | T1595
RemediationR-026

LOW TM-010: DynamoDB Missing PITR + CMK

PASTA L×I2 × 2 = 4 (LOW) | Confidence: HIGH
AffectedDynamoDB | CWE-311 | T1485
RemediationR-003

LOW TM-019: No VPC Endpoints

PASTA L×I2 × 2 = 4 (LOW) | Confidence: HIGH
AffectedServerECS, ClientECS | CWE-311
RemediationR-007, R-029

LOW TM-020: SNS No Subscribers / Encryption

PASTA L×I3 × 1 = 3 (LOW) | Confidence: HIGH
AffectedSNS | CWE-311 | T1562
RemediationR-008, R-033

Total: 26 findings (2 critical, 10 high, 11 medium, 3 low)

VIII. Remediation Roadmap

Wave 1: Quick Wins

1-2 days | LOW effort

  • R-001: ECR immutable tags
  • R-002: S3 public_access_block
  • R-003: DynamoDB PITR
  • R-004: npm ci in Dockerfiles
  • R-005: Billing alarm
  • R-006: ECR scan-on-push
  • R-007: VPC gateway endpoints
  • R-008: SNS subscription
  • R-009: Fix error handler
  • R-010: Configure CORS origin

Wave 2: Critical Fixes

1-2 sprints | MEDIUM effort

  • R-011: Scope IAM PassRole
  • R-012: Secure buildspec
  • R-013: Branch protection
  • R-014: Pipeline approval
  • R-015: Enable HTTPS
  • R-016: CodeStar Connections
  • R-017: Remote TF backend
  • R-018: WAF on ALBs
  • R-019: Restrict SG egress

Wave 3: Hardening

2-4 sprints | MEDIUM effort

  • R-020: VPC Flow Logs
  • R-021: Container Insights
  • R-022: Container hardening
  • R-023: CloudTrail data events
  • R-024: Pipeline scanning
  • R-025: Update dependencies
  • R-026: Disable Swagger (prod)
  • R-027: Multi-AZ NAT GW

Wave 4: Production Ready

Before launch | HIGH effort

  • R-028: Implement auth
  • R-029: VPC interface endpoints
  • R-030: Git SHA image tags
  • R-031: Remove force_destroy
  • R-032: S3 versioning
  • R-033: SNS encryption

Dependency Chains

R-007 → R-019 (VPC endpoints reduce egress requirements)
R-013 → R-014 (branch protection before pipeline gates)
R-013 → R-016 (branch protection before connection migration)
R-014 → R-024 (pipeline gates before scan stages)
R-001 → R-030 (immutable tags before SHA-based tagging)

IX. Networking & Infrastructure Data

VPC/Network Topology

Single VPC (10.120.0.0/16) in one AWS region with 2 public subnets, 2 private client subnets, and 2 private server subnets across 2 Availability Zones. Internet Gateway for public subnet access. Single NAT Gateway in public subnet AZ1 for private subnet outbound.

Security Group Rules

SG NameDirectionProtocolPort RangeSource/DestinationDescription
ALB SGs (Client + Server)IngressTCP800.0.0.0/0HTTP from internet
ECS Client SGIngressTCP80Client ALB SGHTTP from Client ALB only
ECS Server SGIngressTCP3001Server ALB SGHTTP from Server ALB only
All ECS SGsEgressALLALL0.0.0.0/0Unrestricted egress (TM-022)

IAM Role Summary

Role NameKey PoliciesTrustUsed ByLeast Privilege
ECS Execution RoleECR pull, CloudWatch Logsecs-tasks.amazonaws.comClient ECS, Server ECSAppropriate
ECS Task RoleDynamoDB (read), S3 (read/list), iam:PassRole *ecs-tasks.amazonaws.comServer ECSVIOLATION
DevOps RoleS3 *, ECS *, ECR, CodeDeploy, iam:PassRole *codebuild/codepipeline.amazonaws.comCodeBuild, CodePipelineVIOLATION
CodeDeploy RoleECS, ALB, S3, SNScodedeploy.amazonaws.comCodeDeployAppropriate

X. Compliance Mapping

Framework Coverage Matrix

FrameworkTotal ControlsCompliantPartialNon-CompliantN/ACoverage %
SOC 2 (CC criteria)33362229%
ISO 27001:2022 (Annex A)9358413910%
NIST CSF 2.01064938558%
PCI-DSS v4.0 (if applicable)641348122%

The system exhibits a pre-compliance posture (~12/100 overall readiness). The architecture provides a sound structural foundation (VPC segmentation, private subnets, Fargate isolation) but lacks nearly all security controls required for production compliance. See the full compliance gap analysis for detailed control-by-control mapping.

XI. Privacy Assessment

Data Inventory Summary

Despite being a product catalog demo, the system processes: network identifiers (IP addresses via ALB/Nginx logs), browsing behavior (CloudWatch/access logs), user credentials entered in the demo login form, developer PII (name/email in Swagger and package.json), error context in logs, and infrastructure metadata in build environment variables.

LINDDUN Findings

IDCategoryData FlowRisk LevelDescriptionRecommendation
PA-001DetectabilityUser → ALBsCRITICALAll personal data transmitted in plaintext (no TLS)Enable HTTPS on all ALBs
PA-002UnawarenessUser → Login.vueCRITICAL*Deceptive login form collects credentials without processingRemove form or add prominent warning
PA-003Non-complianceAll routesHIGHNo privacy notice or transparency mechanismCreate GDPR Art. 13 compliant privacy notice
PA-004Identifiability/api/docsHIGHDeveloper email exposed in public Swagger endpointRemove personal email; restrict endpoint
PA-005Non-complianceAll dataHIGHNo data subject rights infrastructureImplement SAR handling process
PA-006DisclosureError handlerMEDIUMError handler leaks internal detailsSanitize error responses
PA-007LinkabilityCloudWatch logsMEDIUMLogs contain IP addresses (personal data)Implement log anonymization
PA-008Non-complianceAWS processingMEDIUMNo DPA documentation for AWSExecute and document AWS DPA
PA-009DisclosureTF stateLOWGitHub PAT in plaintext stateMigrate to CodeStar Connections
PA-010LinkabilityAPI requestsLOWUnrestricted CORSConfigure specific origin

*PA-002 flagged as false positive candidate by validation-specialist. Consider downgrading to HIGH.

XII. Positive Observations

Well-Implemented Security Controls

XIII. Assumptions & Limitations

Scope Boundaries

Information Gaps

Confidence Disclaimers

XIV. Appendices

A. Methodology Notes

STRIDE-LM Categories

S=Spoofing, T=Tampering, R=Repudiation, I=Information Disclosure, D=Denial of Service, E=Elevation of Privilege, LM=Lateral Movement

PASTA Scoring (1-5)

Likelihood: 1=Rare, 2=Unlikely, 3=Possible, 4=Likely, 5=Almost Certain
Impact: 1=Negligible, 2=Minor, 3=Moderate, 4=Major, 5=Catastrophic

OWASP Risk Rating Bands (5x5 matrix)

CRITICAL: 20-25 | HIGH: 12-19 | MEDIUM: 6-11 | LOW: 1-5

CVSS v3.1 (Code Review)

CRITICAL: 9.0-10.0 | HIGH: 7.0-8.9 | MEDIUM: 4.0-6.9 | LOW: 0.1-3.9

B. Framework Reference Table

MITRE ATT&CK Techniques

IDNameFindings
T1190Exploit Public-Facing ApplicationTM-002, TM-008, TM-012
T1078Valid AccountsTM-003
T1195Supply Chain CompromiseTM-004, TM-006, TM-014, TM-015, TM-023, TM-025
T1552Unsecured CredentialsTM-005
T1530Data from Cloud StorageTM-009
T1498Network DoSTM-007, TM-018, TM-024
T1562Impair DefensesTM-011, TM-020, TM-021, TM-026
T1595Active ScanningTM-016
T1068Exploitation for Privilege EscalationTM-013, TM-017
T1485Data DestructionTM-010
T1048Exfiltration Over Alternative ProtocolTM-022

CWE IDs

IDNameFindings
CWE-269Improper Privilege ManagementTM-003, TM-004, TM-013, TM-017, TM-022
CWE-311Missing Encryption of Sensitive DataTM-001, TM-010, TM-019, TM-020
CWE-312Cleartext Storage of Sensitive InformationTM-005
CWE-306Missing Authentication for Critical FunctionTM-002
CWE-862Missing AuthorizationTM-014, TM-023
CWE-732Incorrect Permission AssignmentTM-008, TM-009
CWE-770Allocation of Resources Without LimitsTM-007, TM-024
CWE-209Error Message Containing Sensitive InfoTM-012
CWE-200Exposure of Sensitive InformationTM-016
CWE-390Detection of Error Condition Without ActionTM-011, TM-021, TM-026
CWE-400Uncontrolled Resource ConsumptionTM-018
C. QA Corrections Log
IssueLocationSeverityCorrection Applied
HIGH count stated as 9, should be 1006-validated-findings.md line 728AdvisoryCorrected to HIGH=10 in consolidated report
Confidence escalations from validation reportTM-006, TM-009, TM-015CriticalEscalated confidence MEDIUM to HIGH per cross-agent validation
14 cross-agent duplicate clustersFindings across 4 agentsCriticalDeduplicated using TM-NNN as primary; cross-referenced CR/GRC/PA sources
Severity conflicts (5 clusters)Clusters 2-8 in validation reportAdvisoryApplied recommended resolutions; preserved original scores from each system
PA-002 false positive candidatePA-002AdvisoryNoted as FP candidate in privacy section; retained finding with context
GRC-005 false positive candidateGRC-005AdvisoryNot included as standalone finding; context captured in TM-009/TM-010
D. Glossary
ALBApplication Load Balancer
ACMAWS Certificate Manager
AZAvailability Zone
CIDRClassless Inter-Domain Routing
CORSCross-Origin Resource Sharing
CVSSCommon Vulnerability Scoring System
CWECommon Weakness Enumeration
DPAData Processing Agreement
ECRElastic Container Registry
ECSElastic Container Service
ENIElastic Network Interface
GDPRGeneral Data Protection Regulation (EU)
HSTSHTTP Strict Transport Security
IaCInfrastructure as Code
IAMIdentity and Access Management
IGWInternet Gateway
LINDDUNLinkability, Identifiability, Non-repudiation, Detectability, Disclosure, Unawareness, Non-compliance
MitMMan-in-the-Middle
NACLNetwork Access Control List
NAT GWNetwork Address Translation Gateway
OWASPOpen Worldwide Application Security Project
PASTAProcess for Attack Simulation and Threat Analysis
PITRPoint-in-Time Recovery
SGSecurity Group
SPASingle Page Application
SPOFSingle Point of Failure
STRIDE-LMSpoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege, Lateral Movement
TLSTransport Layer Security
VPCVirtual Private Cloud
WAFWeb Application Firewall
E. Threat Model Lifecycle Triggers

Re-assess this threat model when:

  • Any authentication or authorization is added
  • The application handles user data or PII
  • New API endpoints are added
  • The system is deployed to a production AWS account
  • New AWS services are integrated
  • The CI/CD pipeline structure changes
  • The application migrates to a different compute platform

Recommended review cadence: Quarterly, or upon any trigger event listed above.