[英]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
該問題表明我們需要將 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.