Skip to content

Manifest-backed install can silently place unverified binaries #36

Description

@dimonjolo

Found while reviewing commit 18f6f9c. Two related gaps in UnlockerService.InstallModeAsync
for manifest-backed modes (BST):

  1. If manifest.File is not among the extracted files (e.g. upstream renames the
    payload path in latest.toml), the staged.TryGetValue(...) check silently
    skips verification, and unverified dwmapi.dll / xinput1_4.dll / OpenSteamTool.dll
    get copied into the Steam root. Fix: treat a missing payload file as an install
    failure instead of skipping the check.

  2. Loader DLLs are never hash-checked for manifest modes (only OpenSteamTool.dll
    is). Since manifest.Version names a real GitHub release, the releases API
    publishes per-asset sha256 digests — so the zip can additionally be verified
    against the tagged release's asset digest when the API is reachable, and skipped
    otherwise (no new failure mode; the raw manifest still vouches for the payload).

Also hardens ParseUpdateManifest against inline # comments and unterminated strings.

A ready patch (35 insertions, 5 deletions, UnlockerService.cs only) is attached.
Tests: 205 passed; the two LuaVaultTests failures reproduce on clean main, unrelated.

luatools-verify-fixes.patch

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions