Docker Engineに高深刻度の脆弱性CVE-2026-34040が公開された。CVSS 8.8。攻撃者がDocker APIへのアクセス権を持っている場合、AuthZ(認可)プラグインを完全にバイパスし、特権コンテナを作成してホストファイルシステムを掌握できる。
修正版はDocker Engine 29.3.1。影響を受けるのは29.3.1未満の全バージョンで、根本原因はDocker Engine 1.10(約10年前)から存在していた。
この脆弱性の核心は、Docker EngineのAuthZプラグイン連携におけるdrainBody関数にある。
drainBody関数はリクエストボディを読み取ってAuthZプラグインに渡す役割を持つが、ハードコードされた1MBのバッファ制限がある。攻撃者がリクエストボディを1MB超にパディングすると:
Peek()操作が空データを返す# 攻撃のイメージ(概念的なコマンド)
# 1MB超のパディングを含むコンテナ作成リクエスト
curl -X POST http://docker-host:2375/containers/create \
-H "Content-Type: application/json" \
-d '{"Image":"alpine","HostConfig":{"Privileged":true,"Binds":["/:/ host"]},"padding":"AAAA...(1MB超)..."}'
# AuthZプラグインには空ボディが渡され → 許可
# Docker Daemonは元のリクエストを実行 → 特権コンテナ作成
この脆弱性はCVE-2024-41110の修正が不完全だったことが原因。2024年に発見された同じAuthZバイパスの修正パッチが、1MB超のリクエストボディに対する処理を正しくカバーしていなかった。
| CVE-2024-41110 | CVE-2026-34040 | |
|---|---|---|
| 発見年 | 2024 | 2026 |
| 原因 | AuthZに空ボディが渡される | 同上(修正漏れ) |
| 攻撃条件 | Content-Length 0のリクエスト | 1MB超のリクエストボディ |
| 修正 | Docker 27.1.1 | Docker 29.3.1 |
| CWE | CWE-187 | CWE-288 |
根本原因のコードは約10年前のDocker Engine 1.10から存在しており、長期間にわたって潜在的なリスクとなっていた。
| 環境 | リスク | 理由 |
|---|---|---|
| マルチテナントDocker環境 | 極めて高い | テナント間の認可制御がバイパスされる |
| CI/CDパイプライン | 高い | ビルドワーカーが特権コンテナを作成可能 |
| Docker APIを公開している環境 | 高い | ネットワーク経由で攻撃可能 |
| AuthZプラグイン未使用の環境 | 低い | AuthZを使っていなければ直接的影響なし |
| Flociのようなローカル開発環境 | 低い | ローカルでの開発利用では通常AuthZ不使用 |
docker version --format ''
# → 29.3.1 未満なら脆弱
# 特権コンテナの検出
docker ps --format ' ' | while read name status; do
priv=$(docker inspect "$name" --format '')
if [ "$priv" = "true" ]; then
echo "⚠️ 特権コンテナ検出: $name"
fi
done
# ホストファイルシステムマウントの検出
docker ps -q | xargs -I {} docker inspect {} \
--format ': → ' \
| grep -E "/:| /etc| /var/run/docker.sock"
# Docker Engine 29.3.1にアップグレード
# Ubuntu/Debian
sudo apt-get update && sudo apt-get install docker-ce=5:29.3.1-1~ubuntu.24.04~noble
# macOS (Docker Desktop)
# Docker Desktop → Check for Updates → 29.3.1以上に更新
# Dockerデーモンソケットの権限制限
sudo chmod 660 /var/run/docker.sock
# user namespace remapping有効化(/etc/docker/daemon.json)
{
"userns-remap": "default"
}
# デーモン再起動
sudo systemctl restart docker
修正コミット(e89edb1、3月25日)では以下が変更された:
| 日付 | 事象 |
|---|---|
| 2024年7月 | CVE-2024-41110(同じAuthZバイパス)が公開・修正 |
| 2026年3月25日 | 修正コミット e89edb1 がマージ |
| 2026年3月31日 | CVE-2026-34040 割り当て、Docker 29.3.1リリース |
| 2026年4月2日 | セキュリティアドバイザリ公開 |
| 2026年4月7日 | 各メディアで報道開始 |
同日に発覚したaxiosサプライチェーン攻撃やClaude Codeソースコード流出と合わせて、2026年3-4月はインフラ・開発ツールのセキュリティインシデントが集中している。Grypeのようなコンテナ脆弱性スキャンツールを導入していれば、こうした脆弱性の早期検知が可能だ。