
CVE-2018-1002105用テストユーティリティ
こちらで公開されている高深刻度Kubernetes CVEをクラスターが抱えているか確認するテストユーティリティです: https://github.com/kubernetes/kubernetes/issues/71411。CVE-2018-1002105のステークホルダー向け解説は https://gravitational.com/blog/kubernetes-websocket-upgrade-security-vulnerability/ にあります。
レイヤ7ロードバランサーやプロキシを経由してKubernetes APIサーバーに対してこのテストを実行すると、結果が不正確になる可能性があります。 このテストはAPIサーバーに接続し、Kubernetesのバグを示す副作用を確認することで動作します。 レイヤ7ロードバランサー経由でこの概念実証を実行すると、APIがCVE-2018-1002105に対して脆弱であると誤って示される可能性があります。
このツールは誤検出(偽陽性)を出す傾向があります。お使いのKubernetes APIが主要クラウドプロバイダー(Amazon AWS EKS、Google Cloud GKE、Microsoft Azure AKSなど)によって提供されている場合、そのサービスプロバイダーはほぼ確実にAPIサーバーにパッチを適用済みであり、CVE-2018-1002105の影響を受けません。脆弱でないAPIサーバーエンドポイントの検出を改善するプルリクエストを歓迎します。
go get github.com/gravitational/cve-2018-1002105
cd $GOPATH/src/github.com/gravitational/cve-2018-1002105
go run main.go
docker run -it --rm -v $HOME/.kube/config:/kubeconfig: quay.io/gravitational/cve-2018-1002105:latest
このツールは2つのことをテストします。1つはクラスターが認証なしのAPIアクセスを許可しているかどうか(これにより認証なしで集約APIエンドポイントにアクセスできるようになります)。もう1つは、不正なリクエストに対してAPIサーバーが接続を開いたままにするかどうか(これによりクラスターがCVE-2018-1002105の影響を受けると判定されます)を確認するためにPodを探し、テストを試みます。
Testing for unauthenticated access...
> API allows unauthenticated access
Testing for privilege escalation...
> API is vulnerable to CVE-2018-1002105
API allows unauthenticated access が表示された場合、テストがクラスターへの認証なしアクセスを検出できたことを示します。このテストは基本的なものですが、クラスターへの匿名アクセスが許可されているデフォルト設定を検出できるはずです。
API is vulnerable to CVE-2018-1002105 が表示された場合、提供されたkubeconfigを使用して、ツールがクラスターが脆弱であることをテストし確認できたことを意味します。