AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 76920248
Accepted
xgretsch
xgretsch
Asked: 2023-08-17 17:36:35 +0800 CST2023-08-17 17:36:35 +0800 CST 2023-08-17 17:36:35 +0800 CST

Como rastrear a origem da vulnerabilidade mostrada por "docker scout cves"

  • 772

Eu tenho uma imagem docker, baseada no Ubuntu 23.04. A execução docker scout cvesmostra, entre outras coisas, algumas vulnerabilidades críticas em um arquivo stdlib 1.19.4de um pacote pkg:golang/[email protected]. (CVE-2023-24540 e CVE-2023-24538).

O problema é que não tenho a menor ideia de onde vem esse pacote. Não estou usando a linguagem go em nenhum dos meus códigos. Não consigo encontrar o pacote em dpkg.log. Se eu executar todos os meus aptcomandos manualmente, ele não aparecerá na saída. Percorrendo a árvore de pacotes afetados no Docker Desktop, também não consigo vê-lo – embora seja fácil perder.

Além de fazer um corte binário no meu Dockerfile até que as vulnerabilidades desapareçam, alguém pode explicar uma maneira sistemática de descobrir qual comando causou a instalação deste pacote?

Adendo: Conforme solicitado - aqui está um Dockerfile com todos os comandos de instalação, mas nenhum do meu próprio código:

# Start with a base Ubuntu image
FROM ubuntu:23.04

ARG xdebug

# Prevent any prompts during installation
ENV DEBIAN_FRONTEND noninteractive

# Set up apt with any additional repositories we need
RUN apt-get update
RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:maxmind/ppa
RUN apt-get update --fix-missing
RUN apt upgrade -y

# Install Apache and various other packages.
RUN apt-get install -y apache2
RUN apt-get install -y vim cron geoipupdate git logrotate mysql-client openssh-server redis rsync supervisor unzip zip
RUN apt-get install -y python3-pip python3-dev python3-setuptools python3-numpy python3-pandas python3-yaml python3-click python3-dotenv python3-mysql.connector python3.tqdm
RUN apt-get install -y gcc make dnsutils ncdu lsof

# Configure any Apache modules that weren't in the default
RUN cp /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled
RUN cp /etc/apache2/mods-available/expires.load /etc/apache2/mods-enabled
RUN cp /etc/apache2/mods-available/authz_groupfile.load /etc/apache2/mods-enabled
RUN cp /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/
RUN cp /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled
RUN cp /etc/apache2/mods-available/socache_shmcb.load /etc/apache2/mods-enabled
RUN cp /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled

# Suppress Apache warning on being unable to determine the fully qualified domain name
RUN echo "ServerName localhost">>/etc/apache2/apache2.conf

# Install PHP and plumb into Apache
RUN apt-get update --fix-missing
RUN apt-get install -y php8.1 php8.1-curl php8.1-gd php8.1-gettext php8.1-gmp php8.1-iconv php8.1-imap php8.1-intl php8.1-mbstring php8.1-mysql php8.1-oauth php8.1-redis php8.1-xml php8.1-yaml php8.1-zip
RUN if [ "$xdebug" = "with" ] ; then apt-get install -y php8.1-xdebug ; fi
RUN apt-get install -y libapache2-mod-php8.1

# The bcmath extension seems to have problems when installed in line with the other PHP modules, as of 2022-07-18
RUN apt-get update --fix-missing
RUN apt-get install -y php8.1-bcmath

# Install locales
RUN apt-get install -y locales
RUN locale-gen en_GB
RUN locale-gen en_GB.UTF-8
RUN locale-gen de_DE
RUN locale-gen de_DE.UTF-8
RUN locale-gen es_ES
RUN locale-gen es_ES.UTF-8
RUN locale-gen fr_FR
RUN locale-gen fr_FR.UTF-8
RUN locale-gen it_IT
RUN locale-gen it_IT.UTF-8
RUN update-locale
docker
  • 1 1 respostas
  • 18 Views

