The Software Supply Chain: Dependencies and Build Pipelines
Modern software is assembled, not written. An AI platform of any size rests on a deep tree of open-source libraries, frameworks, and tools, most of them pulled in automatically and many of them maintained by people the consuming organization has no relationship with. This is not a flaw to be scolded; it is how software gets built at all. But it means your security posture quietly depends on the posture of hundreds of upstream projects, and an adversary who understands that will attack the tree rather than the leaf.
The dependency path has several distinct techniques, and a practitioner should be able to name them. In a compromise of a legitimate package, an attacker gains control of a real, trusted library, through a stolen maintainer credential or a subverted contributor, and ships malicious code inside a normal-looking update that flows automatically to everyone who pulls the latest version. In typosquatting, the attacker publishes a malicious package whose name closely resembles a popular one, waiting for a mistyped install. In dependency confusion, the attacker publishes a public package matching the name of a company's private internal one, tricking build tools into fetching the attacker's version. Each technique exploits the same underlying trust: the assumption that a named package from a familiar source is what it claims to be.
Transitive dependencies deepen the problem. The libraries you choose bring their own dependencies, which bring theirs, until your true footprint is far larger than the short list your engineers actually selected. Most of that tree is invisible in day-to-day work. An attacker only needs one poisoned node anywhere in it, however deep, because at build time it all becomes part of your running system. You cannot defend what you cannot see, and the first task is therefore simply to see the whole tree, not just its top layer.
The build pipeline is the second front, and it is the higher-value target. The pipeline is the automated machinery that takes source code and turns it into the artifact you deploy: it fetches dependencies, compiles, tests, and packages. Because that machinery sits between trusted source and shipped product, an attacker who compromises the pipeline can inject malicious code into the final artifact while the original source code stays clean. Every review of the source passes, because the source was never the problem. The most damaging software supply-chain operations on record have followed exactly this shape: subvert the build system of a widely used product and ship a tampered artifact, signed and trusted, to a large population of downstream victims who had no reason to distrust an update from a vendor they already relied on.
That pattern is the essence of supply-chain force multiplication. One well-placed compromise reaches thousands of organizations, and it arrives through a trusted channel, so the defenses aimed at external intruders never engage. The victims did nothing careless. They installed a normal update from a normal source, which is exactly what good operational practice tells them to do.
Defense begins with provenance and integrity. Know where every artifact came from and prove it has not changed since it was built: verify cryptographic signatures, pin dependencies to specific reviewed versions rather than floating to the newest, and maintain a curated internal source of vetted packages instead of pulling blindly from the open internet at build time. Harden the pipeline itself as a crown-jewel system, since whoever owns the build owns the product. Give build steps only the access they need, isolate them from each other, and keep tamper-evident logs of what ran. Aim for builds that are reproducible, so an independent rebuild from the same source yields a bit-for-bit identical artifact and any injected difference stands out. None of this eliminates the risk, but together it converts a silent, automatic compromise into something that leaves evidence and demands effort, which is the most any defender can ask of a supply-chain control.