Today containers are a bit like how cars used to work a long long long time ago. You couldn’t really buy a car, you had to build it yourself or find someone who could build one for you in their barn. The parts were terrible and things would break all the time. It probably ran on steam or was pulled by a horse.
Containers aren’t magic. Well they are for most people. Almost all technology is basically magic for almost everyone. There are some who understand it but generally speaking, it’s complicated. People know enough to get by which is fine, but that also means you have to trust your supplier. Your car is probably magic to you. You put gas in a hole in the back, then you can press buttons, push peddles, and turn wheels to transport you places. I’m sure a lot of people at this point are running through the basics of how cars work in their heads to reassure themselves its’ not magic and they know what’s going on!
They’re magic, unless you own an engine hoist (and know how to use it).
Now let’s think about containers in this context. For the vast majority of container users, they get a file from somewhere, it’s full of stuff that doesn’t make a lot of sense. Then they run some commands they found on the internet, then some magic happens, then they repeat this twiddling things here and there until on try 47 they have a working container.
It’s easy to say it doesn’t matter where the container content came from, or who wrote the dockerfile, or what happens at build time. It’s easy because we’re still very early in the life of this technology. Most things are still fresh enough that security can squeak by. Most technology is fresh enough you don’t have to worry about API or ABI issues. Most technology is new enough it mostly works.
Except even with as new as this technology is, we are starting to see reports of how many security flaws exist in docker images. This will only get worse, not better, if nothing changes. Almost nobody is paying attention, containers mean we don’t have to care about this stuff, right!? We’re at a point where we have guys building cars in their barns. Would you trust your family in a car built in some guy’s barn? No, you want a car built with good parts and has been safety tested. Your containers are being built in some guy’s barn.
If nothing changes, imagine what the future will look like. What if we had containers in 1995. There would still be people deploying Windows 95 in a container and putting it on the Internet. In 20 years, there are still going to be containers we use today being deployed. Imagine still seeing Heartbleed in 20 years if nothing changes, the thought is horrifying.
Of course I’m a bit over dramatic about all this, but the basic premise is sound. You have to understand what your container bits are. Make sure your supplier can support them. Make sure your supplier knows what they’re shipping. Demand containers built with high quality parts, not pieces of old tractors found in some barn. We need secure software supply chains, there are only a few places doing it today, start asking questions and paying attention.
Join the conversation, hit me up on twitter, I’m @joshbressers