Skip to content

build(deps): bump Rust and Python deps to clear CI security gates#444

Merged
katriendg merged 1 commit intomainfrom
fix/bundle-cargo-grype
Apr 24, 2026
Merged

build(deps): bump Rust and Python deps to clear CI security gates#444
katriendg merged 1 commit intomainfrom
fix/bundle-cargo-grype

Conversation

@katriendg
Copy link
Copy Markdown
Collaborator

@katriendg katriendg commented Apr 24, 2026

Summary

Consolidates pending Rust and Python dependency security updates into a single PR to unblock CI. Every open PR currently fails the same two required checks (Cargo Audit and Security Scan / Grype) due to transitive dependency vulnerabilities. This PR resolves both blockers.

Supersedes: #413, #425, #430, #431, #432, #434, #435, #436, #437, #438, #439, #440, #441, #442, #443

Root Causes & Fixes

CI Gate Root Cause Fix
Cargo Audit (Rust) New RUSTSEC advisories for rand, openssl, and rustls-webpki in transitive deps cargo update across all 14 Rust workspaces bumps to patched versions
Security Scan (Grype) HIGH+ vulns in openssl (0.10.73/74/76), rand (0.8.5/0.9.2), rustls-webpki, and lxml (5.3.0) Rust lockfile updates clear crate findings; lxml pinned to 6.1.0

Changes

Rust Cargo.lock updates (14 files, lockfiles only — no Cargo.toml changes)

Python dependency update (1 service)

  • src/500-application/510-onvif-connector/services/onvif-camera-simulator/ — lxml 5.3.0 → 6.1.0 in requirements.in (clears GHSA-vfmq-68hx-4jfw); requirements.txt regenerated with uv pip compile --generate-hashes

Verification

  • cargo audit --deny warnings passes on all 14 Rust crates with .github/audit.toml config
  • grype dir:. --config .grype.yaml returns exit 0 in a clean checkout (only Medium-severity uuid npm finding remains, below fail-on-severity: high threshold)
  • govulncheck ./... passes on both Go modules (unchanged from main — no Go-related changes in this PR)
  • No Cargo.toml, Go module, source code, or behavioral changes

