Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
proxmox-lxc-docker-fix — 针对 CVE-2025-52881 的规避方案:修复因 AppArmor 与 runc 1.2.7+ 不兼容而导致的 Proxmox LXC 容器中 Docker/Podman 故障。适用于 community-scripts 的通用封装器,可自动配置 AppArmor。 | Kitploit
工具/GitHubGitHub/jq6l43d1/proxmox-lxc-docker-fix
云基础设施安全容器安全漏洞分析脚本与自动化DevSecOps错误配置
GitHubjq6l43d1/proxmox-lxc-docker-fix

proxmox-lxc-docker-fix

针对 CVE-2025-52881 的规避方案:修复因 AppArmor 与 runc 1.2.7+ 不兼容而导致的 Proxmox LXC 容器中 Docker/Podman 故障。适用于 community-scripts 的通用封装器,可自动配置 AppArmor。

查看仓库
152310个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Proxmox LXC 的 Docker/容器 AppArmor 修复

针对 CVE-2025-52881 的临时解决方案:修复因 AppArmor 与 runc 1.2.7+/1.3.2+ 不兼容而导致 Proxmox LXC 容器中 Docker、Podman 及容器运行时崩溃的问题

🚨 问题

runc(1.2.7+ 和 1.3.2+ 版本)与 containerd(1.7.28-2+ 以上版本)的最新安全更新在 Proxmox LXC 容器内运行时引入了与 AppArmor 的破坏性不兼容。这会导致 Docker 和其他容器运行时出现如下错误:

root@kitploit:~
OCI runtime create failed: unable to start container process:
error during container init: open sysctl net.ipv4.ip_unprivileged_port_start file:
reopen fd 8: permission denied

这会影响:

  • ✗ Proxmox 社区脚本(docker.sh、komodo.sh、dockge.sh、casaos.sh 等)
  • ✗ 在 LXC 中手动安装的 Docker/Podman
  • ✗ 在 LXC 容器内使用 runc 的任何容器运行时

参考:opencontainers/runc#4968

⚠️ 请勿降级 runc

将 runc 降级到 1.2.7/1.3.2 以下虽然可以“修复”该问题,但会让您的系统暴露于安全更新所修补的实际权限提升漏洞中。本仓库提供的临时解决方案是推荐的做法。

✅ 解决方案

本仓库提供了可自动应用并管理 Proxmox LXC 容器 AppArmor 临时解决方案的工具:

  1. pve-script-wrapper.sh - 适用于 Proxmox 社区脚本的通用包装器
  2. pve-docker-fix - 修复已经损坏的现有容器
  3. pve-docker-rollback - 在上游修复可用时移除临时解决方案
  4. pct-patched - 内部包装器(由 pve-script-wrapper.sh 自动使用)

工作原理

这些脚本会自动检测容器的操作系统,并应用相应的 AppArmor 临时解决方案:

适用于所有容器:

root@kitploit:~
lxc.apparmor.profile: unconfined

仅适用于 Ubuntu 容器:

root@kitploit:~
lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0

第一行禁用 AppArmor 强制限制(所有发行版都需要)。第二行屏蔽 AppArmor 模块检测,仅 Ubuntu 容器需要——Debian 容器通常无需此行即可正常工作(runc#4968)。

操作系统自动检测: 脚本会自动检测您的容器是 Ubuntu 还是 Debian,并且只应用必要的配置行。

📦 安装

在您的 Proxmox VE 主机上运行:

root@kitploit:~
# Download all scripts
curl -fsSL https://raw.githubusercontent.com/jq6l43d1/proxmox-lxc-docker-fix/main/pve-script-wrapper.sh -o /usr/local/bin/pve-script-wrapper.sh
curl -fsSL https://raw.githubusercontent.com/jq6l43d1/proxmox-lxc-docker-fix/main/pct-patched -o /usr/local/bin/pct-patched
curl -fsSL https://raw.githubusercontent.com/jq6l43d1/proxmox-lxc-docker-fix/main/pve-docker-fix -o /usr/local/bin/pve-docker-fix
curl -fsSL https://raw.githubusercontent.com/jq6l43d1/proxmox-lxc-docker-fix/main/pve-docker-rollback -o /usr/local/bin/pve-docker-rollback

# Make them executable
chmod +x /usr/local/bin/pve-script-wrapper.sh /usr/local/bin/pct-patched /usr/local/bin/pve-docker-fix /usr/local/bin/pve-docker-rollback

或者克隆仓库:

root@kitploit:~
git clone https://github.com/jq6l43d1/proxmox-lxc-docker-fix.git
cd proxmox-lxc-docker-fix
chmod +x *.sh pct-patched pve-docker-fix pve-docker-rollback
cp pve-script-wrapper.sh pct-patched pve-docker-fix pve-docker-rollback /usr/local/bin/

🚀 使用方法

使用自动修复运行社区脚本

不要使用:

root@kitploit:~
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/komodo.sh)"

