簡體   English   中英

如何解決docker掃描報告的python3.7 Docker漏洞

[英]How to address python3.7 Docker vulnerabilities reported in docker scan

我們正在嘗試將我們的服務構建為 docker 映像。 我們在 docker 映像中有 flask 服務。 如果我們使用 python3.7 作為基礎鏡像,我們會遇到很多漏洞。 即使在升級版本之后,仍然會報告問題。

為了重現該問題,此處提供了基本的 docker 圖像。

FROM python:3.7
CMD ["sleep", "300"]
sudo docker build -t p37:basic-f ./Dockerfile .
sudo docker tag p37:basic $DOCKER_LOGIN_URL/repo:p37_basic
sudo docker push $DOCKER_LOGIN_URL/repo:p37_basic

當此圖像被推送到 AWS Container 注冊表時,掃描報告顯示許多漏洞。

提供報告的示例問題。 CVE-2022-2097 CVE-2022-2097 截圖

該問題表明我們需要將 openssl 更新為openssl 1.1.1q 我們在本地運行鏡像,發現我們安裝了 openssl 1.1.1n。

sudo docker run p37:basic &

sudo docker container list

CONTAINER ID   IMAGE       COMMAND        CREATED          STATUS      PORTS     NAMES 77a25f41da01   p37:basic   "sleep 6000"   15 seconds ago   Up 14 seconds             eager_black

sudo docker exec -it 77a25f41da01 /bin/bash

root@77a25f41da01:/# openssl version -a OpenSSL 1.1.1n  15 Mar 2022 built on: Fri Jun 24 20:22:19 2022 UTC platform: debian-amd64 options: bn(64,64) rc4(16x,int) des(int) blowfish(ptr)  compiler: gcc -fPIC
-pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -ffile-prefix-map=/build/openssl-qQYEec/openssl-1.1.1n=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2 OPENSSLDIR: "/usr/lib/ssl" ENGINESDIR: "/usr/lib/x86_64-linux-gnu/engines-1.1" Seeding source: os-specific root@77a25f41da01:/#

所以我們決定升級 docker 鏡像中的 openssl。

FROM python:3.7
RUN apt-get update
RUN apt-get install software-properties-common --yes

# OPENSSL
RUN apt-get update && \
    apt-get install --yes --no-install-recommends wget build-essential libcurl4 && \
    wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz && \
    tar -xvf openssl-1.1.1q.tar.gz  && cd openssl-1.1.1q && \
    ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib && make && make install


RUN echo "/usr/local/ssl/lib" >> /etc/ld.so.conf.d/openssl-1.1.1q.conf
RUN cat /etc/ld.so.conf.d/openssl-1.1.1q.conf
RUN ldconfig -v
RUN mv /usr/bin/c_rehash /usr/bin/c_rehash.backup
RUN mv /usr/bin/openssl /usr/bin/openssl.backup
ENV PATH="${PATH}:/usr/local/ssl/bin"

CMD ["sleep", "6000"]

當我們在本地運行 docker 映像並在容器內部檢查時,安裝了最新的 openssl。

sudo docker exec -it c3314b7efeea /bin/bash

root@c3314b7efeea:/# openssl version -a
OpenSSL 1.1.1q  5 Jul 2022
built on: Fri Aug  5 17:26:11 2022 UTC
platform: linux-x86_64
options:  bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr) 
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DZLIB -DNDEBUG
OPENSSLDIR: "/usr/local/ssl"
ENGINESDIR: "/usr/local/ssl/lib/engines-1.1"
Seeding source: os-specific
root@c3314b7efeea:/#

但是當它被推送到 AWS 中的彈性容器注冊表時,掃描報告中仍然報告了 openssl 問題。 (我們也檢查了 Google 容器注冊表。僅類似行為)

更新截圖

為什么修復沒有反映在掃描報告中? 還是有其他方法可以修復這些漏洞?

將此發布為解決方法。 2個問題中,

Why the fix is not reflecting in scan reports? 仍未得到答復

is there alternative way to fix these vulnerabilities? - 這個變通解決方案。

我們以 ubuntu:20.04 作為基礎 docker 圖像,然后為 docker 添加所需文件。

這大大減少了掃描漏洞的數量。 現在我們在 AWS ECR 的 docker 掃描報告中有 2 個低信息條目。

FROM ubuntu:20.04
RUN apt-get update
RUN apt-get install software-properties-common --yes
RUN apt-get install build-essential wget -y
RUN apt-get install python3-pip -y
RUN pip install --upgrade pip
CMD ["sleep", "300"]

這將具有內置的 python3.8。

我們可以像這樣使用

CMD ["python3", "testfile.py"]

或創建別名並使用python

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM