Skip to content

fix(security): take memf-windows 0.5 to reach the patched yara-x and wasmtime - #23

Merged
h4x0r merged 2 commits into
mainfrom
fix/memf-security-bump
Aug 16, 2026
Merged

fix(security): take memf-windows 0.5 to reach the patched yara-x and wasmtime#23
h4x0r merged 2 commits into
mainfrom
fix/memf-security-bump

Conversation

@h4x0r

@h4x0r h4x0r commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

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 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.

…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.
@socket-security

socket-security Bot commented Aug 16, 2026

Copy link
Copy Markdown

@socket-security

socket-security Bot commented Aug 16, 2026

Copy link
Copy Markdown

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.

Action Severity Alert  (click "▶" to expand/collapse)
Warn High
Obfuscated code: cargo lzma-rust2 is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: ?cargo/memf-windows@0.5.0cargo/lzma-rust2@0.13.0

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore cargo/lzma-rust2@0.13.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

View full report

… 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.
@h4x0r
h4x0r merged commit 1e36a81 into main Aug 16, 2026
19 checks passed
@h4x0r h4x0r mentioned this pull request Aug 16, 2026
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