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

verifier: simple-signing payload digest binding is not independently validated

オープン
#198 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

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

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
48/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
静か
技術スタック
go
領域
security

調査の方向性

container/verifier のバンドル再構築と、sigstore.go のエントリポイント getSimpleSigningLayersFromSignatureManifest および getBundleMsgSignature を調査します。検証済みの simple-signing ペイロードを追跡し、その critical.image.docker-manifest-digest をアーティファクトのダイジェストと照合して検証します。完了条件は、不一致または解析不能なペイロードが keyless と key-signed の両方のフローで fail closed することです。

索引モデルが issue の本文から書いたものです。

説明

needs-triage

Surfaced during review of #197 (pre-existing, applies to both keyless and key-signed flows — filing separately as requested there).

container/verifier's bundle reconstruction never parses the simple-signing payload's critical.image.docker-manifest-digest. Both the bundle's MessageDigest and the verification policy's artifact digest derive from the registry-supplied layer.Digest.Hex, so sigstore-go's digest cross-check is tautological: it proves the signature covers the payload layer, but not that the payload's embedded manifest digest matches the artifact actually being verified (CWE-354 / OWASP A08:2021).

Exploitation requires registry compromise (serving a signature manifest whose payload binds a different artifact digest), but this package is becoming the trust anchor for ToolHive's skill verification (stacklok/toolhive#5899), so the binding should be validated explicitly:

  • parse the simple-signing payload JSON after signature verification,
  • compare critical.image.docker-manifest-digest against the digest of the artifact under verification,
  • fail closed on mismatch or unparsable payload.

Refs: #192, #197, sigstore.go's getSimpleSigningLayersFromSignatureManifest / getBundleMsgSignature.

主要言語
Go
スター
2
フォーク
5
平均マージ
1日 16時間
マージ済み PR(30日)
84

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

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

stacklok/toolhive-core のほかの issue

stacklok/toolhive-core の issue をすべて見る

似ている issue

Go の issue をもっと見る

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

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