Application Dependencies Mapping
Info
ID: AT-RE002
Tactic: Reconnaissance
Sub-techniques: Client-Side Commercial Vendor Discovery, Image Metadata Inspection, Manifest Inspection, OpenSource Dependency Enumeration, Package Manifest Scraping, Registry Metadata Query, SBOM Analysis
Platforms: PRE
Adversaries may enumerate and analyze third-party libraries (open-source and commercial software), frameworks, and base images that an application relies upon to uncover potential weaknesses. Common methods include extracting package manifests, examining SBOMs (Software Bill of Materials), and parsing container image metadata to identify unpatched software or suspicious version patterns. By mapping these dependencies, attackers learn precisely where outdated or vulnerable components reside, directing their subsequent exploitation efforts toward the most impactful targets.
This technique is especially relevant in cloud-native stacks, where microservices frequently import dozens of third-party components including both open-source libraries and commercial software packages. Even a single neglected version can become the linchpin for an attacker's supply-chain or runtime compromise. Successfully enumerating dependencies can also reveal developer habits - such as reliance on obscure or newly published packages - that adversaries may exploit by inserting malicious updates upstream.
Mitigations
ID | Mitigation | Description |
---|---|---|
M1013 | Application Developer Guidance | Publish redacted SBOMs/manifest lists—omit internal component versions or non-public dependencies—to reduce attacker reconnaissance value. |
M1021 | Restrict Web-Based Content | Require authentication or scoped access tokens for repository APIs that serve dependency manifests, preventing bulk unauthenticated scraping. |
M1045 | Code Signing | Enforce signed commits and provenance (SLSA level 3+) for dependency files so tampering attempts are detected at CI time. |
Detection
Most dependency-mapping reconnaissance occurs entirely on public code-hosting platforms or via unauthenticated package-registry APIs, keeping the activity outside the defender’s on-prem or cloud collection boundary. Consequently there is little to no host- or network-level telemetry inside the target enterprise that exposes enumeration in real time.
Visibility is usually achieved only through:
- Platform-native audit logs (e.g., GitHub/GitLab API logs, private package-registry telemetry) when the organisation controls the repository and reviews access events.
- Third-party threat-intelligence feeds that flag bulk scraping of organisation-specific terms or fingerprinted leak-hunting tools.
- Down-stream effects, such as spear-phishing or exploits that reference manifest data harvested from public sources.
Examples in the Wild
Notable Application Dependency Mapping Attacks:
XZ-Utils Backdoor (CVE-2024-3094) The XZ-Utils backdoor attack demonstrated sophisticated application dependency mapping by targeting the widely-used xz compression library. The attacker (JiaT75) spent years mapping dependencies and understanding how the library was integrated into major Linux distributions, ultimately compromising versions 5.6.0 and 5.6.1. This affected all major Linux distributions including Fedora, RHEL, Debian, and thousands of downstream packages due to the deep understanding of dependency chains.
SolarWinds SUNBURST
The SolarWinds supply chain attack involved extensive application dependency mapping to understand how the Orion platform's components interacted. The attackers mapped the dependency chain from the core SolarWinds.Orion.Core.BusinessLayer.dll
to identify how it was used across the platform, enabling them to inject malicious code that would be distributed through the trusted update mechanism.
GitHub Actions Supply Chain Attack
The GitHub Actions attack showcased dependency mapping at the CI/CD level. APT35 mapped critical GitHub Actions dependencies like reviewdog/action-setup
and tj-actions/changed-files
, understanding their widespread usage (>2M and >5M monthly downloads respectively) to maximize the attack's impact across thousands of repositories.
ShellTorch Attack The ShellTorch attack demonstrated application dependency mapping in AI infrastructure by targeting PyTorch's TorchServe framework. The attackers mapped how TorchServe was integrated into major platforms including AWS SageMaker, Google Vertex AI, and Kubeflow, allowing them to identify and exploit vulnerabilities that affected multiple AI deployment platforms.
Attack Mechanism
Dependency Mapping Techniques Used in Real Attacks:
- Package Manager Analysis
- Studying package.json, requirements.txt, and other dependency files
- Analyzing version constraints and dependency relationships
-
Identifying widely-used packages with high impact potential
-
Build Process Investigation
- Examining build scripts and configuration files
- Understanding how dependencies are resolved and linked
-
Identifying points where malicious code can be injected
-
Integration Point Discovery
- Mapping service-to-service dependencies
- Understanding API dependencies and data flow
-
Identifying critical shared libraries and components
-
Version Control Analysis
- Studying commit history for dependency changes
- Analyzing merge requests and dependency updates
- Identifying patterns in dependency management
Real-World Examples
# XZ-Utils Dependency Chain
liblzma.so.5:
- used_by: ["systemd", "apt", "dpkg"]
- impact: "Critical system components"
- distributions: ["Debian", "RHEL", "Ubuntu"]
# SolarWinds Component Dependencies
SolarWinds.Orion.Core.BusinessLayer.dll:
- referenced_by: ["OrionWeb", "OrionServer"]
- called_by: ["Authentication", "Monitoring"]
- integrated_with: ["Windows Services", "IIS"]
# GitHub Actions Dependencies
reviewdog/action-setup:
- monthly_downloads: ">2M"
- used_by: ["CI/CD pipelines", "Code Review"]
- integrated_with: ["GitHub Workflows", "PR Checks"]