fix(security): take memf-windows 0.5 to reach the patched yara-x and wasmtime - #23
Conversation
…wasmtime memory-forensic published the security fixes today; this picks them up. Under `--features memory` the advisory count on this repo's dependency stack drops from 20 to 2. memf-windows ^0.3 -> ^0.5 (0.5.0 requires yara-x ~1.7, was ^0.12) memf-core unchanged (^0.2 already admits the published 0.2.6) memf-format unchanged (^0.3 already admits 0.3.2) Only memf-windows needed a manifest change. It went 0.4 -> 0.5 upstream because `pub fn scan_yara` takes `&yara_x::Rules` across the API boundary, so the yara-x major move is breaking for callers and a caret cannot cross it. The others moved within their existing carets, which is why `cargo update` alone was not enough and a lockfile refresh alone would have silently done nothing. Resulting graph: yara-x 1.7.1, wasmtime 36.0.13 (patched for GHSA-hgjw-h833-99q9 and five siblings), lru 0.18.2. The three yara-x companion crates are pinned in the lock to 1.7.1. yara-x declares them `^1.7.1`, which permits 1.19, and 1.19's yara-x-proto REMOVED a field 1.7.1's build.rs uses (`ModuleOptions.rust_module`) — an upstream semver break. Without the pins this workspace does not compile. A `cargo update` will unpin them and break the build loudly rather than silently, which is the tolerable failure mode. The two advisories that remain are unfixable here and identical to the ones argued in memory-forensic: RUSTSEC-2023-0071 (rsa Marvin Attack) and RUSTSEC-2025-0141 (bincode unmaintained), both carrying `patched = []`, both reached only through yara-x. They are NOT suppressed in this commit, because this repo's cargo-deny gate does not see them at all — see below. Verified: `cargo check --workspace --all-features --all-targets` clean. NOT FIXED HERE, and worth its own change: the `memory` feature is opt-in (`default = []`), so CI's cargo-deny run never resolves it. `cargo deny check` reports 0 errors on this repo while `cargo deny --features memory check` reported 42 on main and 30 here. The gate has never looked at a shipped capability. Closing that needs `deny-args: --features memory` plus two licence entries — `Apache-2.0 WITH LLVM-exception` (28 of the 29 rejections; permissive, already allowed in memory-forensic) and a clarification for array-bytes 9.3.0, whose deprecated `Apache-2.0/GPL-3.0` form means OR, and we take Apache-2.0. Doing that here would turn a green check red inside a dependency bump.
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
… bump
Taking memf-windows 0.5 moved 32 crate names into the graph and 25 out, leaving
`cargo vet` with 159 missing audits and turning `ci / cargo-vet` red. Resolved
with the strongest mechanism that applies at each step, not the cheapest.
Most of the incoming names are wasmtime's own renames of crates leaving in the
same change — wasmtime-cranelift becomes wasmtime-internal-cranelift, and so on
for eight siblings — so the net new trust surface is far smaller than 32.
- publisher trust for dtolnay, kennykerr, BurntSushi, epage, sunfishcode,
cuviper, philipc, seanmonstar, fitzgen, Amanieu and alexcrichton, each
already trusted by the imported mozilla and bytecode-alliance audit sets.
159 -> 72 missing.
- publisher trust for h4x0r, so OUR OWN crates entering the graph
(jsonguard, zfs-forensic-core) are trusted rather than exempted. That is
mechanism 2 in the supply-chain policy, and reaching for an exemption there
would have been a weaker claim than the facts support.
- exemptions for the remainder, which honestly assert "nobody audited this".
`--allow-multiple-publishers` was deliberately NOT passed: where a crate has
several publishers, trusting it on one name claims more than is known.
Net posture is better than before the bump, not merely restored: exemptions fall
317 -> 281 and fully-audited crates rise to 222.
Newly exempted, i.e. genuinely new unaudited surface — listed rather than
counted, because a count is not reviewable and this is the one part of the
change that adds trust surface:
android_system_properties, base64, bincode_derive, either, ipnet, jobserver,
nom, psl, psl-types, strum_macros, unty, virtue,
wasmtime-internal-asm-macros, zeroize_derive, zip, zlib-rs, zstd, zstd-safe,
zstd-sys
`cargo vet --locked` reports Vetting Succeeded.
fix(security): take memf-windows 0.5 to reach the patched yara-x and wasmtime
memory-forensic published the security fixes today; this picks them up. Under
--features memorythe advisory count on this repo's dependency stack dropsfrom 20 to 2.
memf-windows ^0.3 -> ^0.5 (0.5.0 requires yara-x ~1.7, was ^0.12)
memf-core unchanged (^0.2 already admits the published 0.2.6)
memf-format unchanged (^0.3 already admits 0.3.2)
Only memf-windows needed a manifest change. It went 0.4 -> 0.5 upstream because
pub fn scan_yaratakes&yara_x::Rulesacross the API boundary, so the yara-xmajor move is breaking for callers and a caret cannot cross it. The others moved
within their existing carets, which is why
cargo updatealone was not enoughand a lockfile refresh alone would have silently done nothing.
Resulting graph: yara-x 1.7.1, wasmtime 36.0.13 (patched for
GHSA-hgjw-h833-99q9 and five siblings), lru 0.18.2.
The three yara-x companion crates are pinned in the lock to 1.7.1. yara-x
declares them
^1.7.1, which permits 1.19, and 1.19's yara-x-proto REMOVED afield 1.7.1's build.rs uses (
ModuleOptions.rust_module) — an upstream semverbreak. Without the pins this workspace does not compile. A
cargo updatewillunpin them and break the build loudly rather than silently, which is the
tolerable failure mode.
The two advisories that remain are unfixable here and identical to the ones
argued in memory-forensic: RUSTSEC-2023-0071 (rsa Marvin Attack) and
RUSTSEC-2025-0141 (bincode unmaintained), both carrying
patched = [], bothreached only through yara-x. They are NOT suppressed in this commit, because
this repo's cargo-deny gate does not see them at all — see below.
Verified:
cargo check --workspace --all-features --all-targetsclean.NOT FIXED HERE, and worth its own change: the
memoryfeature is opt-in(
default = []), so CI's cargo-deny run never resolves it.cargo deny checkreports 0 errors on this repo while
cargo deny --features memory checkreported 42 on main and 30 here. The gate has never looked at a shipped
capability. Closing that needs
deny-args: --features memoryplus two licenceentries —
Apache-2.0 WITH LLVM-exception(28 of the 29 rejections; permissive,already allowed in memory-forensic) and a clarification for array-bytes 9.3.0,
whose deprecated
Apache-2.0/GPL-3.0form means OR, and we take Apache-2.0.Doing that here would turn a green check red inside a dependency bump.