Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

An example of a STRIDE-based threat analysis for the SkyLink Connected Aircraft Platform.


Document Information

AttributeValue
Service OwnerSkyLink Platform Team
Data ClassificationConfidential (PII, telemetry, credentials)
Highest Risk ImpactMAXIMUM
Document Version1.0
Last Review DateDecember 2025
Next Review DateJune 2026

Table of Contents

Service Description

Overview

SkyLink is a connected aircraft services platform providing real-time telemetry ingestion, weather data, and contact synchronization for commercial aviation. The platform follows Security by Design principles with multi-layer authentication, defense in depth, and privacy by design.

Functional Decomposition

The service provides the following capabilities:

Technical Architecture

TI Example

Component Responsibilities

ComponentResponsibilitySecurity Controls
API GatewayAuthentication, authorization, routing, rate limitingmTLS, JWT RS256, RBAC, OWASP headers
Telemetry ServiceAircraft data ingestionIdempotency, input validation
Weather ServiceExternal API proxyDemo mode fallback
Contacts ServiceOAuth flow, Google APIToken encryption (AES-256-GCM)
PostgreSQLData persistenceNetwork isolation, credentials

Data Dictionary

List of data stored or in transit within the service.

Data TypeClassificationStorageNotes
Aircraft UUIDInternalMemory/TransitTechnical identifier
Telemetry Data (speed, altitude, fuel, engine temp)ConfidentialMemoryReveals flight patterns and aircraft state
GPS PositionConfidential (PII)MemorySensitive location data - rounded to 4 decimals (~11m) to minimize precision
Google ContactsConfidential (PII)Transit onlyRead-only via Google People API, not persisted
Google OAuth TokensRestrictedPostgreSQLAES-256-GCM encrypted at rest
JWT TokensRestrictedTransitRS256 signed, 15-minute expiry
mTLS CertificatesRestrictedFilesystemX.509, CA-signed, stored securely
LogsRestrictedFilesystem/STDOUTNo PII - only trace_id for correlation
Network Metadata (IP, User-Agent)InternalMemoryPseudonymized if exported for analysis

Data Flow Classification

FlowEncryptionAuthenticationAuthorization
Aircraft → GatewaymTLS (TLS 1.2+)X.509 certificateJWT claims
Gateway → ServicesInternal networkNone (trusted)N/A
Services → External APIsHTTPSAPI keys / OAuthScope-limited
Services → DatabaseInternal networkCredentialsRole-based

Threat Actors

External Threat Actors

ActorMotivationCapabilityTarget
Nation-StateEspionage, disruptionHIGHFlight data, infrastructure
CybercriminalsFinancial gainMEDIUMCredentials, PII
HacktivistsIdeology, publicityLOW-MEDIUMService availability
CompetitorsIndustrial espionageMEDIUMProprietary data

Internal Threat Actors

ActorMotivationCapabilityTarget
Malicious InsiderFinancial, revengeHIGHAll data, credentials
Compromised AccountExploited by externalVARIESDepends on privileges
Negligent EmployeeNone (accidental)LOWMisconfigurations

Supply Chain Threats

VectorRiskMitigation
Compromised DependenciesBackdoors, vulnerabilitiesSCA (pip-audit), SBOM
Container Image TamperingMalicious code injectionImage signing (Cosign)
CI/CD Pipeline CompromiseUnauthorized deploymentsProtected branches, secrets management

STRIDE Analysis

Spoofing (Identity)

IDThreatImpactLikelihoodMitigationStatus
S1Aircraft identity spoofingMAXIMUMMediummTLS with X.509 certificates, CN validation✅
S2User identity spoofingHIGHMediumJWT RS256 + mTLS cross-validation (CN == sub)✅
S3Compromised Certificate AuthorityMAXIMUMLowCA isolation, HSM storage (recommended)⚠️
S4Stolen aircraft private keyHIGHLowHSM storage on aircraft, certificate rotation📝
S5JWT token theftHIGHMediumShort expiry (15 min), HTTPS only✅

