Discussion about this post

User's avatar
Greg Young's avatar

It is common in embedded systems development to literally copy/paste what you need out of a dependency into your own code. While this initially seemed rather silly it is actually not a terrible model and definitely forces you to think about the dependency as being ... your code.

Jon Frisby's avatar

This mindset you describe at HashiCorp explains why Packer has a badly implemented DAG structure intertwined with HCL parsing that was so broken that we had to fork and patch the whole tool to get an entirely legal and valid use case working at my last employer.

That said, yes, people toss dependencies in way too quickly and bad actors have finally started regularly taking advantage of the threat landscape that this mindset has quietly created but which we've all largely ignored for decades.

But a solution that requires more labor, and more diligence is, to say the very least, not likely to see much adoption. Solutions need to work for people, not the other way around.

The recent addition by various package managers of cooldown periods for dependency updates is a grossly imperfect start, but has the potential to limit the blast radius of exploits. Policy updates that allow package managers to ignore unpublished requests for things with too many dependencies / downloads / whatever is another imperfect way to limit blast radius for petulance.

As flawed and limited as these piecemeal strategies are, they're gaining traction because they improve the situation without adding workload to already (perpetually) overburdened engineering teams.

Never once in my 3-decade career have I seen "be smarter" / "do more work" be a scalable solution to a problem.

1 more comment...

No posts

Ready for more?