而应使用:

root@kitploit:~
pve-script-wrapper.sh https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/komodo.sh

这适用于任何创建 LXC 容器的 Proxmox 社区脚本:

root@kitploit:~
# Docker
pve-script-wrapper.sh https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/docker.sh

# Dockge
pve-script-wrapper.sh https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/dockge.sh

# CasaOS
pve-script-wrapper.sh https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/casaos.sh

# Podman
pve-script-wrapper.sh https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/podman.sh

# And any other script that installs container runtimes

以及任何其他安装容器运行时的脚本。

修复现有容器

如果您已经有一个损坏的容器:

root@kitploit:~
# Fix container 105
pve-docker-fix 105

# Fix without automatic restart
pve-docker-fix 105 --no-restart

该工具将:

  1. 检查修复是否已经应用
  2. 停止容器(需要确认)
  3. 应用 AppArmor 临时解决方案
  4. 重启容器

手动修复

如果您希望手动应用修复:

root@kitploit:~
# Stop the container
pct stop 105

# Edit the config file
nano /etc/pve/lxc/105.conf

# Add this line at the end (required for all containers):
lxc.apparmor.profile: unconfined

# For Ubuntu containers, also add this line:
lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0

# Start the container
pct start 105

注意: Debian 容器通常只需要第一行。Ubuntu 容器需要两行。有关技术细节,请参阅 runc#4968。

回滚修复

当上游修复可用时(Proxmox/LXC/AppArmor 更新),您可以移除临时解决方案:

root@kitploit:~
# List all containers with the workaround
pve-docker-rollback --list

# Remove from specific container
pve-docker-rollback 105

# Preview changes without modifying
pve-docker-rollback 105 --dry-run

# Remove from all containers at once
pve-docker-rollback --all

# Remove without restart (changes apply on next start)
pve-docker-rollback 105 --no-restart

# Remove from all containers without confirmation
pve-docker-rollback --all --force

回滚工具将:

  1. 检测是否已应用临时解决方案
  2. 显示将要移除的行
  3. 请求确认(除非使用 --force)
  4. 移除 AppArmor 配置
  5. 如果需要,重启容器

何时回滚:

  • 等待上游修复可用的公告
  • 关注 runc#4968 的更新
  • 先在非关键容器上测试
  • 在从生产环境移除之前,验证回滚后 Docker/容器是否正常工作

🔧 技术原理

pve-script-wrapper.sh

  • 创建一个包含指向 pct-patched 符号链接的临时目录
  • 修改 PATH 以优先使用包装器
  • 下载并执行社区脚本
  • 该脚本透明地使用打过补丁的 pct 命令

pct-patched

  • 拦截 pct create 命令
  • 调用真实的 /usr/sbin/pct 来创建容器
  • 检测容器操作系统类型(Ubuntu 与 Debian)
  • 创建后立即将相应的 AppArmor 配置注入到 /etc/pve/lxc/$CTID.conf
  • 将其余所有 pct 命令原样传递

pve-docker-fix

  • 用于修复现有容器的独立工具
  • 自动检测容器操作系统类型
  • 检查修复是否已应用(幂等)
  • 根据操作系统只应用必要的配置行
  • 在用户确认后处理容器的停止/启动
  • 可安全地多次运行

pve-docker-rollback

  • 在不再需要时移除 AppArmor 临时解决方案
  • 扫描所有容器以查找已应用临时解决方案的容器
  • 安全地移除注释块和配置行
  • 支持单个容器、批量(--all)或列表模式
  • 干运行模式,可在应用前预览更改
  • 在确认后处理容器重启
  • 幂等且可安全地多次运行

