Skip to content

build(deps): update weight-custody-manifest requirement from <0.31.0,>=0.30.0 to >=0.32.0,<0.33.0 - #346

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/weight-custody-manifest-gte-0.32.0-and-lt-0.33.0
Closed

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/weight-custody-manifest-gte-0.32.0-and-lt-0.33.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Updates the requirements on weight-custody-manifest to permit the latest version.

Release notes

Sourced from weight-custody-manifest's releases.

weight-custody-manifest 0.32.0

Fixed, security (GHSA-vwq2-c539-xpr6), breaking. AzureSnpVtpmVerifier never checked that the SNP report came from Azure's paravisor. It checked that REPORT_DATA hashes the HCL runtime JSON, but any SNP guest that controls REPORT_DATA can produce a genuine, correctly chained report over runtime JSON naming its own attestation key, then sign a TPM quote under that key for any nonce, transport key and PCR 23 value. The key broker would seal the model key to that guest's transport key although the approved serving image never ran. Reported privately by Patrick Schmitt (@​patschmittdev).

The constructor now takes a required keyword argument, paravisor_measurements: the SNP launch measurements (48 bytes, as raw bytes or lowercase hex) of the Azure paravisor builds the operator trusts. A report whose MEASUREMENT is not in that set is denied with "SNP launch measurement is not an allowed Azure paravisor measurement". There is no default and an empty set is refused at construction, because Azure updates the paravisor and only the operator can say which builds it accepts. A report whose guest policy allows debugging (policy bit 19) is denied as well, and an HCL blob shorter than its header plus the SNP report is refused before any slicing. The live tools azure_attestation_controls.py, azure_measured_launch_receipt.py and paired_hardware_release.py take a repeatable --paravisor-measurement, and the controls diagnostic gains an unlisted-paravisor-measurement case.

Fixed, security (GHSA-vwq2-c539-xpr6, second defect). The platform_integrity release check read PLATFORM_INFO by base64-decoding evidence.cpu.quote_b64 and parsing it as an SNP report. On the Azure path that field is a JSON bundle, and on the reference server a JSON container, so the eight bytes at the PLATFORM_INFO offset were text the sender wrote. Padding the JSON could make a report with both integrity bits clear pass, and a genuine report with both set could be denied. Also reported by Patrick Schmitt.

QuoteVerification now carries snp_report, the full report whose signature the verifier checked, set only on success. QuoteVerifier (through SnpQuoteParser) and AzureSnpVtpmVerifier fill it. The KBS runs the CPU quote check before platform_integrity, still reporting both in their usual order, and platform_integrity reads PLATFORM_INFO only from that authenticated report. Behaviour change: a manifest that requires either integrity bit is now denied when no CPU quote verifier is configured or verification fails, with "required but no cryptographically verified SNP report". Requiring a hardware bit without verifying the hardware report never meant anything.

Migration. Read the MEASUREMENT field from an SNP report captured on a confidential VM you deployed and trust (parse_snp_report(...).measurement), and pass every such value: AzureSnpVtpmVerifier(trust, paravisor_measurements=[...]). The Azure capture in this repository, python/tests/fixtures/snp_quote_azure.json, reports 5b0ce64ad1c1f6375dbda5f760b98526ca1bcf91b8195091afc28e7b024251d68fe32e05af34048d6607678cd23283ff. That is one paravisor build on one VM size, not a list to copy. The reference server wires the generic QuoteVerifier, not this class, and is

... (truncated)

Changelog

Sourced from weight-custody-manifest's changelog.

0.32.0 - 2026-10-15

Fixed, security (GHSA-vwq2-c539-xpr6), breaking. AzureSnpVtpmVerifier never checked that the SNP report came from Azure's paravisor. It checked that REPORT_DATA hashes the HCL runtime JSON, but any SNP guest that controls REPORT_DATA can produce a genuine, correctly chained report over runtime JSON naming its own attestation key, then sign a TPM quote under that key for any nonce, transport key and PCR 23 value. The key broker would seal the model key to that guest's transport key although the approved serving image never ran. Reported privately by Patrick Schmitt (@​patschmittdev).

The constructor now takes a required keyword argument, paravisor_measurements: the SNP launch measurements (48 bytes, as raw bytes or lowercase hex) of the Azure paravisor builds the operator trusts. A report whose MEASUREMENT is not in that set is denied with "SNP launch measurement is not an allowed Azure paravisor measurement". There is no default and an empty set is refused at construction, because Azure updates the paravisor and only the operator can say which builds it accepts. A report whose guest policy allows debugging (policy bit 19) is denied as well, and an HCL blob shorter than its header plus the SNP report is refused before any slicing. The live tools azure_attestation_controls.py, azure_measured_launch_receipt.py and paired_hardware_release.py take a repeatable --paravisor-measurement, and the controls diagnostic gains an unlisted-paravisor-measurement case.

Fixed, security (GHSA-vwq2-c539-xpr6, second defect). The platform_integrity release check read PLATFORM_INFO by base64-decoding evidence.cpu.quote_b64 and parsing it as an SNP report. On the Azure path that field is a JSON bundle, and on the reference server a JSON container, so the eight bytes at the PLATFORM_INFO offset were text the sender wrote. Padding the JSON could make a report with both integrity bits clear pass, and a genuine report with both set could be denied. Also reported by Patrick Schmitt.

QuoteVerification now carries snp_report, the full report whose signature the verifier checked, set only on success. QuoteVerifier (through SnpQuoteParser) and AzureSnpVtpmVerifier fill it. The KBS runs the CPU quote check before platform_integrity, still reporting both in their usual order, and platform_integrity reads PLATFORM_INFO only from that authenticated report. Behaviour change: a manifest that requires either integrity bit is now denied when no CPU quote verifier is configured or verification fails, with "required but no cryptographically verified SNP report". Requiring a hardware bit without verifying the hardware report never meant anything.

