Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

CWE-295: TLS verification disabled in K8s strategy fallback — verify_none when ca.crt missing, Bearer token exposed

オープン 初心者向け
#214 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
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_none is 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 ファイルなし
  • プルリクエストのテンプレートあり
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

bitwalker/libcluster のほかの issue

bitwalker/libcluster の issue をすべて見る

似ている issue

Elixir の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。