- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在尝试将我们的服务构建为 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 registry 时,扫描报告显示有很多漏洞。
给出一个示例问题报告。 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 容器注册表。只有类似的行为)
为什么修复没有反射(reflect)在扫描报告中?还是有其他方法可以修复这些漏洞?
最佳答案
将此作为解决方法发布。 2个问题中,
为什么修复没有反射(reflect)在扫描报告中?
仍然没有答案
是否有替代方法来修复这些漏洞?
- 此变通解决方案。
我们将 ubuntu:20.04 作为基础 docker 镜像,然后添加 docker 所需的文件。
这大大减少了扫描漏洞的数量。现在我们在 AWS ECR 的 docker 扫描报告中有 2 个 low 和 few 信息条目。
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
关于docker - 如何解决docker scan中报告的python3.7 Docker漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73253576/
@Cacheable在同一类中方法调用无效 上述图片中,同一个类中genLiveBullets()方法调用同类中的queryLiveByRoom()方法,这样即便标识了Cacheable标签,
目录 @Transaction注解导致动态切换更改数据库失效 使用场景 遇到问题 解决 @Transaction
@RequestBody不能class类型匹配 在首次第一次尝试使用@RequestBody注解 开始加载字符串使用post提交(貌似只能post),加Json数据格式传输的时候,
目录 @Autowired注入static接口问题 @Autowired自动注入普通service很方便 但是如果注入static修饰的serv
目录 @RequestBody部分属性丢失 问题描述 JavaBean实现 Controller实现
目录 解决@PathVariable参数接收不完整的问题 今天遇到的问题是: 解决办法: @PathVariable接受的参
这几天在项目里面发现我使用@Transactional注解事务之后,抛了异常居然不回滚。后来终于找到了原因。 如果你也出现了这种情况,可以从下面开始排查。 1、特性 先来了解一下@Trans
概述: ? 1
场景: 在处理定时任务时,由于这几个方法都是静态方法,在aop的切面中使用@Around注解,进行监控方法调用是否有异常。 发现aop没有生效。 代码如下:
最近做项目的时候 用户提出要上传大图片 一张图片有可能十几兆 本来用的第三方的上传控件 有限制图片上传大小的设置 以前设置的是2M&nb
我已经实现了这个SCIM reference code在我们的应用程序中。 我实现的代码确实通过了此postman link中存在的所有用户测试集合。 。我的 SCIM Api 也被 Azure 接受
我一直对“然后”不被等待的行为感到困扰,我明白其原因。然而,我仍然需要绕过它。这是我的用例。 doWork(family) { return doWork1(family)
我正在尝试查找 channel 中的消息是否仍然存在,但是,我不确定如何解决 promise ,查看其他答案和文档,我可以看到它可能是通过函数实现的,但我是不完全确定如何去做。我希望能在这方面获得一些
我有以下情况: 同一工作区中的 2 个 Eclipse 项目:Apa 和 Bepa(为简洁起见,使用化名)。 Apa 项目引用(包括)Bepa 项目。 我在 Bepa 有一个类 X,具有公共(publ
这个问题已经有答案了: Why am I getting a NoClassDefFoundError in Java? (31 个回答) 已关闭 6 年前。 我正在努力学习 spring。所以我输入
我正在写一个小游戏,屏幕上有许多圆圈在移动。 我在两个线程中管理圈子,如下所示: public void run() { int stepCount = 0; int dx;
我在使用 Sympy 求解方程时遇到问题。当我运行代码时,例如: 打印(校正(10)) 我希望它打印一个数字 f。相反,它给我错误:执行中止。 def correction(r): from
好吧,我制作的每个页面都有这个问题。我不确定我做错了什么,但我所有的页面都不适用于所有分辨率。可能是因为我使用的是宽屏?大声笑我不确定,但在小于宽屏分辨率的情况下,它永远不会看起来正确。它的某些部分你
我正在尝试像这样进行一个非常简单的文化 srting 检查 if(culture.ToUpper() == "ES-ES" || "IT-IT") { //do something } else
Closed. This question is off-topic. It is not currently accepting answers. Learn more。 想改进这个问题吗?Upda
我是一名优秀的程序员,十分优秀!