
Solution de contournement pour CVE-2025-52881 : Corrige les problèmes de Docker/Podman dans les conteneurs Proxmox LXC causés par une incompatibilité d'AppArmor avec runc 1.2.7+. Wrapper universel pour community-scripts avec configuration automatique d'AppArmor.
Solution de contournement pour CVE-2025-52881 : Corrige les dysfonctionnements de Docker, Podman et des environnements d'exécution de conteneurs dans les conteneurs LXC Proxmox causés par une incompatibilité d'AppArmor avec runc 1.2.7+/1.3.2+
Des mises à jour de sécurité récentes de runc (versions 1.2.7+ et 1.3.2+) et containerd (1.7.28-2+) ont introduit une incompatibilité bloquante avec AppArmor lors de l'exécution dans des conteneurs LXC Proxmox. Cela provoque l'échec de Docker et des autres environnements d'exécution avec des erreurs comme :
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
Cela affecte :
Référence : opencontainers/runc#4968
Bien que rétrograder runc en dessous de 1.2.7/1.3.2 « résoudrait » le problème, cela expose votre système à de réelles vulnérabilités d'élévation de privilèges corrigées par la mise à jour de sécurité. La solution de contournement présente dans ce dépôt est l'approche recommandée.
Ce dépôt fournit des outils qui appliquent et gèrent automatiquement la solution de contournement AppArmor pour les conteneurs LXC Proxmox :
pve-script-wrapper.sh – Wrapper universel pour les scripts de la communauté Proxmoxpve-docker-fix – Corrige les conteneurs existants déjà casséspve-docker-rollback – Supprime la solution de contournement lorsque des correctifs en amont sont disponiblespct-patched – Wrapper interne (utilisé automatiquement par pve-script-wrapper.sh)Les scripts détectent automatiquement le système d'exploitation de votre conteneur et appliquent la solution de contournement AppArmor appropriée :
Pour tous les conteneurs :
lxc.apparmor.profile: unconfined
Pour les conteneurs Ubuntu uniquement :
lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0
La première ligne désactive le confinement AppArmor (nécessaire pour toutes les distributions). La seconde ligne masque la détection du module AppArmor et n'est nécessaire que pour les conteneurs Ubuntu – les conteneurs Debian fonctionnent généralement sans elle (runc#4968).
Détection automatique de l'OS : Les scripts détectent automatiquement si votre conteneur est Ubuntu ou Debian et n'appliquent que les lignes de configuration nécessaires.
Sur votre hôte Proxmox VE, exécutez :
# Téléchargement de tous les 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
# Rendre exécutables
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 clonez le dépôt :
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/
Au lieu de :
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/komodo.sh)"
Utilisez :
pve-script-wrapper.sh https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/komodo.sh
Cela fonctionne avec n'importe quel script de la communauté Proxmox créant des conteneurs 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
# Et tout autre script qui installe des environnements d'exécution de conteneurs
Si vous avez déjà un conteneur cassé :
# Corriger le conteneur 105
pve-docker-fix 105
# Corriger sans redémarrage automatique
pve-docker-fix 105 --no-restart
L'outil va :
Si vous préférez appliquer la correction manuellement :
# Arrêter le conteneur
pct stop 105
# Éditer le fichier de configuration
nano /etc/pve/lxc/105.conf
# Ajouter cette ligne à la fin (requise pour tous les conteneurs) :
lxc.apparmor.profile: unconfined
# Pour les conteneurs Ubuntu, ajouter également cette ligne :
lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0
# Démarrer le conteneur
pct start 105
Remarque : Les conteneurs Debian nécessitent généralement uniquement la première ligne. Les conteneurs Ubuntu ont besoin des deux lignes. Voir runc#4968 pour les détails techniques.
Lorsque des correctifs en amont seront disponibles (mises à jour Proxmox/LXC/AppArmor), vous pourrez supprimer la solution de contournement :
# Lister tous les conteneurs avec la solution de contournement
pve-docker-rollback --list
# Supprimer d'un conteneur spécifique
pve-docker-rollback 105
# Prévisualiser les modifications sans les appliquer
pve-docker-rollback 105 --dry-run
# Supprimer de tous les conteneurs en une fois
pve-docker-rollback --all
# Supprimer sans redémarrage (les modifications s'appliquent au prochain démarrage)
pve-docker-rollback 105 --no-restart
# Supprimer de tous les conteneurs sans confirmation
pve-docker-rollback --all --force
L'outil d'annulation va :
--force)Quand annuler :
pct-patchedPATH pour prioriser le wrapperpct corrigéepct create/usr/sbin/pct pour créer le conteneur/etc/pve/lxc/$CTID.confpct inchangéeslxc.apparmor.profile: unconfined# Vérifier que les scripts sont exécutables
ls -l /usr/local/bin/pve-script-wrapper.sh /usr/local/bin/pct-patched
# Les rendre exécutables si nécessaire
chmod +x /usr/local/bin/pve-script-wrapper.sh /usr/local/bin/pct-patched
# Vérifier que la correction a été appliquée
grep -i apparmor /etc/pve/lxc/105.conf
# Vérifier le type d'OS détecté
pct config 105 | grep ostype
# Pour les conteneurs Ubuntu, vérifier que les deux lignes sont présentes :
# - lxc.apparmor.profile: unconfined
# - lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled...
# Si absentes, appliquer manuellement
pve-docker-fix 105
# Vérifier que le conteneur a redémarré
pct status 105
# Vérifier les erreurs de syntaxe dans la configuration
cat /etc/pve/lxc/105.conf
# Consulter les messages d'erreur détaillés
journalctl -xe
Les contributions sont les bienvenues ! Merci de :
LICENCE PUBLIQUE GÉNÉRALE GNU – Consultez le fichier LICENSE pour plus de détails
# Installation
curl -fsSL https://raw.githubusercontent.com/jq6l43d1/proxmox-lxc-docker-fix/main/install.sh | bash
# Exécuter un script communautaire avec correction
pve-script-wrapper.sh <url-du-script>
# Corriger un conteneur existant
pve-docker-fix <id-conteneur>
# Lister les conteneurs avec la solution de contournement
pve-docker-rollback --list
# Supprimer la solution de contournement (quand les correctifs en amont sont disponibles)
pve-docker-rollback <id-conteneur>
pve-docker-rollback --all
# Obtenir de l'aide
pve-script-wrapper.sh --help
pve-docker-fix --help
pve-docker-rollback --help
Remarque : Ceci est une solution de contournement temporaire jusqu'à ce que les projets en amont publient des correctifs permanents. Surveillez les problèmes GitHub référencés pour les mises à jour.