Skip to content

fix(deps): resolve RUSTSEC-2026-0433 in the root lockfile - #460

Merged
hyperpolymath merged 1 commit into
mainfrom
claude/gallant-ramanujan-27wzn9
Nov 5, 2026
Merged

hyperpolymath merged 1 commit into
mainfrom
claude/gallant-ramanujan-27wzn9

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Dependency audit and rust-ci / Cargo audit (security) are red on main and on #458 for RUSTSEC-2026-0433: pulldown-cmark 0.13.5, quadratic parsing of nested image wikilinks (CVSS 7.5, published 2026-10-28). This PR is the separate fix(deps) change proposed in #458's comment, in the same shape as #457 (RUSTSEC-2026-0414).

Changes

  • Cargo.lock: pulldown-cmark 0.13.5 → 0.13.6, via cargo update -p pulldown-cmark --precise 0.13.6. Only that package's version and checksum change; no other package moves.
  • pulldown-cmark is a build dependency only: echidna-grpc → tonic-prost-build → prost-build (and pulldown-cmark-to-cmark). The fuzz/ workspace has no pulldown-cmark entry, so its lock is untouched.

RSR Quality Checklist

Required

  • Tests pass: lockfile-only change, no source change; echidna-grpc (the only dependent) builds with --locked
  • Code is formatted: no source change
  • Linter is clean: no source change
  • No banned language patterns
  • No unsafe blocks: not applicable
  • No banned functions: not applicable
  • SPDX license headers present: no new files
  • No secrets, credentials, or .env files included

As Applicable

  • New dependencies reviewed for license compatibility: no new dependency; pulldown-cmark's licence is unchanged at a patch release

Testing

Check Result
cargo audit -f <main's Cargo.lock> (cargo-audit 0.22.2) RUSTSEC-2026-0433, 1 vulnerability found, which reproduces CI
cargo audit -f Cargo.lock (this branch) 0 vulnerabilities; the 2 warnings are already on the repo's allow-list
cargo tree --locked --workspace --all-features --target all -i pulldown-cmark only prost-build and pulldown-cmark-to-cmark, both under echidna-grpc's build dependencies
cargo check --locked -p echidna-grpc (rustc 1.99.0, protoc 3.21.12) finished; the build script's protobuf codegen runs on 0.13.6
git diff --text Cargo.lock one package: version and checksum lines only

After this merges, #458's two audit failures should clear once its branch is updated; its other two reds (Guix runner package, gitleaks on another branch's commit) are explained there and are unrelated.


Generated by Claude Code

Both cargo-audit jobs (`Dependency audit`, `rust-ci / Cargo audit`) are
red on main and on #458 for RUSTSEC-2026-0433: pulldown-cmark 0.13.5,
quadratic parsing of nested image wikilinks (CVSS 7.5, 2026-10-28).

`cargo update -p pulldown-cmark --precise 0.13.6` changes only that
package's version and checksum. It is a build dependency of
echidna-grpc (via prost-build / tonic-prost-build). The fuzz workspace
has no pulldown-cmark entry. Same shape as #457 (RUSTSEC-2026-0414).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KUZiEB43T3E9fJAXqwbSDm
@hyperpolymath
hyperpolymath requested a balanced review from Copilot November 4, 2026 23:53
@linear-code
linear-code Bot marked this pull request as ready for review November 4, 2026 23:53
@coderabbitai

