Skip to content

[FIX] Clear cargo-deny advisories on webpki-roots, rustls-webpki, and tokio - #145

Merged
puretensor merged 1 commit into
mainfrom
grok/review/deny-advisories-202610
Oct 25, 2026
Merged

puretensor merged 1 commit into
mainfrom
grok/review/deny-advisories-202610

Conversation

@puretensor

Copy link
Copy Markdown
Owner
  • Seat: grok-4.7 / xhigh (adversarial review wave 7, 2026-10-25)

  • Category: [FIX]

  • Problem / Opportunity: cargo deny check advisories is red on current main (1a80d2a). Three advisories from 20–23 October 2026 flag webpki-roots 1.0.7, rustls-webpki 0.103.15, and tokio 1.52.3. CI runs that check with cargo-deny 0.19.9, so main cannot go green until all three move. Each bump on its own still leaves the other two, so this is one lockfile change.

  • Evidence: Unmodified main lock, cargo-deny 0.19.9:

cd /tmp/ptask-deny   # worktree at 1a80d2a, Cargo.lock restored to HEAD
env PATH=/usr/bin:/bin:$HOME/.cargo/bin CARGO_HOME=/tmp/ptask-cargo-deny \
  cargo deny check advisories licenses sources

Exit 1. The three errors, abbreviated:

error[vulnerability]: Certificate verification may accept distrusted intermediates
    ┌─ Cargo.lock:290:1
290 │ rustls-webpki 0.103.15 registry+https://github.com/rust-lang/crates.io-index
    ├ ID: RUSTSEC-2026-0382
    ├ Solution: Upgrade to >=0.103.16, <0.104.0-alpha.1 OR >=0.104.0-alpha.8

error[unsound]: `AsyncFd::new` and related constructors violate I/O safety
    ┌─ Cargo.lock:350:1
350 │ tokio 1.52.3 registry+https://github.com/rust-lang/crates.io-index
    ├ ID: RUSTSEC-2026-0386
    ├ Solution: Upgrade to >=1.51.6, <1.52.0 OR >=1.53.3

error[vulnerability]: Bundled root certificates allow trust in distrusted emSign intermediates
    ┌─ Cargo.lock:399:1
399 │ webpki-roots 1.0.7 registry+https://github.com/rust-lang/crates.io-index
    ├ ID: RUSTSEC-2026-0381
    ├ Solution: Upgrade to >=1.0.10

advisories FAILED, licenses ok, sources ok

Upstream text fetched this session:

crates.io version objects fetched this session (checksums match Cargo.lock):

rg -n AsyncFd over this worktree returned no matches, so the deprecation of AsyncFd::new / with_interest / try_new / try_with_interest has no call site here.

  • Change: Lockfile bump, plus the workspace patch version 3.51.5 → 3.51.6 in Cargo.toml (workspace package and the six internal pins), the seven member stamps in Cargo.lock, and the two version lines in docs/gen/pt.1. The historical dashboard note in dashboard/README.md is left as written.

Precise updates (cargo 1.98.1):

cargo update -p tokio --precise 1.53.3
# Updating tokio v1.52.3 -> v1.53.3
cargo update -p rustls-webpki --precise 0.103.16
# Updating rustls-webpki v0.103.15 -> v0.103.16
cargo update -p webpki-roots@1.0.7 --precise 1.0.11
# Updating webpki-roots v1.0.7 -> v1.0.11

cargo update -p webpki-roots --precise 1.0.11 is ambiguous (webpki-roots@0.26.11 and webpki-roots@1.0.7). The 0.26.11 crate stays. The advisory lists it as unaffected and says it re-exports the 1.x parent; that parent is now 1.0.11.

cargo update -p tokio --precise 1.53.3 also rewrote Windows-only windows-sys edges from 0.61.2 to 0.59.0 or 0.60.2 (anstyle-query, dirs-sys, errno, is-terminal, jiff, nu-ansi-term, rustix, socket2, tempfile, winapi-util). The crates.io index for tokio 1.53.3 still requires windows-sys ^0.61, the same requirement as 1.52.3, and the other crates' requirements still accept 0.61.2 (anstyle-query >=0.60.2, <0.62; errno / rustix / tempfile >=0.52, <0.62). Those edges are left on 0.61.2. The committed third-party diff is the three version/checksum pairs plus the four webpki-roots 1.0.7 → 1.0.11 edges (hyper-rustls, lettre, reqwest, and the 0.26.11 re-export). cargo +1.98.1 metadata --locked --format-version 1 --no-deps exits 0 on that lock and does not rewrite it.

  • Verification: Same worktree, PATH=/usr/bin:/bin:$HOME/.cargo/bin, CARGO_HOME=/tmp/ptask-cargo-deny, CARGO_TARGET_DIR=/tmp/ptask-target-deny, toolchain 1.98.1.
cargo deny check advisories licenses sources
# advisories ok, licenses ok, sources ok

bash scripts/ci-version-check.sh
# version-check: workspace, lockfile, internal requirements, and manpage agree on 3.51.6

cargo fmt --all -- --check
# exit 0

bash scripts/ci-production-build-check.sh
# production-build-check: release and fallback builds enable native-ml

bash scripts/generated-artifacts.sh --check
# generated-artifacts: checked-in files match the CLI

python3 -m unittest discover -s scripts/tests -v
# Ran 38 tests in 13.572s  OK

cargo test --workspace --locked -- --test-threads=8
# exit 0. Every test-result line was ok, 0 failed.
# Largest suites: ptask-core 434 passed; ptask-server lib 141 passed; ptask-distill 70 passed.

cargo clippy --workspace --all-targets --locked -- -D warnings
# Finished `dev` profile [unoptimized + debuginfo] target(s) in 14.61s
# exit 0

cargo clippy -p ptask-distill --all-targets --features native-ml --locked -- -D warnings
# Finished `dev` profile [unoptimized + debuginfo] target(s) in 15.49s
# exit 0

HOME=$(mktemp -d) cargo test -p ptask-distill --features native-ml --locked -- --test-threads=8
# test result: ok. 80 passed; 0 failed (lib)
# test result: ok. 7 passed; 0 failed (consolidation_must_not_lose_input)
# exit 0

Dashboard sidecar tests were not run. This diff does not touch dashboard/. A release --features native-ml build was not run; the debug native-ml test and clippy builds were.

  • Risk & rollback: TLS verifiers that use this lock stop trusting the emSign root and reject paths that contain the distrusted intermediate keys. That is the advisory fix. Tokio moves 1.52.3 → 1.53.3; the AsyncFd constructors deprecated by that release have no call site in this tree, and clippy -D warnings is clean on both feature sets. webpki-roots 0.26.11 stays and now re-exports 1.0.11. Revert is a clean single-commit revert of the lockfile and the 3.51.6 stamp.

cargo deny check advisories fails on main for RUSTSEC-2026-0381
(webpki-roots 1.0.7), RUSTSEC-2026-0382 (rustls-webpki 0.103.15),
and RUSTSEC-2026-0386 (tokio 1.52.3). Bump those three crates to
the patched releases in one commit, because any single bump leaves
deny red.
@puretensor
puretensor merged commit 1219d09 into main Oct 25, 2026
5 checks passed
@puretensor
puretensor deleted the grok/review/deny-advisories-202610 branch October 25, 2026 05:37
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.

1 participant