1 respostas

  • Voted
  1. Best Answer
    Rick Rackow
    2023-08-17T19:18:19+08:002023-08-17T19:18:19+08:00

    Do ponto de vista da área de trabalho, é um pouco mais óbvio do que o terminal imho.

    Visualização da área de trabalho

    Se você observar a exibição da imagem criada a partir do seu Dockerfile, poderá ver esses pequenos ícones à direita. Um verde significa que está tudo bem e vermelho e amarelo em tons de cores diferentes significa que uma vulnerabilidade foi introduzida nessa camada.

    Visualização da área de trabalho de vulnerabilidade

    Agora, se você clicar em um deles, ele mostrará qual vulnerabilidade foi introduzida ali, no lado direito, também conhecida como visualização de detalhes:

    Detalhes da vulnerabilidade

    Agora no seu caso é um pouco mais difícil porque você adiciona vários pacotes em uma camada. No entanto, neste caso, estamos procurando um software baseado em go tão fora da lista nesta camada ( vim cron geoipupdate git logrotate mysql-client openssh-server redis rsync supervisor unzip zip) que deveria ser apenas geoipupdate. Em um pacote com melhor manutenção, você veria um aviso ou algo mais na guia de segurança na página do github , o que aparentemente não é o caso aqui. No entanto, se você olhar para o go.mod , poderá ver que ele está usando uma versão do go que é vulnerável. Uma correção para isso seria https://github.com/maxmind/geoipupdate/pull/251 (não que eu ainda precise corrigir os testes para isso, mas bom o suficiente para mostrar por enquanto).

    terminal

    No terminal você pode usar o --locationssinalizador assim

    $ docker scout cves --locations cve-test:latest
    INFO New version 0.22.3 available (installed version is 0.20.0)
        ✓ SBOM of image already cached, 847 packages indexed
        ✗ Detected 7 vulnerable packages with a total of 32 vulnerabilities
    
       2C    10H     3M     0L  stdlib 1.19.4
    pkg:golang/[email protected]
    
    14: sha256:5d1e732cad3b228fd22501a92e270e61fd1e7a45faee63176660a3a77b63cab6
    /usr/bin/geoipupdate
    
        ✗ CRITICAL CVE-2023-24540
          https://scout.docker.com/v/CVE-2023-24540
          Affected range : <1.19.9
          Fixed version  : 1.19.9
    

    Dessa forma, ele imprimirá a origem do problema, o que, nesse caso, apontaria para o mesmo pacote novamente. O número e o hash são, na verdade, a camada onde ele é introduzido. Novamente, depois de examinar a saída da área de trabalho antes, ela faz mais sentido. Lá você também pode ver que é a camada 14 onde o problema é introduzido.

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    destaque o código em HTML usando <font color="#xxx">

    • 2 respostas
  • Marko Smith

    Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}?

    • 1 respostas
  • Marko Smith

    Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)?

    • 2 respostas
  • Marko Smith

    Por que as compreensões de lista criam uma função internamente?

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 respostas
  • Marko Smith

    Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)?

    • 4 respostas
  • Marko Smith

    Por que o construtor de uma variável global não é chamado em uma biblioteca?

    • 1 respostas
  • Marko Smith

    Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto?

    • 1 respostas
  • Marko Smith

    Somente operações bit a bit para std::byte em C++ 17?

    • 1 respostas
  • Martin Hope
    fbrereto Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi Por que as compreensões de lista criam uma função internamente? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A formato fmt %H:%M:%S sem decimais 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python std::views::filter do C++20 não filtrando a visualização corretamente 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa Por que o construtor de uma variável global não é chamado em uma biblioteca? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev Por que os compiladores perdem a vetorização aqui? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan Somente operações bit a bit para std::byte em C++ 17? 2023-08-17 17:13:58 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve