
Solução alternativa para CVE-2025-52881: Corrige falhas no Docker/Podman em contêineres LXC do Proxmox causadas por incompatibilidade do AppArmor com runc 1.2.7+. Wrapper universal para community-scripts com configuração automática do AppArmor.
Solução alternativa para CVE-2025-52881: Corrige a quebra do Docker, Podman e dos runtimes de containers em containers Proxmox LXC causada pela incompatibilidade do AppArmor com runc 1.2.7+/1.3.2+
Atualizações recentes de segurança em runc (versões 1.2.7+ e 1.3.2+) e containerd (1.7.28-2+) introduziram uma incompatibilidade grave com o AppArmor quando executados dentro de containers Proxmox LXC. Isso faz com que o Docker e outros runtimes de containers falhem com erros como:
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
Isso afeta:
Referência: opencontainers/runc#4968
Embora fazer downgrade do runc para versões anteriores a 1.2.7/1.3.2 "corrija" o problema, isso expõe seu sistema a vulnerabilidades reais de escalonamento de privilégios que a atualização de segurança corrigiu. A solução alternativa neste repositório é a abordagem recomendada.
Este repositório fornece ferramentas que aplicam e gerenciam automaticamente a solução alternativa do AppArmor para containers Proxmox LXC:
pve-script-wrapper.sh - Wrapper universal para scripts da comunidade Proxmoxpve-docker-fix - Corrige containers existentes que já estão quebradospve-docker-rollback - Remove a solução alternativa quando houver correções upstream disponíveispct-patched - Wrapper interno (usado automaticamente pelo pve-script-wrapper.sh)Os scripts detectam automaticamente o sistema operacional do seu container e aplicam a solução alternativa adequada do AppArmor:
Para todos os containers:
lxc.apparmor.profile: unconfined
Somente para containers Ubuntu:
lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0
A primeira linha desativa o confinamento do AppArmor (necessário para todas as distribuições). A segunda linha mascara a detecção do módulo AppArmor e só é necessária para containers Ubuntu - containers Debian normalmente funcionam sem ela (runc#4968).
Detecção automática de SO: Os scripts detectam automaticamente se o seu container é Ubuntu ou Debian e aplicam apenas as linhas de configuração necessárias.
No seu host Proxmox VE, execute:
# 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
Ou clone o repositório:
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/
Em vez de:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/komodo.sh)"
Use:
pve-script-wrapper.sh https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/komodo.sh
Isso funciona com qualquer script da comunidade Proxmox que crie containers LXC:
# 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
Se você já tem um container quebrado:
# Fix container 105
pve-docker-fix 105
# Fix without automatic restart
pve-docker-fix 105 --no-restart
A ferramenta irá:
Se você preferir aplicar a correção manualmente:
# 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
Nota: Containers Debian normalmente precisam apenas da primeira linha. Containers Ubuntu precisam de ambas as linhas. Consulte runc#4968 para detalhes técnicos.
Quando houver correções upstream disponíveis (atualizações do Proxmox/LXC/AppArmor), você pode remover a solução alternativa:
# 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
A ferramenta de rollback irá:
--force)Quando reverter:
pct-patchedPATH para priorizar o wrapperpct corrigidopct create/usr/sbin/pct real para criar o container/etc/pve/lxc/$CTID.confpct sem alteraçõeslxc.apparmor.profile: unconfined# 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
# 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
# Check for syntax errors in config
cat /etc/pve/lxc/105.conf
# View detailed error messages
journalctl -xe
Contribuições são bem-vindas! Por favor:
GNU GENERAL PUBLIC LICENSE - Consulte o arquivo LICENSE para obter detalhes
# 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
Nota: Esta é uma solução alternativa temporária até que os projetos upstream lancem correções permanentes. Monitore as issues do GitHub referenciadas para atualizações.