An external library or package dependency
A library dependency is a third-party package a service relies on to do its work. Modern software is mostly other people's code: a single declared dependencyDependencyTeam & OrganisationA cross-team or system dependencyView reference → pulls in its own dependencies, and theirs, until a project's real footprint is hundreds of packages from authors the team has never met. That tree is the productivity win and the attack surface, the same fact seen from two sides.
Package managers turned dependency reuse from a manual chore into a one-line declaration, and the dependency tree came with it: every direct dependency carries its own transitive dependencies, often several levels deep. Two incidentsIncidentDevOps & PlatformA production incidentView reference → made the cost legible. In March 2016 a developer unpublished an 11-line npm package called left-pad after a naming dispute, and because it sat as a transitive dependency under Babel, React, and others, thousands of projects failed to build; npm restored it within hours and changed its unpublish policy.
Then Log4Shell (CVE-2021-44228), disclosed in late 2021, exposed a remote-code-execution flaw in the ubiquitous Java logging library Log4j. Its reach came precisely from its life as a transitive dependency in countless stacks; teams could not answer the basic question of whether they shipped it. Apache rated it CVSS 10, the maximum.
The response hardened the supply chain. Semantic versioning communicates the riskRiskComplianceA risk to the product or businessView reference → of an upgrade through its version number; lockfiles pin the exact resolved tree so a build is reproducible; and the Software Bill of Materials (SBOM), a machine-readable inventory of every component, has become the way to answer "do we ship the vulnerable version?" in minutes instead of weeks. OWASP now ranks software supply chain failures among its top web application security risks.
A payments service declares 23 direct dependencies. Its lockfile resolves to 412 packages once every transitive dependency is included. When a new CVE lands against a JSON parser two levels down, the team queries its SBOM, finds the service ships the affected 2.3.1, and confirms three other services do not. Semver says the fix in 2.3.2 is a patch, so the upgrade is low-risk; the lockfile is updated, the tree is re-resolved, and a reproducible build ships the same evening. Without the SBOM and lockfile, the same question would have been a multi-day audit across repositories.
In the Unified Product Graph, Library DependencyEngineeringA third-party library dependency is a leaf in the Engineering & Platform region, connected by the hierarchy edge library_dependencyServicedepends onLibrary Dependencyhierarchy. Recording the dependency as a first-class node, owned by the service that pulls it in, turns the supply-chain question into a graph traversal: when a package is found vulnerable, the edges show every service that depends on it, and a left-pad or Log4Shell stops being an unbounded hunt and becomes a bounded query.service_depends_on_library_dependency
Type-specific fields on BaseNode
dep_versionstringInstalled version
dep_typestringDependency classification
licensestringSPDX license identifier
is_outdatedbooleanWhether a newer version is available
vulnerability_countnumberKnown vulnerabilities in the installed version. Populated from npm audit, Snyk, etc.
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
1 edge type connected to this entity.
service_depends_on_library_dependency1 framework use this entity type.