Tutorial
10 min read
4035 views

Docker Socketのセキュリティ:重要な脆弱性ガイド

IT
InstaTunnel Team
Published by our engineering team
Docker Socketのセキュリティ:重要な脆弱性ガイド

公開されたDockerデーモンソケットを認証なしのTCPポート経由でアクセス可能にすることは、最も重大なセキュリティ設定ミスの一つです。それは単なる脆弱性ではなく、ホストマシン上のrootシェルへの直接的な未認証ゲートウェイです。つまり、そのオープンポートをインターネット上で見つけた誰もが、サーバー、データ、稼働中のサービスを完全に制御できる状態になります。

この記事では、この深刻なリスクについて詳しく解説します。Dockerソケットとは何か、その脆弱性を悪用してrootアクセスを得る方法、そしてインフラを守るために必要なセキュリティ対策について説明します。

Dockerソケットとは?その力と危険性

危険性を理解するために、まずDockerのアーキテクチャを理解しましょう。中心となるのはDockerデーモン(dockerd)で、これはコンテナの構築や実行、イメージ管理、ストレージやネットワークの管理などを行う常駐バックグラウンドサービスです。この強力なエンジンとやり取りするには、コマンドを送る方法が必要です。ここでDockerソケットが登場します。

Dockerデーモンの主なインターフェースはAPIです。デフォルトでは、/var/run/docker.sockにあるUnixソケットを通じてAPI呼び出しを待ち受けています。docker psdocker runのようなコマンドを入力すると、Docker CLIクライアントは実行自体を行うのではなく、そのリクエストをパッケージ化してこのソケット経由でDockerデーモンに送信します。

Dockerソケットは、あなたのDockerの王国のマスターコントロールパネルのようなものです。このソケットに書き込み権限を持つユーザーやプロセスは、Dockerデーモンを完全に制御できます。

デフォルトのUnixソケットはローカル利用には安全です(権限はOSによって管理されています)が、開発者やシステム管理者はしばしば、Docker APIをTCPポート(通常はポート2375(暗号化なし)または2376(TLS暗号化))経由で公開しようとします。これは便利さが動機です:

  • リモート管理:別のマシンからDockerホストを操作するためにSSHを経由せずに管理できる
  • CI/CDパイプライン:JenkinsやGitLab CIのようなツールがイメージをビルドし、リモートのビルドエージェントにコンテナを展開できる
  • コンテナオーケストレーション:管理ツールやシンプルなスクリプトのエンドポイントを提供

しかし、認証なしのTCPポート(tcp://0.0.0.0:2375)でこのAPIを公開するのは壊滅的なミスです。Dockerデーモンはホストシステム上でroot権限で動作しているため、そのAPIへのアクセスを世界に許すことは、ホストに対するrootアクセスを世界に許すことと同じです。

問題の根源:なぜソケットは危険なのか

核心的な問題は一つの重要な事実に集約されます:Dockerデーモンはrootユーザーとして動作している

実行されるコマンド、起動されるコンテナ、操作されるファイルシステムはすべて、ホストOS上の最高権限で行われます。Dockerソケットへのアクセスを許可すると、単にコンテナを実行させるだけでなく、rootとしてコンテナを動かすことを許すことになります。これにより、コンテナの隔離を突破し、ホストシステムを直接操作できる状態になります。

攻撃者が悪用できる最も強力な機能はボリュームマウントです。Dockerは、ホストのディレクトリをコンテナ内にマウントすることを許可しています。Dockerデーモンはアクセスできないディレクトリはありません。ソケットにアクセスできる攻撃者は、新しいコンテナを起動し、ホストのルートファイルシステム(/)をコンテナ内にマウントできます。

ホストのファイルシステムがコンテナ内にマウントされると、すべてのファイルに対して読み取り・書き込み・実行権限を持つことになり、/etc/shadow(パスワードハッシュが保存されている場所)、ユーザのホームディレクトリ、SSHキー、アプリケーションのソースコード、システムバイナリなどにアクセス可能になります。

 明確にしておきましょう:Dockerソケットへのアクセスを許すことは、ホストに対するrootアクセスを許すことと同じです。区別はありません。

攻撃の流れ:公開ポートからrootシェルまで

恐ろしい現実は、公開されたDockerソケットを悪用するのに高度なツールやゼロデイ脆弱性は必要ないということです。これは意図されたDockerの機能を利用し、数分でDocker CLIだけで実行可能です。

ステップ1:発見

攻撃者の最初のステップはターゲットの発見です。ShodanやNmapのようなインターネットスキャンツールを使い、ポート2375が開いているホストを検索します。`port:2375

Continue from this article into the most relevant product guides and workflows.

Related Topics

#docker security, docker daemon vulnerability, docker socket exploit, container security, docker tcp port 2375, docker root access, docker daemon misconfiguration, container escape, docker api security, docker tls configuration, docker ssh tunneling, zero trust docker, docker privilege escalation, container breakout, docker network security, devops security, docker best practices, container infrastructure security, docker daemon hardening, docker remote access security, cybersecurity docker, docker vulnerability assessment, container orchestration security, docker production security, docker socket permission, docker ca certificates, docker overlay networks, tailscale docker, zerotier docker, docker penetration testing, container security audit

Keep building with InstaTunnel

Read the docs for implementation details or compare plans before you ship.

Share this article

More InstaTunnel Insights

Discover more tutorials, tips, and updates to help you build better with localhost tunneling.

Browse All Articles