🛡️ 安全注意事项

这会改变什么

  • 禁用 LXC 容器的 AppArmor 强制限制
  • 移除一层纵深防御

仍然受到保护的内容

  • 容器仍然是非特权的(最重要的安全边界)
  • 内核命名空间仍然强制隔离
  • cgroups 资源限制仍然生效
  • 标准的 Linux 权限仍然有效

风险评估

  • 风险:如果容器被攻破,隔离性会略有降低
  • 缓解措施:容器仍然是非特权的,这是主要的安全控制
  • 对比:比降级 runc 并暴露真实 CVE 要安全得多

何时不应使用

  • 需要最大隔离的生产环境
  • 包含不受信任容器的多租户系统
  • 运行不受信任代码的容器

替代方案

  • 等待上游修复(Proxmox/LXC/AppArmor/内核)
  • 使用特权容器(不推荐——安全性更差)
  • 使用虚拟机代替容器(开销更大)

📋 受影响系统

已确认受影响

  • 带有最新更新的 Proxmox VE 8.x
  • Debian 12 (Bookworm) LXC 容器
  • Ubuntu LXC 容器(所有近期版本)
  • runc 版本 1.2.7+ 和 1.3.2+
  • containerd 版本 1.7.28-2+

各操作系统的注意事项

  • Debian 容器:通常只需 lxc.apparmor.profile: unconfined
  • Ubuntu 容器:需要两行配置(profile + mount entry)
  • 脚本会自动检测操作系统并应用相应的修复

已知受影响的社区脚本

  • docker.sh
  • komodo.sh
  • dockge.sh
  • casaos.sh
  • podman.sh
  • runtipi.sh
  • omv.sh(OpenMediaVault)
  • alpine-docker.sh
  • podman-homeassistant.sh
  • 以及 390 多个其他基于容器的脚本

🔗 参考资料

  • 主要问题:opencontainers/runc#4968
  • CVE:CVE-2025-52881
  • 相关 CVE:CVE-2025-31133、CVE-2025-52565
  • Proxmox 论坛讨论:Community Scripts Issue #8890
  • Incus 修复:PR #2624

🐛 故障排除

脚本无法正常工作

root@kitploit:~
# Verify scripts are executable
ls -l /usr/local/bin/pve-script-wrapper.sh /usr/local/bin/pct-patched

# Make them executable if needed
chmod +x /usr/local/bin/pve-script-wrapper.sh /usr/local/bin/pct-patched

应用修复后 Docker 仍然失败

root@kitploit:~
# Verify the fix was applied
grep -i apparmor /etc/pve/lxc/105.conf

# Check detected OS type
pct config 105 | grep ostype

# For Ubuntu containers, ensure both lines are present:
# - lxc.apparmor.profile: unconfined
# - lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled...

# If not present, apply manually
pve-docker-fix 105

# Check container is restarted
pct status 105

应用修复后容器无法启动

root@kitploit:~
# Check for syntax errors in config
cat /etc/pve/lxc/105.conf

# View detailed error messages
journalctl -xe

🤝 贡献

欢迎贡献!请:

  1. 在 Proxmox VE 系统上测试您的更改
  2. 如果添加功能,请更新文档
  3. 遵循现有代码风格
  4. 提交带有清晰描述的 PR

📝 许可证

GNU 通用公共许可证 - 有关详细信息,请参阅 LICENSE 文件

🙏 致谢

  • opencontainers/runc 团队提供安全修复
  • community-scripts/ProxmoxVE 维护者
  • 所有参与问题讨论的贡献者

⚡ 快速参考

root@kitploit:~
# Install
curl -fsSL https://raw.githubusercontent.com/jq6l43d1/proxmox-lxc-docker-fix/main/install.sh | bash

# Run community script with fix
pve-script-wrapper.sh <script-url>

# Fix existing container
pve-docker-fix <container-id>

# List containers with workaround
pve-docker-rollback --list

# Remove workaround (when upstream fixes available)
pve-docker-rollback <container-id>
pve-docker-rollback --all

# Get help
pve-script-wrapper.sh --help
pve-docker-fix --help
pve-docker-rollback --help

注意:这是一个临时解决方案,直到上游项目发布永久修复。请关注所引用的 GitHub issues 以获取更新。

下载工具