
CVE-2025-52881 の回避策: Proxmox LXCコンテナ内で、AppArmorとrunc 1.2.7+の非互換性によって引き起こされるDocker/Podmanの破損を修正します。自動AppArmor構成を備えたcommunity-scripts用のユニバーサルラッパー。
CVE-2025-52881 の回避策: Proxmox LXC コンテナ内で、runc 1.2.7+/1.3.2+ との AppArmor 非互換性によって発生する 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 の制限を無効にし (すべてのディストリビューションで必要)、2 行目は AppArmor モジュールの検出をマスクし、Ubuntu コンテナでのみ必要です。Debian コンテナは通常、これがなくても動作します (runc#4968)。
OS 自動検出: スクリプトはコンテナが Ubuntu か Debian かを自動検出し、必要な設定行のみを適用します。
Proxmox VE ホストで以下を実行します:
# すべてのスクリプトをダウンロード
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
# 実行可能にする
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
# その他コンテナランタイムをインストールするスクリプトすべて
既に壊れているコンテナがある場合:
# コンテナ 105 を修正
pve-docker-fix 105
# 自動再起動なしで修正
pve-docker-fix 105 --no-restart
このツールは以下を行います:
手動で修正を適用したい場合:
# コンテナを停止
pct stop 105
# 設定ファイルを編集
nano /etc/pve/lxc/105.conf
# この行を最後に追加 (すべてのコンテナで必要):
lxc.apparmor.profile: unconfined
# Ubuntu コンテナの場合、この行も追加:
lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0
# コンテナを起動
pct start 105
注: Debian コンテナは通常、最初の行のみが必要です。Ubuntu コンテナは両方の行が必要です。技術的な詳細は runc#4968 を参照してください。
上流の修正が利用可能になったら (Proxmox/LXC/AppArmor のアップデート)、回避策を削除できます:
# 回避策が適用されたすべてのコンテナを一覧表示
pve-docker-rollback --list
# 特定のコンテナから削除
pve-docker-rollback 105
# 変更をプレビュー (変更は加えない)
pve-docker-rollback 105 --dry-run
# すべてのコンテナから一度に削除
pve-docker-rollback --all
# 再起動なしで削除 (変更は次回起動時に適用)
pve-docker-rollback 105 --no-restart
# 確認なしですべてのコンテナから削除
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 のみ必要# スクリプトが実行可能か確認
ls -l /usr/local/bin/pve-script-wrapper.sh /usr/local/bin/pct-patched
# 必要に応じて実行可能にする
chmod +x /usr/local/bin/pve-script-wrapper.sh /usr/local/bin/pct-patched
# 修正が適用されたか確認
grep -i apparmor /etc/pve/lxc/105.conf
# 検出された OS タイプを確認
pct config 105 | grep ostype
# Ubuntu コンテナの場合、両方の行が存在することを確認:
# - lxc.apparmor.profile: unconfined
# - lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled...
# 存在しない場合、手動で適用
pve-docker-fix 105
# コンテナが再起動されたか確認
pct status 105
# 設定の構文エラーを確認
cat /etc/pve/lxc/105.conf
# 詳細なエラーメッセージを表示
journalctl -xe
貢献大歓迎です!以下の点にご注意ください:
GNU GENERAL PUBLIC LICENSE - 詳細は LICENSE ファイルを参照
# インストール
curl -fsSL https://raw.githubusercontent.com/jq6l43d1/proxmox-lxc-docker-fix/main/install.sh | bash
# 修正付きでコミュニティスクリプトを実行
pve-script-wrapper.sh <script-url>
# 既存のコンテナを修正
pve-docker-fix <container-id>
# 回避策が適用されたコンテナを一覧表示
pve-docker-rollback --list
# 回避策を削除 (上流の修正が利用可能になった場合)
pve-docker-rollback <container-id>
pve-docker-rollback --all
# ヘルプを表示
pve-script-wrapper.sh --help
pve-docker-fix --help
pve-docker-rollback --help
注: これは上流プロジェクトが恒久的な修正をリリースするまでの一時的な回避策です。参照されている GitHub の問題の更新を監視してください。