
Solución para CVE-2025-52881: Corrige la rotura de Docker/Podman en contenedores LXC de Proxmox causada por incompatibilidad de AppArmor con runc 1.2.7+. Envoltorio universal para community-scripts con configuración automática de AppArmor.
Solución para CVE-2025-52881: Corrige la rotura de Docker, Podman y otros entornos de ejecución de contenedores en contenedores LXC de Proxmox causada por incompatibilidad de AppArmor con runc 1.2.7+/1.3.2+
Actualizaciones de seguridad recientes a runc (versiones 1.2.7+ y 1.3.2+) y containerd (1.7.28-2+) introdujeron una incompatibilidad que rompe AppArmor cuando se ejecuta dentro de contenedores LXC de Proxmox. Esto provoca que Docker y otros entornos de ejecución de contenedores fallen con errores 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
Esto afecta a:
Referencia: opencontainers/runc#4968
Aunque degradar runc por debajo de 1.2.7/1.3.2 "solucionaría" el problema, expone su sistema a vulnerabilidades reales de escalada de privilegios que parcheó la actualización de seguridad. La solución en este repositorio es el enfoque recomendado.
Este repositorio proporciona herramientas que aplican y gestionan automáticamente la solución para AppArmor en contenedores LXC de Proxmox:
pve-script-wrapper.sh - Envoltorio universal para scripts de la comunidad de Proxmoxpve-docker-fix - Corrige contenedores existentes que ya están rotospve-docker-rollback - Elimina la solución cuando están disponibles correcciones oficialespct-patched - Envoltorio interno (usado automáticamente por pve-script-wrapper.sh)Los scripts detectan automáticamente el SO de su contenedor y aplican la solución AppArmor adecuada:
Para todos los contenedores:
lxc.apparmor.profile: unconfined
Solo para contenedores Ubuntu:
lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0
La primera línea deshabilita el confinamiento de AppArmor (requerido para todas las distribuciones). La segunda línea enmascara la detección del módulo AppArmor y solo es necesaria para contenedores Ubuntu; los contenedores Debian normalmente funcionan sin ella (runc#4968).
Detección Automática del SO: Los scripts detectan automáticamente si su contenedor es Ubuntu o Debian y aplican solo las líneas de configuración necesarias.
En su host Proxmox VE, ejecute:
# Descargar todos los 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
# Hacerlos ejecutables
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
O clone el repositorio:
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/
En lugar 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
Esto funciona con cualquier script de la comunidad de Proxmox que cree contenedores 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
# Y cualquier otro script que instale entornos de ejecución de contenedores
Si ya tiene un contenedor roto:
# Corregir contenedor 105
pve-docker-fix 105
# Corregir sin reinicio automático
pve-docker-fix 105 --no-restart
La herramienta:
Si prefiere aplicar la corrección manualmente:
# Detener el contenedor
pct stop 105
# Editar el archivo de configuración
nano /etc/pve/lxc/105.conf
# Agregar esta línea al final (requerida para todos los contenedores):
lxc.apparmor.profile: unconfined
# Para contenedores Ubuntu, agregar también esta línea:
lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0
# Iniciar el contenedor
pct start 105
Nota: Los contenedores Debian normalmente solo necesitan la primera línea. Los contenedores Ubuntu necesitan ambas líneas. Consulte runc#4968 para detalles técnicos.
Cuando estén disponibles correcciones oficiales (actualizaciones de Proxmox/LXC/AppArmor), puede eliminar la solución:
# Listar todos los contenedores con la solución
pve-docker-rollback --list
# Eliminar de un contenedor específico
pve-docker-rollback 105
# Vista previa de cambios sin modificar
pve-docker-rollback 105 --dry-run
# Eliminar de todos los contenedores a la vez
pve-docker-rollback --all
# Eliminar sin reinicio (los cambios se aplican en el próximo inicio)
pve-docker-rollback 105 --no-restart
# Eliminar de todos los contenedores sin confirmación
pve-docker-rollback --all --force
La herramienta de reversión:
--force)Cuándo revertir:
pct-patchedPATH para priorizar el envoltoriopct parcheadopct create/usr/sbin/pct para crear el contenedor/etc/pve/lxc/$CTID.confpctlxc.apparmor.profile: unconfined# Verificar que los scripts sean ejecutables
ls -l /usr/local/bin/pve-script-wrapper.sh /usr/local/bin/pct-patched
# Hacerlos ejecutables si es necesario
chmod +x /usr/local/bin/pve-script-wrapper.sh /usr/local/bin/pct-patched
# Verificar que la corrección se aplicó
grep -i apparmor /etc/pve/lxc/105.conf
# Comprobar el tipo de SO detectado
pct config 105 | grep ostype
# Para contenedores Ubuntu, asegurarse de que ambas líneas estén presentes:
# - lxc.apparmor.profile: unconfined
# - lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled...
# Si no están presentes, aplicar manualmente
pve-docker-fix 105
# Verificar que el contenedor se reinició
pct status 105
# Verificar errores de sintaxis en la configuración
cat /etc/pve/lxc/105.conf
# Ver mensajes de error detallados
journalctl -xe
¡Contribuciones bienvenidas! Por favor:
LICENCIA PÚBLICA GENERAL DE GNU - Consulte el archivo LICENSE para más detalles
# Instalar
curl -fsSL https://raw.githubusercontent.com/jq6l43d1/proxmox-lxc-docker-fix/main/install.sh | bash
# Ejecutar script de la comunidad con corrección
pve-script-wrapper.sh <script-url>
# Corregir contenedor existente
pve-docker-fix <container-id>
# Listar contenedores con la solución
pve-docker-rollback --list
# Eliminar la solución (cuando las correcciones oficiales estén disponibles)
pve-docker-rollback <container-id>
pve-docker-rollback --all
# Obtener ayuda
pve-script-wrapper.sh --help
pve-docker-fix --help
pve-docker-rollback --help
Nota: Esta es una solución temporal hasta que los proyectos oficiales publiquen correcciones permanentes. Monitoree los problemas de GitHub referenciados para actualizaciones.