Migration. Read the MEASUREMENT field from an SNP report captured on a confidential VM you deployed and trust (parse_snp_report(...).measurement), and pass every such value: AzureSnpVtpmVerifier(trust, paravisor_measurements=[...]). The Azure capture in this repository, python/tests/fixtures/snp_quote_azure.json, reports 5b0ce64ad1c1f6375dbda5f760b98526ca1bcf91b8195091afc28e7b024251d68fe32e05af34048d6607678cd23283ff. That is one paravisor build on one VM size, not a list to copy. The reference server wires the generic QuoteVerifier, not this class, and is

... (truncated)

Commits
  • 7de073f fix(azure): require VMPL 0 on the Azure vTPM SNP report
  • ab8104b Merge pull request #203 from agentrust-io/release/0.32.0
  • 9ed461f Merge branch 'main' into release/0.32.0
  • 801656c build(deps): bump the actions group across 1 directory with 4 updates (#197)
  • 741153b docs: name tpm2-tools as a prerequisite for the Azure vTPM providers (#179)
  • 168b77a chore(release): 0.32.0
  • 2dfe12e fix(azure)!: require the paravisor launch measurement in AzureSnpVtpmVerifier...
  • b73453f docs: fix three MAINTAINERS.md lines after the handover (#199)
  • ce3e3c5 docs: present AgenTrust as an independent project (#198)
  • 71f67e1 ci: group Dependabot minor and patch updates and queue auto-merge (#192)
  • Additional commits viewable in compare view

@dependabot
dependabot Bot requested review from a team and imran-siddique as code owners October 19, 2026 04:56
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python Pull requests that update python code labels Oct 19, 2026

@dinakarjs dinakarjs left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed exact head 4f178f3. The new demos/requirements.txt range >=0.32.0,<0.33.0 resolves successfully with released cmcp-runtime 0.7.0. Independent Linux/Python 3.12.14 selection: 47 demo tests pass with WCM 0.32.0.

However, demos/requirements/ci.txt is unchanged and still pins weight-custody-manifest==0.30.0, outside the new declared range. Demos CI installs that hashed lock, not requirements.txt, so its green result tests the old WCM line rather than this PR's proposed contract. Please regenerate the universal/hash-locked CI dependency closure from requirements/ci.in for the declared supported Python context and rerun Demos CI against the updated lock. Keep the explicit range; do not silently fall back to a lower cMCP version or loosen the check to hide the mismatch. DCO/whitespace pass. Reviewed with OpenAI Codex assistance.

dinakarjs added a commit to dinakarjs/integrations that referenced this pull request Oct 19, 2026
Author-adoption companion for agentrust-io#346.
Reference: https://docs.astral.sh/uv/pip/compile/

Signed-off-by: Srinivasa Consultants <78673153+dinakarjs@users.noreply.github.com>

Copy link
Copy Markdown
Contributor

Prepared a focused, DCO-signed author-adoption companion: 00d998d8, directly atop reviewed head 4f178f3bd7b23d66cadfb9b5b2e0eced8b7440ee.

Regenerates the universal demo lock from its existing Python 3.11 input. The only package change is WCM 0.30.0 -> 0.32.0 with its release hashes. Fresh hash-locked Python 3.12 install and dependency check pass; all 47 demo tests pass. Existing cMCP floor and range stay unchanged. Hosted final-head Demos CI remains for the adopting owner.

Reference: primary technical source. It informs the implementation/packaging boundary; it is not independent approval or a general security guarantee. The commit message retains the reference too.

For adoption: fetch https://github.com/dinakarjs/integrations.git branch fix/346-demo-lock-context and cherry-pick 00d998d82a57388eed471b9322b97bcfe4ef7945. The published tree equals the tested tree 2da706b7e8e8cb35dd02416fb92cf0f5607ca2a7.

I have not changed this PR's head or converted the existing changes request into approval. Please adopt or adjust the companion, run the original final-head checks and obtain independent review. Prepared with Codex; original ownership is retained.

Updates the requirements on [weight-custody-manifest](https://github.com/agentrust-io/weight-custody-manifest) to permit the latest version.
- [Release notes](https://github.com/agentrust-io/weight-custody-manifest/releases)
- [Changelog](https://github.com/agentrust-io/weight-custody-manifest/blob/main/CHANGELOG.md)
- [Commits](agentrust-io/weight-custody-manifest@v0.30.0...v0.32.0)

---
updated-dependencies:
- dependency-name: weight-custody-manifest
  dependency-version: 0.32.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/pip/weight-custody-manifest-gte-0.32.0-and-lt-0.33.0 branch from 4f178f3 to 08dcc38 Compare October 19, 2026 20:21
@imran-siddique

Copy link
Copy Markdown
Member

Closing in favour of #353, which regenerates the lock with the .in file's own command so nothing is dropped. Thanks @dinakarjs.

@dependabot @github

dependabot Bot commented on behalf of github Oct 19, 2026

Copy link
Copy Markdown
Contributor Author

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot
dependabot Bot deleted the dependabot/pip/weight-custody-manifest-gte-0.32.0-and-lt-0.33.0 branch October 19, 2026 20:37
imran-siddique added a commit that referenced this pull request Oct 20, 2026
…e the CI lock (#353)

Replaces #346, which changed the range in demos/requirements.txt but left demos/requirements/ci.txt pinned at 0.30.0, so Demos CI kept installing the old version. ci.txt is regenerated with the command in its header plus --upgrade-package weight-custody-manifest; only that pin and its hashes change.

Signed-off-by: Imran Siddique <45405841+imran-siddique@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants