Security: patched crate versions across the workspaces; wasmtime 50 in the sandbox; quick-xml 0.42 where outside XML is parsed #444

Closed
dcharlot wants to merge 1 commit from sec/rustsec-2026-10 into main

2026-10-22

Transaction Science
Security: patched crate versions across the workspaces; wasmtime 50 in the sandbox; quick-xml 0.42 where outside XML is parsed
All checks were successful
standards workspaces build + test / sandbox-rs (sandbox-conformance, sandbox/sandbox-rs, -p sandbox-tee --features amd-kds,intel-pcs, sandbox-rs, linux) (pull_request) Successful in 3m0s
standards workspaces build + test / smart-byte-rs (smart-byte/smart-byte-rs, smart-byte-rs, linux) (pull_request) Successful in 4m9s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m13s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 29s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m20s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 18m57s
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Successful in 1m23s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 1m40s
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Successful in 6m54s
wai-pack / wai-pack · linux (pull_request) Successful in 1m34s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m35s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 3m8s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m5s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 4m20s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 5m23s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 3m1s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 4m42s
jouleclaw fabrics / metal (macOS, Apple GPU) (pull_request) Successful in 1m25s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 11m19s
standards workspaces build + test / jouledesk-rs (jouledesk/jouledesk-rs, jouledesk-rs, macos) (pull_request) Successful in 5m13s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 23m35s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 26s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 58s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 7m45s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 2m52s
wai-pack / wai-pack · macos (pull_request) Successful in 1m17s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 3m23s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 3m0s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 1m43s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 6m45s
Every workspace lockfile was checked against the RustSec database as of 2026-10-22.
What our code reaches is fixed here.

- wasmtime 43 -> 50 in sandbox-rs, whose wasm executor runs untrusted guests:
  - RUSTSEC-2026-0379 (Cranelift on aarch64 can jump to the wrong target on a large
    br_table);
  - RUSTSEC-2026-0327 (an unvalidated callback result count overflows a native stack);
  - RUSTSEC-2026-0269 (filesystem sandbox escape through trailing slashes);
  - and the rest of the 2026 wasmtime advisories.
  The core module API it uses compiles unchanged. WASMTIME_VERSION, which attestations
  record, is now 50.0.0, as are the spec's example and two test samples.
- Compatible updates in 13 workspaces:
  - rustls 0.23.46 (RUSTSEC-2026-0285, 0346, 0348, 0349);
  - rustls-webpki 0.103.16, webpki-roots 1.0.10 and webpki-root-certs 1.0.10
    (distrusted emSign intermediates, RUSTSEC-2026-0381 to 0383);
  - quinn-proto 0.11.19 (remote panics and memory exhaustion, RUSTSEC-2026-0185, 0338
    to 0343);
  - h2 0.4.20 (RUSTSEC-2026-0258);
  - tokio 1.54.1 (RUSTSEC-2026-0384);
  - crossbeam-epoch 0.9.21 (RUSTSEC-2026-0204).
- quick-xml 0.36 -> 0.42 (RUSTSEC-2026-0194 and 0195: quadratic duplicate-attribute
  checks and unbounded namespace allocation) where outside XML is parsed:
  - openpay's op-screening sanctions-list updater (OFAC SDN, UN, EU), op-3ds2, op-batch
    and op-iso20022;
  - jouleclaw's OpenVINO IR loader and Maltego TRX parser.
  Each reference (&, &) now arrives as its own event. The parsers gather an
  element's text from both kinds of event and trim it once, so names keep their spaces.
  Attribute values go through normalized_value. The EU parser had kept `&` in
  wholeName literally; it now reads as `&`. New tests cover references in every list
  format and in TRX values, fields and messages.
- joule-code-collab's MLS keying test moves to openmls 0.9.1 (matching joule-moq-mls),
  removing hpke-rs 0.2.0 (RUSTSEC-2026-0069 to 0072) from the lockfile. It was a
  dev-dependency only.
- op-3ds2 drops an unused rsa dependency (RUSTSEC-2023-0071 has no fix).

Left as they are, and why:
- zip < 9 is only a transitive dependency (c2pa, candle, a build helper of livekit). No
  code of ours calls its extract().
- open_board_format reads .obz in memory in a test only. aac-core's import accepts
  stored entries alone, so nothing is inflated.
- rsa via c2pa and sandbox-tee is used for public-key verification, which Marvin does
  not reach.
- h2 0.3 (via hf-hub's reqwest 0.11), hickory-proto 0.25, libcrux-kem 0.0.9 (via
  hpke-rs-libcrux), pyo3 0.28 and rkyv 0.7 (via rust_decimal) are client-side or
  unused paths with no patched release on their lines. They are noted for the next
  dependency round.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 10:12:06 -04:00