So, this has always bugged me. How do you validate a Docker container? No one wants to pull a laced up container, so there has to be a way one can check. Of course, sticking to original docker containers from Docker Hub would be one method I suppose. Is there some kind of scan one can do? I do this on my Windows computer; scan before installing. Besides looking at code that I would have no idea what is going on, what protocols do you guys use?
I do know how to pull containers. I’m concerned with pulling a Docker container, that may be laced with xmrig for example, or opens a port by which a nefarious actor could gain access, much like in a windows environment. There are repositories like Docker Hub, but do they go through and verify all containers? I highly doubt they verify user content/containers. They do have verified containers, but not all of them bear the verified earmark.
I’m far from an expert, but it seems to me that if you’re setting up your containers according to best practice you would only be mapping the specific ports needed for the service, which renders a wayward “open port” useless. If there’s some kind of UI exploit, that’s a different story. Perhaps this is why most people suggest not exposing your containerized services to the WAN. If we’re talking about a virus that might affect files, it can only see the files that are mapped to the container which limits the damage that can be done. If you are exposing sensitive files to your container, it might be worth it to vet the container more thoroughly (and make sure you have good backups).
I suspect somebody could do some damage if they managed to infiltrate one of the reverse proxy containers. That might net you some useful credentials from the home gamers as they’re doing the HTTPS wrapping themselves.
Any container that gets accessed with a web browser could potentially contain zero day exploits, But truth zero days with a maximum CVE value are rare.
I have ports controlled but I use containers with http, however it is not exposed to the WAN, only to the LAN, is it equally risky?
If you’re not open to the wan, you’re in decent enough shape.
The bar in your situation is that someone would need to shove a ransomware payload into a JavaScript 0-day for a package in your container without anyone noticing it, you’d have to update your container with it, then visit it with a vulnerable internet-connected computer. It’s not impossible, but a really long, long shot.
Don’t pull containers from random sources then. If you’re working with a specific project, only pull from their official images.
Pushed images are built and verified from the maintainers, then pushed. Then you pull, each layer is verified by hash that it is the same image as was originally pushed by the maintainers.
Whether that project protects itself from supply chain attacks is a different story, but as far as ports go, you only expose what you tell it to expose. There’s no workaround for that.