Known Residuals (already suppressed)

  • rand 0.8.6 still appears in Grype scans (advisory fixed-in is 0.9.3). Suppressed in .github/audit.toml via RUSTSEC-2026-0097. Blocked on upstream azure_iot_operations_mqtt releasing without rand 0.8.x.
  • rustls-webpki 0.102.8 (transitive via AIO SDK's rumqttc fork) suppressed in .grype.yaml via GHSA-pwjx-qhcg-rvj4.

Impact on Other PRs

Once merged, Dependabot will auto-close the 15 superseded PRs when it detects the fixes on main. The remaining open PRs (#411, #422, #401, #427, #428, #429, #433) will have their two universal CI blockers resolved and can proceed through review.

🔒 - Generated by Copilot

@katriendg katriendg requested a review from a team as a code owner April 24, 2026 06:59
@katriendg katriendg force-pushed the fix/bundle-cargo-grype branch from 362ba2f to 4d86fa7 Compare April 24, 2026 07:16
@katriendg katriendg changed the title build(deps): bump Rust, Go, and Python deps to clear CI security gates build(deps): bump Rust and Python deps to clear CI security gates Apr 24, 2026
@katriendg katriendg force-pushed the fix/bundle-cargo-grype branch from 4d86fa7 to ed53d4e Compare April 24, 2026 07:28
- Update rand, openssl, rustls-webpki across all Rust Cargo.lock files
- Upgrade lxml 5.3.0 to 6.1.0 in onvif-camera-simulator

🔒 - Generated by Copilot
@katriendg katriendg force-pushed the fix/bundle-cargo-grype branch from ed53d4e to 0c18be7 Compare April 24, 2026 09:19
@katriendg
Copy link
Copy Markdown
Collaborator Author

Note our current CI is failing on ORT CDN, seems other users are facing it as well, which we expect to be transient

@katriendg katriendg merged commit 2c05d82 into main Apr 24, 2026
33 of 34 checks passed
@katriendg katriendg deleted the fix/bundle-cargo-grype branch April 24, 2026 09:47
katriendg added a commit that referenced this pull request Apr 30, 2026
Migrate GitHub-side release management from GitVersion + the custom
`create-release` workflow to [release-please-action
v4.4.1](https://github.com/googleapis/release-please-action) using the
`simple` release type with a manifest-driven configuration. The new
workflow is `workflow_dispatch` only (no auto-trigger on push) so
releases remain explicitly gated.

This PR also removes the parallel Azure DevOps release-branch automation
that was tightly coupled to GitVersion, since release management now
runs from GitHub. The Azure DevOps `github-push` mirror pipeline is
retained but trimmed of GitVersion references.

Net change: **17 files, +148 / -1364**.

## Related Issue

Relates to WI-01 (replace GitVersion with release-please on GitHub
side).

## Type of Change

- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to not work as expected)
- [ ] Blueprint modification or addition
- [ ] Component modification or addition
- [x] Documentation update
- [x] CI/CD pipeline change
- [ ] Other (please describe):

## Implementation Details

**Added**

- `.github/workflows/release-please.yml` — `workflow_dispatch`-only
workflow invoking `googleapis/release-please-action@v4.4.1` (pinned).
- `release-please-config.json` — `simple` release type, single root
package.
- `.release-please-manifest.json` — pinned to current version `2.8.0`.

**Disabled** (kept on disk, renamed so GitHub no longer schedules it)

- `.github/workflows/create-release.yml` →
`.github/workflows/create-release.yml.disabled`

**Deleted**

- `GitVersion.yml` (root)
- `.azuredevops/pipelines/release-branch-create.yml`
- `.azuredevops/docs/release-branch-create.md`
- `.azdo/pipelines/github-push.yml` (superseded by
`.azuredevops/pipelines/github-push.yml`)

**Modified (docs + ADO mirror)**

- `docs/build-cicd/release-workflow.md` — describes release-please
trigger, manifest, and version bump flow.
- `docs/build-cicd/configuration-reference.md` — replaces GitVersion
config reference with release-please config reference.
- `.azuredevops/docs/github-push.md` — removes GitVersion language.
- `.azuredevops/pipelines/github-push.yml` — removes GitVersion variable
group and step.
- `.azuredevops/README.md` — drops the release-branch-create entry.
- `.github/copilot-instructions.md` — points contributors at
release-please instead of GitVersion.

## Testing Performed

- [ ] Terraform plan/apply
- [ ] Blueprint deployment test
- [ ] Unit tests
- [ ] Integration tests
- [ ] Bug fix includes regression test (see [Test
Policy](docs/contributing/testing-validation.md))
- [x] Manual validation
- [x] Other: actionlint, yamllint, prettier --check, markdownlint-cli2
all pass on the changed files.

## Validation Steps

```bash
# YAML / Actions
actionlint .github/workflows/release-please.yml
yamllint .github/workflows/release-please.yml release-please-config.json .release-please-manifest.json

# Formatting
npx prettier --check release-please-config.json .release-please-manifest.json .github/workflows/release-please.yml

# Markdown
npx markdownlint-cli2 \
  docs/build-cicd/release-workflow.md \
  docs/build-cicd/configuration-reference.md \
  .azuredevops/docs/github-push.md \
  .azuredevops/README.md \
  .github/copilot-instructions.md
```

All validators reported no errors at HEAD `6427d727`.

## Checklist

- [x] I have updated the documentation accordingly
- [ ] I have added tests to cover my changes
- [ ] All new and existing tests passed
- [ ] I have run `terraform fmt` on all Terraform code
- [ ] I have run `terraform validate` on all Terraform code
- [ ] I have run `az bicep format` on all Bicep code
- [ ] I have run `az bicep build` to validate all Bicep code
- [x] I have checked for any sensitive data/tokens that should not be
committed
- [x] Lint checks pass (run applicable linters for changed file types)

Terraform / Bicep / test items are N/A — this PR is JSON + YAML +
Markdown only.

## Security Review

- [x] No credentials, secrets, or tokens are hardcoded or logged
- [x] RBAC and identity changes follow least-privilege principles
- [x] No new network exposure or public endpoints introduced without
justification
- [x] Dependency additions or updates have been reviewed for known
vulnerabilities
- [x] Container image changes use pinned digests or SHA references

The diff touches only release tooling configuration and docs. The
release-please action is pinned to `v4.4.1`. No code paths, identity
boundaries, or network resources are changed.

Note: a Grype scan of the repo (unrelated to files modified by this PR)
reports 4 pre-existing CVEs in dependencies (`go.opentelemetry.io/otel`,
`postcss`, `uuid`, `github.com/jackc/pgx/v5`). These should be addressed
in a separate dependency-bump PR per precedent (#427, #444).

## Additional Notes

- HEAD: `6427d727` (up to date with `main` at `c01b934f`).
- The new workflow is intentionally `workflow_dispatch`-only for this
rollout; once verified, a follow-up PR can enable the standard `push:
branches: [main]` trigger.
- The ADO `release-branch-create` pipeline is removed because
release-branch creation is now handled by release-please's release PR.
The ADO `github-push` mirror remains.

## Screenshots (if applicable)

N/A — no UI changes.

---------

Co-authored-by: Bill Berry <wbery@microsoft.com>
Co-authored-by: Katrien De Graeve <katriendg@users.noreply.github.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.

2 participants