
CVE-2025-52881 워크어라운드: runc 1.2.7+와의 AppArmor 비호환성으로 인해 Proxmox LXC 컨테이너에서 발생하는 Docker/Podman 오작동을 수정합니다. 자동 AppArmor 구성을 갖춘 community-scripts용 범용 래퍼.
CVE-2025-52881 우회 방법: AppArmor와 runc 1.2.7+/1.3.2+의 비호환성으로 인해 Proxmox LXC 컨테이너에서 발생하는 Docker, Podman 및 컨테이너 런타임 오류를 수정합니다.
runc(1.2.7+ 및 1.3.2+) 및 containerd(1.7.28-2+)에 대한 최근 보안 업데이트는 Proxmox LXC 컨테이너 내에서 실행할 때 AppArmor와의 치명적인 비호환성을 도입했습니다. 이로 인해 Docker 및 기타 컨테이너 런타임이 다음과 같은 오류로 실패합니다:
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
영향을 받는 대상:
runc를 1.2.7/1.3.2 미만으로 다운그레이드하면 문제가 "해결"되지만, 보안 업데이트가 패치한 실제 권한 상승 취약점에 시스템이 노출됩니다. 이 저장소의 우회 방법이 권장되는 접근 방식입니다.
이 저장소는 Proxmox LXC 컨테이너용 AppArmor 우회 방법을 자동으로 적용하고 관리하는 도구를 제공합니다:
pve-script-wrapper.sh - Proxmox 커뮤니티 스크립트용 범용 래퍼pve-docker-fix - 이미 손상된 기존 컨테이너 수정pve-docker-rollback - 상위 프로젝트 수정 사항이 제공되면 우회 방법 제거pct-patched - 내부 래퍼 (pve-script-wrapper.sh에 의해 자동으로 사용됨)스크립트는 컨테이너의 OS를 자동으로 감지하여 적절한 AppArmor 우회 방법을 적용합니다:
모든 컨테이너의 경우:
lxc.apparmor.profile: unconfined
Ubuntu 컨테이너 전용:
lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0
첫 번째 줄은 AppArmor 격리를 비활성화합니다(모든 배포판에 필요). 두 번째 줄은 AppArmor 모듈 감지를 차단하며 Ubuntu 컨테이너에만 필요합니다 - Debian 컨테이너는 일반적으로 이것 없이도 작동합니다 (runc#4968).
OS 자동 감지: 스크립트는 컨테이너가 Ubuntu인지 Debian인지 자동으로 감지하여 필요한 구성 줄만 적용합니다.
Proxmox VE 호스트에서 다음을 실행하세요:
# 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
또는 저장소를 클론하세요:
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/
다음 대신에:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/komodo.sh)"
사용:
pve-script-wrapper.sh https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/komodo.sh
이것은 LXC 컨테이너를 생성하는 모든 Proxmox 커뮤니티 스크립트와 함께 작동합니다:
# 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
이미 손상된 컨테이너가 있다면:
# Fix container 105
pve-docker-fix 105
# Fix without automatic restart
pve-docker-fix 105 --no-restart
이 도구는 다음을 수행합니다:
수동으로 수정 사항을 적용하려면:
# 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
참고: Debian 컨테이너는 일반적으로 첫 번째 줄만 필요합니다. Ubuntu 컨테이너는 두 줄 모두 필요합니다. 기술적 세부 사항은 runc#4968을 참조하세요.
상위 프로젝트 수정 사항(Proxmox/LXC/AppArmor 업데이트)이 제공되면 우회 방법을 제거할 수 있습니다:
# 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
롤백 도구는 다음을 수행합니다:
--force가 아닌 경우)롤백 시점:
pct-patched에 대한 심볼릭 링크가 있는 임시 디렉터리를 생성합니다PATH를 수정합니다pct 명령을 투명하게 사용합니다pct create 명령을 가로챕니다/usr/sbin/pct를 호출합니다/etc/pve/lxc/$CTID.conf에 주입합니다pct 명령은 변경 없이 전달합니다lxc.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
기여를 환영합니다! 다음을 지켜주세요:
GNU 일반 공중 사용 허가서(GPL) - 자세한 내용은 LICENSE 파일을 참조하세요
# 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
참고: 이것은 상위 프로젝트가 영구적인 수정 사항을 출시할 때까지의 임시 우회 방법입니다. 업데이트를 위해 참조된 GitHub 이슈를 모니터링하세요.