docs(security): record glib VariantStrIter constraint (Dependabot #18) - #4738
Merged
Conversation
Dependabot alert #18 (GHSA-wrw7-89jp-8q8g, moderate) wants glib >= 0.20.0. It cannot be reached from this dependency graph, so there is no lockfile change to make and the alert will stay open. Write the derivation down once instead of leaving each session to redo it. glib is transitive, arriving through the Linux/BSD GTK3 stack that tauri and wry depend on. `cargo update -p glib --precise 0.20.0` refuses against `glib = "^0.18"` required by gtk v0.18.2, and gtk has no higher release: 0.18.2 (2024-12-09) is the last of the GTK3 binding generation, while glib 0.20 belongs to gtk4-rs. webkit2gtk 2.0.2, pinned exactly by wry, requires glib/gtk/gio ^0.18, and tauri 2.11.5 still declares gtk ^0.18 on Linux, so upgrading tauri would not move it either. Exposure is Linux-only and no reachable call site was found: VariantStrIter and iter_str appear in no crate in the tree other than glib itself, and src-tauri/src uses no glib, gio, or Variant API. Worst case is a null-pointer crash in the AppImage rather than a disclosure or execution primitive. The new page is general rather than glib-specific, since a frozen GTK3 stack will produce more of these. Entries are deleted when their alert closes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Outcome: not fixable by a version bump
Dependabot alert #18 (moderate, GHSA-wrw7-89jp-8q8g) wants
glib >= 0.20.0.src-tauri/Cargo.lockresolvesglib 0.18.5, and 0.20.0 is unreachable from this dependency graph. There is no lockfile change to make, so this PR ships the derivation instead of a fabricated bump.Cargo.lockis untouched.The constraint
glibis not insrc-tauri/Cargo.toml. It arrives through the Linux/BSD GTK3 stack behindtauriandwry:cargo update -p glibreportsLocking 0 packages— 0.18.5 is already the newest in^0.18. Forcing the patched version names the pin:Upgrading Tauri would not help
The pin is the GTK3 binding generation, not our Tauri version:
gtktops out at 0.18.2 (2024-12-09) — the highest version that crate has ever had.glib 0.20belongs to gtk4-rs; no GTK3 binding release consumes it.webkit2gtk 2.0.2(newest, and pinned=2.0.2bywry) requiresglib ^0.18.0/gtk ^0.18.0/gio ^0.18.0.tauri 2.11.5(latest) andwry 0.56.1still declaregtk ^0.18forcfg(any(target_os = "linux", …bsd)).So no Tauri v2 release resolves
glibabove the 0.18 line on Linux. Per the task scope, no major Tauri work was attempted — and it would not have mattered.Exposure: none identified
cfg-gated off macOS and Windows. The Linux artifact is real, though —release.ymlbuilds an AppImage onubuntu-22.04— so this narrows the blast radius rather than eliminating it.VariantStrIteris only constructed byglib::Variant::iter_str(). Grepping the vendored sources of all 19 crates in the tree that depend onglibfindsiter_str/VariantStrIteringlib-0.18.5itself and nowhere else — not in gtk, gdk, gdkx11, gdk-pixbuf, gio, atk, cairo-rs, pango, soup3, javascriptcore-rs, webkit2gtk, libappindicator, muda, tray-icon, tao, wry, tauri, tauri-runtime, or tauri-runtime-wry.src-tauri/srcuses noglib,gio, orVariantAPI of its own.CStr::from_ptrthen dereferencesNULL— a null-pointer crash, not a disclosure or execution primitive.What would lift it
Either
wrymoving its Linux webview off GTK3 (visible as a change to itswebkit2gtk =2.0.2pin, which would bringglib 0.20+), or an upstream backport to the unmaintainedglib0.18 line. Neither is actionable here. The doc records the re-check commands.The artifact
docs/dependency-advisories.mdis deliberately general, not glib-specific: a frozen GTK3 stack will produce more alerts with no available fix, and each one currently costs a session the same derivation. Each entry records the resolver refusal verbatim, the commands that reproduce it, the exposure assessment, and the upstream condition that retires it. Entries are deleted when their alert closes — the alert stays the source of truth for state.The repo has no
deny.toml, noaudit.toml, and no.github/dependabot.yml, so there was no existing suppression convention to extend.docs/README.mdis updated under Living → Integrity and integrations, per that index's own "add its line to the right section" rule.Validation
node scripts/docs-index.test.mjs→index ok (49 documents classified, 62 links resolved). This is the check CI runs on the docs path.cd src-tauri && cargo check --locked→ exit 0 in 1m25s (9 pre-existing dead-code warnings, unrelated). This confirms the lockfile still resolves; it does not compile the GTK stack, since this is a Windows machine and that code iscfg-gated out. The Linux path is only exercised in CI/release.pnpm lintwas not run: its scripts only coversrc/**TypeScript, and this change touches no source.Closes nothing — alert #18 stays open by design. Tracked as
cave-13m.