Docker Desktop 4.43.0至4.93.x的旧诊断文件如何用Python建立清单

认真发呆
认真发呆
发布时间:2026-11-13| 7人浏览过
原创

用Python标准库为已知诊断材料目录生成路径、大小和SHA-256清单,不显示文件正文、不自动删除,区分盘点与实际修复。

Docker Desktop 4.43.0至4.93.x的旧诊断文件如何用Python建立清单?对已经确认保存诊断包或Desktop日志副本的目录,使用标准库记录文件相对路径、大小和SHA-256,可以帮助区分材料与重复副本;清单不能判断文件是否含令牌,也不会完成脱敏。CVE-2026-123082涉及这些版本可能把登录用户的Docker Hub访问令牌写入本地应用日志和诊断包,4.94.0列出修复,历史材料仍需按官方要求删除或脱敏。

Docker Desktop产品场景

清单的对象是已知材料目录,不是任意系统目录

这个方法适用于自己已经另存的诊断包和日志集合,例如排障时保存到一个资料目录的文件。目录由使用者根据实际保存情况指定,脚本不猜测Docker内部存储位置,也不把所有容器日志都划入该CVE。生成材料时的Docker Desktop版本和当时是否登录Docker Hub,仍需要结合已有部署及排障记录判断。

下面代码适用于Python 3.10或更新版本,仅使用标准库。将root值换成实际材料目录后,在有读取权限的本地环境运行。输出只含文件相对路径、字节数、SHA-256或读取错误;不会把文件正文写到终端,不解析压缩包内容,也不更改或删除文件。

python - <<'PY'
from pathlib import Path
import hashlib
import json

root = Path("/path/to/saved-docker-diagnostics").expanduser()
if not root.is_dir():
    raise SystemExit("请将root替换为实际保存诊断材料的目录。")

rows = []
for path in sorted(root.rglob("*")):
    if path.is_symlink() or not path.is_file():
        continue
    item = {"path": str(path.relative_to(root))}
    try:
        digest = hashlib.sha256()
        count = 0
        with path.open("rb") as stream:
            for block in iter(lambda: stream.read(1024 * 1024), b""):
                digest.update(block)
                count += len(block)
        item.update(bytes=count, sha256=digest.hexdigest())
    except OSError as error:
        item["error"] = type(error).__name__
    rows.append(item)
print(json.dumps(rows, ensure_ascii=False, indent=2))
PY

正常结果是JSON数组,一项对应一个被读取的普通文件;没有文件时为空数组。相同字节内容会得到相同哈希,可用于识别相同副本。不同压缩包即使含有相同内部文件,也可能有不同哈希,因此不能把“哈希不同”当作内容完全无关的证明。目录不存在时脚本会停止,读取失败的文件会列出错误类型,不能当作已完成检查。

版本范围与文件风险需要分别记录

Docker安全修复记录中的CVE、版本范围和历史材料处置要求

官方条目明确,Docker Desktop 4.43.0至4.93.x可能把已登录用户的Docker Hub访问令牌以明文写入本地应用日志及诊断包。这里的令牌不是任意业务密钥,文件范围也不是所有容器标准输出。脚本生成的清单只是对已知材料的盘点,无法从文件名或哈希判断是否真的记录过令牌。

如果目录里混有其他软件资料,脚本也会列出它们;这不把它们自动变成受影响文件。使用清单时,应保留文件来源、产生时期和副本保存关系,而不是只根据扩展名做安全结论。

本机清单不能覆盖已经分享的副本

官方要求处理受影响版本生成或分享的诊断包,以及保存在其他位置的Desktop日志。因此,一个本地目录的清单只对应这一处存储。已经发送给支持人员、同事或另存至团队空间的副本,不会因为本机目录整理完成就自动消失。

SHA-256可以帮助识别同一份材料在不同位置的相同字节副本,但不是远程删除机制,也不证明对方保存的材料已经脱敏。把清单与实际分享范围联系起来,比把当前目录为空当作全部收尾更准确。

盘点、软件修复和删除脱敏不是同一步

4.94.0发行说明列出这个CVE的修复,升级解决软件实现问题,清单帮助识别保存了哪些文件,删除或脱敏则处理历史材料。三个结果有不同意义,不能因为一个脚本顺利输出JSON,就称已经修复漏洞或清除了令牌。

数据清理、恢复出厂设置和历史副本处置同样不同。重置本机Docker数据不会自动处理外部存储中的诊断包,还可能影响容器、镜像或设置。这个清单脚本刻意只读取文件,使盘点结果可以先被审阅;后续材料处置应明确针对实际文件,不把大范围重置当作替代。

相关专题:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。