Symbol legend:

Tampering (Integrity)

IDThreatImpactLikelihoodMitigationStatus
T1Telemetry data modification in transitMAXIMUMMediummTLS integrity, TLS 1.2+✅
T2JWT token modificationHIGHLowRS256 signature verification✅
T3Database tamperingHIGHLowAccess controls, network isolation✅
T4Supply chain attack (malicious dependency)MAXIMUMMediumSBOM, SCA, image signing, Gitleaks✅
T5Log tamperingMEDIUMLowCentralized logging (recommended)⚠️
T6Configuration tamperingHIGHLowEnvironment variables, protected branches✅

Symbol legend:

Repudiation (Non-Repudiation)

IDThreatImpactLikelihoodMitigationStatus
R1Denied authentication attemptsMEDIUMMediumAudit logging❌
R2Denied data accessMEDIUMMediumAudit logging❌
R3Deleted or modified logsHIGHLowImmutable log storage❌
R4Timestamp manipulationMEDIUMLowServer-side timestamps✅

Symbol legend:

Information Disclosure (Confidentiality)

IDThreatImpactLikelihoodMitigationStatus
I1OAuth token leak (logs, CI, exposed variables)MAXIMUMMediumAES-256-GCM encryption, no logging✅
I2PII in logsHIGHMediumStructured logging, PII filtering✅
I3GPS precision leak (tracking)HIGHMedium4-decimal rounding (~11m accuracy)✅
I4Verbose error messagesMEDIUMMediumGeneric error responses✅
I5Secrets in repositoryMAXIMUMLowGitleaks scanning, .gitignore✅
I6Excessive OAuth scopeHIGHLowMinimal scope (contacts.readonly)✅
I7External API data leak (WeatherAPI)MEDIUMLowGeohash/rounding for location✅

Symbol legend:

Denial of Service (Availability)

IDThreatImpactLikelihoodMitigationStatus
D1API flood / DDoSHIGHHighRate limiting (60/min per identity)✅
D2Large payload attackMEDIUMMedium64KB payload limit✅
D3Telemetry storm (fleet event flood)MEDIUMMediumIdempotency, rate limiting✅
D4External service outage (Weather/Google)MEDIUMMediumDemo mode fallback✅
D5Database exhaustionMEDIUMLowConnection pooling, limits⚠️
D6CI/CD pipeline failureHIGHMediumRollback capability⚠️

Symbol legend:

Elevation of Privilege (Authorization)

IDThreatImpactLikelihoodMitigationStatus
E1JWT claim manipulationHIGHLowRS256 signature verification✅
E2Cross-aircraft data accessHIGHMediumJWT subject validation, aircraft_id binding✅
E3Container escapeMAXIMUMLowNon-root containers (UID 1000)✅
E4RBAC bypassHIGHMediumN/A - RBAC not implemented❌
E5Service-to-service impersonationMEDIUMLowInternal network isolation✅

Symbol legend:

Risk Matrix

Risk Calculation

Risk = Impact × Likelihood

Low ImpactMediumHighMaximum
LikelyMEDIUMHIGHCRITICALCRITICAL
PossibleLOWMEDIUMHIGHCRITICAL
UnlikelyLOWLOWMEDIUMHIGH
RareACCEPTLOWLOWMEDIUM

Current Risk Profile

Risk LevelCountExamples
CRITICAL0-
HIGH3Audit logging gaps, RBAC missing, CA compromise
MEDIUM5Log tampering, external service outage
LOW8Various mitigated threats
ACCEPTED2Rare/low impact scenarios

Threat Scenarios

Detailed threat scenarios with business impact analysis.

Scenario 1: Data Leak via OAuth Token Exposure

