
Soluzione alternativa per CVE-2025-52881: Risolve il malfunzionamento di Docker/Podman nei container Proxmox LXC causato dall'incompatibilità di AppArmor con runc 1.2.7+. Wrapper universale per community-scripts con configurazione automatica di AppArmor.
Soluzione alternativa per CVE-2025-52881: Risolve il malfunzionamento di Docker, Podman e runtime dei contenitori nei contenitori LXC di Proxmox causato dall'incompatibilità di AppArmor con runc 1.2.7+/1.3.2+
Gli aggiornamenti di sicurezza recenti di runc (versioni 1.2.7+ e 1.3.2+) e containerd (1.7.28-2+) hanno introdotto un'incompatibilità critica con AppArmor quando si esegue all'interno di contenitori LXC di Proxmox. Ciò causa il fallimento di Docker e di altri runtime di contenitori con errori come:
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
Questo interessa:
Riferimento: opencontainers/runc#4968
Anche se effettuare il downgrade di runc a una versione inferiore alla 1.2.7/1.3.2 "risolverebbe" il problema, esporrebbe il sistema a vulnerabilità reali di escalation dei privilegi che l'aggiornamento di sicurezza ha corretto. La soluzione alternativa in questo repository è l'approccio raccomandato.
Questo repository fornisce strumenti che applicano e gestiscono automaticamente la soluzione alternativa di AppArmor per i contenitori LXC di Proxmox:
pve-script-wrapper.sh - Wrapper universale per gli script della comunità di Proxmoxpve-docker-fix - Risolve i contenitori esistenti già danneggiatipve-docker-rollback - Rimuove la soluzione alternativa quando saranno disponibili correzioni a montepct-patched - Wrapper interno (usato automaticamente da pve-script-wrapper.sh)Gli script rilevano automaticamente il sistema operativo del tuo contenitore e applicano la soluzione alternativa appropriata per AppArmor:
Per tutti i contenitori:
lxc.apparmor.profile: unconfined
Solo per contenitori Ubuntu:
lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0
La prima riga disabilita il confinamento di AppArmor (necessario per tutte le distribuzioni). La seconda riga maschera il rilevamento del modulo AppArmor ed è necessaria solo per i contenitori Ubuntu – i contenitori Debian tipicamente funzionano senza (runc#4968).
Rilevamento automatico del SO: Gli script rilevano automaticamente se il tuo contenitore è Ubuntu o Debian e applicano solo le righe di configurazione necessarie.
Sull'host Proxmox VE, esegui:
# Scarica tutti gli script
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
# Rendi eseguibili
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
Oppure clona il repository:
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/
Invece di:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/komodo.sh)"
Usa:
pve-script-wrapper.sh https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/komodo.sh
Questo funziona con qualsiasi script della comunità di Proxmox che crea contenitori 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
# E qualsiasi altro script che installa runtime di contenitori
Se hai già un contenitore danneggiato:
# Correggi il contenitore 105
pve-docker-fix 105
# Correggi senza riavvio automatico
pve-docker-fix 105 --no-restart
Lo strumento:
Se preferisci applicare la correzione manualmente:
# Arresta il contenitore
pct stop 105
# Modifica il file di configurazione
nano /etc/pve/lxc/105.conf
# Aggiungi questa riga alla fine (necessaria per tutti i contenitori):
lxc.apparmor.profile: unconfined
# Per contenitori Ubuntu, aggiungi anche questa riga:
lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0
# Avvia il contenitore
pct start 105
Nota: I contenitori Debian tipicamente necessitano solo della prima riga. I contenitori Ubuntu necessitano di entrambe le righe. Vedi runc#4968 per dettagli tecnici.
Quando saranno disponibili correzioni a monte (aggiornamenti di Proxmox/LXC/AppArmor), puoi rimuovere la soluzione alternativa:
# Elenca tutti i contenitori con la soluzione alternativa
pve-docker-rollback --list
# Rimuovi da un contenitore specifico
pve-docker-rollback 105
# Anteprima delle modifiche senza apportarle
pve-docker-rollback 105 --dry-run
# Rimuovi da tutti i contenitori contemporaneamente
pve-docker-rollback --all
# Rimuovi senza riavvio (le modifiche si applicano al prossimo avvio)
pve-docker-rollback 105 --no-restart
# Rimuovi da tutti i contenitori senza conferma
pve-docker-rollback --all --force
Lo strumento di annullamento:
--force)Quando annullare:
pct-patchedPATH per dare priorità al wrapperpct modificatopct create/usr/sbin/pct per creare il contenitore/etc/pve/lxc/$CTID.confpct