coderabbitai Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters: 1
  • Cargo.lock is excluded by !**/*.lock

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 1438500a-0239-4478-90c2-3c31ad7774ed

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot wasn't able to review any files in this pull request. Check if the Files changed in this pull request are included in default exclusions.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-04T23:54:24.748251Z b8dcfd5 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@sonarqubecloud

sonarqubecloud Bot commented Nov 4, 2026

Copy link
Copy Markdown

Copy link
Copy Markdown
Owner Author

T1 Guix manifest check is red, but this PR doesn't cause it.

  • The job's first step runs sudo apt-get install -y --fix-missing guix, and the runner image answers E: Unable to locate package guix (job 126948383920). That happens before anything from this PR is used. This PR changes only one Cargo.lock entry.
  • It fails identically on fix(ci): call standards reusables at metadatastician/standards #458 (explained there) and on any PR run on the current ubuntu-latest image.
  • No fix exists yet. Two possible fixes, each a separate change to the T1 workflow: install Guix with its upstream installer, or skip the step with an explicit "guix unavailable on this image" notice when the package is absent. A skip like that must say it was skipped and never report the manifest as checked.
  • I have not re-run it: the failure is deterministic on this image.

Generated by Claude Code

@hyperpolymath
hyperpolymath merged commit 0211aa0 into main Nov 5, 2026
47 of 49 checks passed
@hyperpolymath
hyperpolymath deleted the claude/gallant-ramanujan-27wzn9 branch November 5, 2026 00:45
hyperpolymath added a commit that referenced this pull request Nov 5, 2026
## Summary

standards moved from `hyperpolymath` to `metadatastician`. GitHub does
not follow that rename for reusable workflows, so every job here that
calls `hyperpolymath/standards/...` fails before it starts. Example:
governance run
[40463073589](https://github.com/hyperpolymath/echidna/actions/runs/40463073589):

> error parsing called workflow ".github/workflows/governance.yml" ->
"hyperpolymath/standards/.github/workflows/governance-reusable.yml@3c00687…"
: workflow was not found.

This PR points those six calls at the canonical owner, repins them to
standards main, and rekeys `actions.lock` to match. It is echidna's part
of option 1 in metadatastician/standards#1390.

**Live result on `5ab6c13`.** Every called standards job ran and passed:

| Caller | Run | Result |
|---|---|---|
| governance |
[41944160807](https://github.com/hyperpolymath/echidna/actions/runs/41944160807)
| all jobs green, including Allowlist Preflight, Actions lockfile
verify, Workflow security linter and Validate Hypatia Baseline |
| hypatia-scan |
[41944160860](https://github.com/hyperpolymath/echidna/actions/runs/41944160860)
| green |
| spark-theatre-gate |
[41944160674](https://github.com/hyperpolymath/echidna/actions/runs/41944160674)
| green |
| secret-scanner |
[41944160453](https://github.com/hyperpolymath/echidna/actions/runs/41944160453)
| shell-secrets and rust-secrets green; gitleaks red, not this PR's (see
below) |

scorecard and mirror do not run on `pull_request`, so they take effect
on their next scheduled or push run after merge.

This PR is therefore a working caller canary for the standards playbook
(§4 of `docs/compliance/repo-transfer-to-enterprise-playbook.adoc`).

## Changes

- **Coordinates.** Six job-level `uses:` move from
`hyperpolymath/standards/…` to `metadatastician/standards/…`:
governance, hypatia-scan, mirror, scorecard, secret-scanner and
spark-theatre-gate.
- **Pin.** `3c00687` → `087f6bf` (standards main, 2026-11-04).
- The old pin's governance reusable checks callers against its own tree
allow-list, which predates the transfer pattern. Its `Allowlist
Preflight` failed on all six calls (run 41925934029).
- `087f6bf` passes `scripts/lock-selfcheck.sh` (SELF-CONSISTENT), the
selection step in standards#1391's rollout guard.
- The call-site comments name the new pin and the hypatia-ref default it
vets (`adb2f41d`).
- **Lock.** `actions.lock` was rekeyed by standards'
`scripts/relock-standards-pin.sh` (standards#1391), not by hand:
- workflow entries and the standards record now sit under
`metadatastician/standards@087f6bf…`;
  - `owner_id` is 297579217, and `repo_id` (1116521501) is unchanged;
- `actions/download-artifact@9000827` (v8.0.2) is added, because the
reusables use it at the new pin.
- **A040 audit (`contractile.just`).** `adjust-shas-stale` now matches
either owner, so the pin-staleness audit sees the repointed callers
instead of going silent. This was Codex's finding; the fix is `5ab6c13`.

## RSR Quality Checklist

### Required

- [x] Tests pass: `rust-ci / Cargo test` green; no code changes
- [x] Code is formatted: one scalar and its comment per workflow file
- [x] Linter is clean: actionlint 1.7.7 reports 0 findings on all six
workflows; lint-workflows green
- [x] No banned language patterns
- [x] No `unsafe` blocks: not applicable
- [x] No banned functions: not applicable
- [x] SPDX license headers present: unchanged
- [x] No secrets, credentials, or `.env` files included

### As Applicable

Nothing in this list applies: no state, ecosystem, architecture, docs or
dependency change.

## Testing

All local checks use standards' tools at `087f6bf`, run on this branch:

| Check | Result |
|---|---|
| `check-lock-sync.sh` | in sync |
| `close-lock.sh --check` | closed, no dangling edges |
| `check-workflow-coordinates.sh` | no former-owner coordinates in 35
workflows |
| `check-allowed-actions.sh` with standards main's tree canon | 0 of 27
refs uncovered (6 at the old pin) |
| `check-lock-pin-contract.sh` | 18 findings, the identical set to
main's lock; none added (noted on #401) |
| `lock-selfcheck.sh 087f6bf` | SELF-CONSISTENT |
| `just -f contractile.just adjust-shas-stale` | lists the repointed
callers (none before `5ab6c13`) |

**Remaining reds, none of them this PR's.** Each is explained in a PR
comment:

- `T1 Guix manifest check`: the runner image has no `guix` package.
- `scan / gitleaks`: it flags commit `791cca0`, which exists only on
`arena/4853aec5-echidna`.

The two cargo-audit checks are green since #460 (RUSTSEC-2026-0433) was
merged in.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01JHfuPCv1pEiqkQGG5DQASb

---------

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants