Websocket proxy auth truncates passwords that contain a colon
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
kubernetes/stream/ws_client.py の602行目付近にある認証情報の分割箇所から始め、近くにある websocket_proxycare のテストを調べてください。コロンを含む password と不正な認証情報を含め、提供されたスニペットで再現してください。完全な password が保持され、不正なヘッダーで未捕捉の IndexError が発生しなくなり、両方のケースをテストでカバーできたら完了です。
索引モデルが issue の本文から書いたものです。
説明
What happened (please include outputs or screenshots):
While testing an experimental version of Perch, we found the following and figured it was worth a report.
websocket_proxycare splits the decoded proxy-authorization credentials on every : and keeps only the first two parts. A proxy password that contains a colon is cut off, so websocket calls (stream for exec, attach and port-forward) through an authenticated proxy send the wrong password.
import base64
from types import SimpleNamespace
from kubernetes.stream.ws_client import websocket_proxycare
cred = base64.b64encode(b"alice:pa:ss:word").decode()
cfg = SimpleNamespace(no_proxy=None, proxy="http://proxy:3128",
proxy_headers={"proxy-authorization": "Basic " + cred})
print(websocket_proxycare({}, cfg, "wss://h", {})["http_proxy_auth"])
# ('alice', 'pa')
The same code raises IndexError: list index out of range when the header is just Basic, or when the decoded value has no colon.
What you expected to happen:
('alice', 'pa:ss:word'). RFC 7617 allows colons in the password; only the user-id can't contain one.
How to reproduce it (as minimally and precisely as possible):
Run the snippet above against master. No cluster is needed.
Anything else we need to know?:
The split is at kubernetes/stream/ws_client.py:602:
auth = urlsafe_b64decode(b64value).decode().split(':')
connect_opt.update({'http_proxy_auth': (auth[0], auth[1]) })
split(':', 1) would keep the full password.
Environment:
- Kubernetes version (
kubectl version): not needed, no cluster involved - OS (e.g., MacOS 10.13.6): macOS 26.2 (arm64)
- Python version (
python --version): 3.14.2 - Python client version (
pip list | grep kubernetes): 37.0.0+snapshot (master, bb9199f7)
- 主要言語
- Python
- スター
- 7.7k
- フォーク
- 3.5k
- 平均マージ
- 1日 13時間
- マージ済み PR(30日)
- 19
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
kubernetes-client/python のほかの issue
-
getheaders is deprecated in urllib3 >= 2.0.0再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープンkind/bug
難易度 1/5 1時間未満 初心者へのやさしさ 68/100
kubernetes-client/python#2280 · コメント 16 件 · リアクション 9 件 ·
メンテナーはふだん 1 日以内に返信
-
kind/bug
難易度 2/5 1〜3時間 初心者へのやさしさ 35/100
kubernetes-client/python#2733 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
Growing library sizeオープンhelp wanted
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
kubernetes-client/python#2677 · コメント 15 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Add option to disable strict x509 verifcation in sync client対応中かも @Vishwa0223 が 49 日前に担当しました。 オープンhelp wanted kind/feature
kubernetes-client/python#2602 · コメント 6 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
v36.0.0 regression fetching container logs再び着手できるかも @yliaog が 88 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンkind/bug
kubernetes-client/python#2596 · コメント 16 件 · リアクション 2 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
kubernetes-client/python の issue をすべて見る
似ている issue
-
bug
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
openwisp/openwisp-utils#777 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 63/100
google-research/weatherbenchX#310 ·
メンテナーはふだん 3 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
huggingface/peft#3955 ·
メンテナーはふだん 1 日以内に返信
-
author-page correction
難易度 2/5 1〜3時間 初心者へのやさしさ 60/100
acl-org/acl-anthology#10313 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
AOSSIE-Org/Gitcord-GithubDiscordBot#147 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信