
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.confpctlxc.apparmor.profile: unconfined# Verifica che gli script siano eseguibili
ls -l /usr/local/bin/pve-script-wrapper.sh /usr/local/bin/pct-patched
# Rendi eseguibili se necessario
chmod +x /usr/local/bin/pve-script-wrapper.sh /usr/local/bin/pct-patched
# Verifica che la correzione sia stata applicata
grep -i apparmor /etc/pve/lxc/105.conf
# Controlla il tipo di SO rilevato
pct config 105 | grep ostype
# Per contenitori Ubuntu, assicurati che entrambe le righe siano presenti:
# - lxc.apparmor.profile: unconfined
# - lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled...
# Se non presenti, applica manualmente
pve-docker-fix 105
# Controlla che il contenitore sia riavviato
pct status 105
# Controlla errori di sintassi nella configurazione
cat /etc/pve/lxc/105.conf
# Visualizza messaggi di errore dettagliati
journalctl -xe
I contributi sono benvenuti! Per favore:
GNU GENERAL PUBLIC LICENSE - Vedi il file LICENSE per i dettagli
# Installazione
curl -fsSL https://raw.githubusercontent.com/jq6l43d1/proxmox-lxc-docker-fix/main/install.sh | bash
# Esecuzione script comunità con correzione
pve-script-wrapper.sh <script-url>
# Correggi contenitore esistente
pve-docker-fix <container-id>
# Elenca contenitori con soluzione alternativa
pve-docker-rollback --list
# Rimuovi soluzione alternativa (quando correzioni a monte disponibili)
pve-docker-rollback <container-id>
pve-docker-rollback --all
# Ottieni aiuto
pve-script-wrapper.sh --help
pve-docker-fix --help
pve-docker-rollback --help
Nota: Questa è una soluzione alternativa temporanea fino a quando i progetti a monte non rilasceranno correzioni permanenti. Monitora i problemi GitHub referenziati per aggiornamenti.