Dockerの安全:なぜルートの発売が悪い考えなのか

Dockerは、現代のDevopsと開発に不可欠なツールになりました。包囲を分離し、衣装を簡素化し、アプリケーションをすばやく拡大することができます。ただし、デフォルトでは、Dockerにはルートが必要であり、これは潜在的に危険なゾーンを作成します。これは、初期段階ではしばしば無視されます。

なぜDockerはルートから機能するのですか?

Dockerは、Linuxの機能を使用しています。Cgroups、名前空間、iptables、マウント、ネットワーキング、その他のシステム機能を使用しています。これらの操作は、スーパーユーザーのみが利用できます。

それが理由です:
* dockerdデーモンはルートから始まります、
* Dockerコマンドはこの悪魔に送信されます。

これにより、作業が簡素化され、システムを完全に制御できますが、同時に潜在的な脆弱性が開かれます。

なぜ危険なのか:コンテナブレイクアウト、CVE、RCE

コンテナブレイクアウト

断熱材が弱いと、攻撃者はchrootまたはpivot_rootを使用してホストに入ることができます。

実際の攻撃の例:

* CVE-2019-5736-RUNCに対する妨害性により、アプリケーションを書き換えてホストのコードを実行できました。
* CVE-2021-3156-sudoに対する妨害性により、容器内にルートを取得して出て行くことができました。

rce(リモートコード実行)

コンテナ内のアプリケーションが脆弱で、rootから始まる場合、RCE =ホストの完全な制御。

rootless docker:問題の解決策

これらのリスクを最小限に抑えるために、dockerにはルートレスモードが表示されました。このモードでは、demonとコンテナの両方が、ルートと特権のない通常のユーザーに代わって起動されます。これは、攻撃者がコンテナの制御を受け取ったとしても、ホストシステムに害を及ぼすことができないことを意味します。
制限があります。1024未満のポート(たとえば、80および443)を使用することはできません。 -Privilegedモードと一部のネットワークモードは使用できません。ただし、ほとんどの開発シナリオとCI/CD Rootless Dockerでは、タスクに対処し、セキュリティのレベルを大幅に向上させます。

歴史的に、root -antipattern から起動

最初から、最小の特権の原則がUNIX/Linuxの世界に適用されてきました。プロセスが少ないほど、害が少なくなります。 Dockerは当初、ルートアクセスを要求していましたが、今日では潜在的な脅威と見なされています。

ソース

https://docs.docker.com/engine/security/rootless/
https://rootlesscontaine.rs/