Dockerは7月23日(米国時間)、「Docker Security Advisory: AuthZ Plugin Bypass Regression in Docker Engine|Docker」において、Docker Engineの特定のバージョンに認証プラグインをバイパスできる脆弱性が存在すると発表した。
認証プラグイン(AuthZ)のバイパス脆弱性の概要
Dockerのデフォルトの認証モデルでは、DockerデーモンにアクセスできるすべてのユーザーはどんなDockerコマンドでも実行することが可能。このため、より高度なアクセス制御を行う場合には認証プラグイン(AuthZ)を使うことになる。このプラグインを使用することで、Dockerデーモンへのリクエストを認証とコマンドコンテキストに基づいて承認または拒否できるようになる。
Dockerの説明によれば、2018年にこの認証プラグイン(AuthZ)に脆弱性が発見された。脆弱性の内容は、サイバー攻撃者が特別に細工したAPIリクエストを使うことでAuthZプラグインを回避できるというもので、特権昇格につながる可能性が指摘されている。この脆弱性は2019年1月にリリースされたDocker Engine v18.09.1で修正されている。
しかしながら、この修正はこれ以降のバージョンには引き継がれなかったため、再び同じ脆弱性が発生していたことが明らかになった。5年間にわたってこの脆弱性が存在していたことになる。
影響を受けるユーザー
この脆弱性はDocker Engine v19.03.x以降のバージョンを使っているユーザーで、アクセス制御の決定を認証プラグインに依存している場合に影響を受ける。
逆に、Docker Engine v19.03.x以降のバージョンでアクセス制御の決定を認証プラグインに頼らないユーザーや、Mirantis Container Runtimeのすべてのバージョンのユーザーはこの脆弱性の影響を受けない。AuthZプラグインに依存しないDocker商用製品および内部インフラストラクチャのユーザーも影響を受けないとされている。
Docker Desktopの場合、Docker Desktop v4.32.0までには影響を受けるバージョンのDocker Engineが含まれている。しかし、Docker Desktopへの影響は本番環境と比較して限定的だとされている。修正されたバージョンはDocker Desktop v4.33となる。
脆弱性を抱えているバージョン
脆弱性を抱えているバージョンは次のとおり。
- Docker Engine v19.03.15およびこれより前のバージョン
- Docker Engine v20.10.27およびこれより前のバージョン
- Docker Engine v23.0.14およびこれより前のバージョン
- Docker Engine v24.0.9およびこれより前のバージョン
- Docker Engine v25.0.5およびこれより前のバージョン
- Docker Engine v26.0.2およびこれより前のバージョン
- Docker Engine v26.1.4およびこれより前のバージョン
- Docker Engine v27.0.3およびこれより前のバージョン
- Docker Engine v27.1.0およびこれより前のバージョン
脆弱性が修正されたバージョン
脆弱性が修正されたバージョンは次のとおり。
- Docker Engine v23.0.14よりあとのバージョン
- Docker Engine v27.1.0よりあとのバージョン
修復方法
DockerはDocker Engineをアップデートして最新のパッチ適用済みバージョンにすることを推奨している。すぐにアップデートできない場合にはAuthZプラグインの使用を避けるとともに、Docker APIへのアクセスを最小特権の原則にしたがって信頼できるメンバーだけに限定するように求めている。