Maneira mais fácil de encontrar vulnerabilidades em imagens do Docker usando o Snyk

O Snyk é um editor especializado em analisar vulnerabilidades no código de arquivos de configuração de infraestrutura, incluindo aqueles presentes em containers e pacotes de aplicativos.

Snyk oferece uma plataforma em nuvem primeiro, mas oferece vários produtos.

O Snyk OpenSource integra-se através da CLI do editor em um fluxo Git. Uma vez iniciado, o software detecta vulnerabilidades, classifica-as por grau de sensibilidade e corrige automaticamente erros de segurança conhecidos. Essa funcionalidade pode ser incorporada ao ciclo de solicitação de pull para aplicar ao código enviado aos repositórios.

O Snyk Infrastructure as Code, por outro lado, analisa as vulnerabilidades e as corrige nos arquivos de configuração JSON e YAML do Kubernetes. Aqui, um mecanismo de regras permite configurar a sensibilidade das detecções nos repositórios Git de acordo com os parâmetros decididos pelos administradores.

O Snyk Container permite testar imagens docker e registros associados no momento de sua criação e depois. O programa pode ser integrado a CLIs, SCMs, ferramentas de CI, registros de contêiner e Kubernetes.

Hoje, veremos como podemos usar o Snyk Container, que vem embutido no Docker para detectar vulnerabilidades.

Exemplo de arquivo docker

A primeira coisa que você precisa para usar o Snyk para detectar vulnerabilidades é uma imagem docker. Neste exemplo, usaremos a seguinte imagem do docker:

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
EXPOSE 8000 CMD
[“python”, “app.py”]

A primeira coisa que devemos fazer é gerar a imagem localmente através do seguinte comando:

docker build -t 0xyz0/python-app.

Agora temos uma imagem para analisar.

Digitalize a imagem do cliente Docker

A integração do serviço Snyk com o Docker torna esse processo incrivelmente simples. Para iniciar a verificação, basta executar o seguinte:

docker scan 0***0/python-app

Isso começará com a análise onde retornará uma saída mais ou menos extensa, dependendo das vulnerabilidades que encontrar, e com um resumo final:

A verificação do Docker mostra todas as vulnerabilidades da imagem

Como você pode ver, ele não apenas informa quantas vulnerabilidades ele encontrou. Mesmo se você rolar para cima, poderá ver quais são e sua criticidade, mas também faz recomendações sobre a imagem base que você deve usar.

Você também pode verificar os detalhes da vulnerabilidade no Banco de dados de vulnerabilidades Snyk.

No meu caso, ele me oferece várias alternativas, então vou modificar meu Dockerfile com a primeira opção:

FROM python:3.7.11-slim

ADD . /code

WORKDIR /code

RUN pip install -r requirements.txt

EXPOSE 8000

CMD ["python", "app.py"]

Se eu reconstruir a imagem e digitalizá-la:

docker build -t 0***0/python-app . && docker scan 0***0/python-app

Você verá que a saída agora mostra menos vulnerabilidades e, nesse caso, informa que você está usando a imagem base mais segura:

  Como usar linhas principais para fotos mais fortes

A verificação do Docker garante que você esteja usando a imagem de base mais segura

Você também pode obter um relatório mais detalhado se adicionar o arquivo docker que gera a imagem ao comando:

docker scan -f Dockerfile 0***0/python-app

E até mesmo exclua a imagem base da análise, caso você queira focar no que fez de errado:

docker scan -f Dockerfile --exclude-base 0***0/python-app

Este serviço também pode ser integrado aos repositórios do Docker Hub:

Mas para isso, você deve ter uma das assinaturas pagas. No entanto, você pode iniciá-lo localmente, com o plano gratuito que você tem apenas por estar logado no Docker Hub (ele tem limites de varredura claros), enquanto desenvolve ou deseja verificar o quão segura é uma imagem de terceiros que você deseja usar.

Usando Snyk com Github Actions

A primeira coisa a fazer é criar um repositório e dentro dele criar uma pasta.

.github / worflows /

Em seguida, usar o Snyk Container no Github é criar uma nova imagem ou pegar aquela imagem que criamos no Docker Hub. Para usar o Snyk, você precisa criar um novo segredo chamado SNYK_TOKEN, e para obter o token, você precisa criar uma conta no Snyk. Em General Settings, onde diz API Token, você pode gerá-lo rapidamente.

  Por que os smartphones não podem tirar fotos de fundo desfocadas

Com o token, você pode criar o segredo no Github e usá-lo na Action. Agora, você deve passar o nome do repositório que foi criado no Docker Hub. Em seguida, você deve passar a mensagem que ele deve enviar. Você pode acessar as saídas das etapas para usar como variável na mensagem.

with:
args: 'A new commit has been pushed. Please verify github action:
| worflow $ {{fromJson (steps.repo.outputs.result) .html_url}} / actions
| Exec: $ {{steps.prep.outputs.created}}
| Version: $ {{steps.prep.outputs.version}} '

Como executar todo o fluxo de trabalho? Simples apenas pressionando Master. A ação do Github detectará o arquivo dentro de .github / workflows /.

Palavras finais 👈

Com a crescente popularidade dos contêineres, os incidentes de violações de segurança estão se tornando cada vez mais comuns, a maioria devido a erros de configuração na implantação dos contêineres. O Snyk fornece uma ferramenta eficiente e direta que pode nos ajudar a evitar erros de configuração incorreta e detectar as vulnerabilidades mais comuns em imagens docker.