AttributeValue
ImpactMAXIMUM (Reputation), MEDIUM (Productivity), € (Financial)
CIAConfidentiality
Attack VectorTokens exposed in CI logs, GitLab variables, or verbose logging
ConsequenceExtraction of user contacts, potential GDPR violation

Mitigations Implemented:

Scenario 2: Aircraft Spoofing via mTLS Bypass

AttributeValue
ImpactHIGH (Reputation), HIGH (Productivity), €€ (Financial)
CIAIntegrity
Attack VectorWeak mTLS validation, compromised CA, or stolen private key
ConsequenceFalsified telemetry injection, erroneous alerts, costly investigations

Mitigations Implemented:

Scenario 3: Supply Chain Attack

AttributeValue
ImpactMAXIMUM (Reputation), MAXIMUM (Productivity), €€€ (Financial)
CIAIntegrity
Attack VectorCompromised PyPI dependency, malicious container image
ConsequenceBackdoor in production, potential remote aircraft impact

Mitigations Implemented:

Scenario 4: DDoS / API Flood

AttributeValue
ImpactHIGH (Reputation), HIGH (Productivity), € (Financial)
CIAAvailability
Attack VectorUnprotected gateway, missing rate limits
ConsequenceService unavailability during flight operations

Mitigations Implemented:

Scenario 5: Replay Attack on Telemetry

AttributeValue
ImpactMEDIUM (Reputation), LOW (Productivity), € (Financial)
CIAIntegrity
Attack VectorReplay of captured telemetry events
ConsequenceDuplicate events, time series pollution

Mitigations Implemented:


Recommendations Summary

Implemented Controls

PriorityRecommendationStatus
MAXIMUMmTLS for aircraft authentication✅
MAXIMUMOAuth with least privilege (contacts.readonly)✅
HIGHData minimization (GPS rounding, no contact persistence)✅
HIGHJWT RS256 + rate limiting✅
HIGHLogs without PII, tracing, metrics✅
HIGHSupply chain security (SBOM, SCA, image signing)✅

Symbol legend:

Pending Controls

PriorityRecommendationStatusPlanned
MAXIMUMSecrets in KMS/Vault⚠️Phase 4
HIGHAudit logging❌Phase 3
HIGHSecurity monitoring & alerting❌Phase 3
MEDIUMRBAC authorization❌Phase 4
MEDIUMKey rotation automation❌Phase 3

Symbol legend:

Gap Analysis

Current State vs Target State

Control AreaCurrentTargetGap
AuthenticationmTLS + JWT RS256SameNone
AuthorizationIdentity-based onlyRBACMissing roles/permissions
Audit LoggingNoneFull audit trailNot implemented
MonitoringBasic PrometheusGrafana dashboards + alertsDashboards missing
Key ManagementManualAutomated rotationScripts needed
Secrets ManagementEnvironment variablesKMS/VaultIntegration needed
Incident ResponseNoneDocumented playbookNot documented

Remediation Roadmap

PhaseFocusTimeline
Phase 2Threat Model + Security ArchitectureCurrent
Phase 3Monitoring, Key Management, Audit LoggingNext
Phase 4RBAC, Security Tests, KubernetesFollowing
Phase 5Compliance, Vault IntegrationFuture

Review History

DateVersionReviewerChanges
December 20251.0InitialInitial threat model based on STRIDE analysis

Appendix A: Security Controls Matrix

ControlSTRIDE CoverageImplementation
mTLSS, T, ISee config file (give a link as evidence)
JWT RS256S, T, ESee config file (give a link as evidence)
Rate LimitingDSee config file or code (give a link as evidence)`
Input ValidationT, ESee code file and design (give link as evidence)
Security HeadersISee code file and design (give link as evidence)
Token EncryptionISee code file and design (give link as evidence)
GPS RoundingISee code file and design (give link as evidence)
IdempotencyT, RTelemetry service
Container SecurityEDockerfile (non-root)
Supply ChainTCI/CD pipeline - see config in repo