CWE-295: TLS verification disabled in K8s strategy fallback — verify_none when ca.crt missing, Bearer token exposed
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 78/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 静か
- 技術スタック
- elixir, kubernetes
調査の方向性
lib/strategy/kubernetes.ex:323-337 の get_ssl_opts/1 から始め、返されたオプションが Kubernetes HTTP リクエストにどのように到達するかを追跡します。missing-ca.crt パスによって証明書の検証が無効化されないようにし、その後、関連するプロジェクトのテストを実行して、フォールバックによって peer 検証が維持されることを確認します。
索引モデルが issue の本文から書いたものです。
説明
Summary
The Kubernetes clustering strategy's get_ssl_opts/1 function falls back to verify: :verify_none when the service account's ca.crt file is missing. This means K8s API Bearer tokens are transmitted over TLS connections that accept any certificate.
Vulnerable Code (lib/strategy/kubernetes.ex:323-337)
defp get_ssl_opts(service_account_path) do
path = Path.join(service_account_path, "ca.crt")
case File.exists?(path) do
true -> [verify: :verify_peer, cacertfile: String.to_charlist(path)]
false -> [verify: :verify_none] # ← DANGEROUS FALLBACK
end
end
Credential Flow
verify: :verify_noneis passed as SSL options to:httpc.request()- The K8s service account Bearer token is sent via
Authorization: Bearer {token}header - All K8s API responses (pod lists, ConfigMaps, Secrets) transit over unverified TLS
Impact
MITM attacker can capture the K8s service account token, gaining API access within the cluster — pod enumeration, ConfigMap/Secret access, lateral movement.
Fix
Never fall back to verify_none. Use system CA store instead:
false -> [verify: :verify_peer] # Use system CA, don't disable verification
Severity
CVSS 7.4 (HIGH) — CWE-295: Improper Certificate Validation
- 主要言語
- Elixir
- スター
- 2.2k
- フォーク
- 201
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
bitwalker/libcluster のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 42/100
bitwalker/libcluster#213 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
bitwalker/libcluster#206 · コメント 4 件 · リアクション 1 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
bitwalker/libcluster#200 ·
-
Changelogs and Tagsオープン
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
bitwalker/libcluster#197 · コメント 1 件 · リアクション 3 件 ·
-
feature
難易度 3/5 1〜2日 初心者へのやさしさ 38/100
bitwalker/libcluster#191 · コメント 1 件 ·
bitwalker/libcluster の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
ash-project/ash_typescript#107 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 78/100
ash-project/ash_graphql#481 · コメント 1 件 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 80/100
-
moderation phoenix/webdev
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
beyond-all-reason/teiserver#1692 · コメント 3 件 ·
-
api csv
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
blockscout/blockscout#14966 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信