Skip to content

Port the binksim work from vfs-2.53.0 to vfs-2.54.0#929

Open
dscho wants to merge 4 commits into
vfs-2.54.0from
sdl-baseline-2.54.0
Open

Port the binksim work from vfs-2.53.0 to vfs-2.54.0#929
dscho wants to merge 4 commits into
vfs-2.54.0from
sdl-baseline-2.54.0

Conversation

@dscho
Copy link
Copy Markdown
Member

@dscho dscho commented Jun 1, 2026

This ports #924, #925 and #926 to the vfs-2.54.0 branch, rendering the output of git diff microsoft/vfs-2.53.0 -- .azure-pipelines/ empty.

mjcheetham and others added 4 commits June 1, 2026 15:36
The 1ES PT Windows build job did not run binskim against the binaries
we ship. By default the template would point binskim at the published
artifact (the Inno Setup installer and the 7z self-extracting portable
.exe), neither of which binskim can crack open to find the PE files
inside, so any findings on those wrappers are also unactionable: they
are produced by external tools we do not control.

Opt the job into binskim explicitly and aim it at the actual product
binaries instead. Stage only the first-party pacman packages that
`please.sh build-mingw-w64-git` emits --
mingw-w64-<toolchain>-{git,git-credential-wincred,git-pdb}-*.pkg.tar.xz
-- into _bin/<mingwprefix>/ and scope the analyzer to the .exe/.dll
files in that tree. By construction those packages carry only the
binaries this repo's Makefile builds (git.exe, the dashed subcommands,
scalar.exe, headless-git.exe, git-gvfs-helper.exe,
git-credential-wincred.exe, ...) plus their cv2pdb-generated .pdbs,
so a broad **/*.{exe,dll} glob is safe.

Excluding everything else keeps the full Git for Windows installer
payload out of the scan: MSYS2/MinGW runtime, Perl, Tcl/Tk,
libcurl/libssl/libssh2, Git Credential Manager, Git LFS, tig, and the
build-extra git-wrapper launcher shims are all third-party content we
cannot fix from this repo.

Assisted-by: Claude Opus 4.7
Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
BinSkim flags toolchain-rooted issues on every release build that we
cannot fix from this repo: BA2008 (Control Flow Guard) and BA2012
(stack cookie not locatable) on every clangarm64 binary, and BA2025
(CET shadow stack) on every mingw64 binary. CFG and CET shadow stack
are gated on linker support that lld's MinGW driver does not expose,
and BinSkim's stack-cookie check uses an MSVC PE walker that does
not find clang's emitted cookie. None are actionable from microsoft/git.

Point the SDL templateContext at a per-arch suppression file at
.azure-pipelines/sdl/$dim.id/gdnsuppress so Guardian skips these
known-bad findings on each scan. Per-arch paths keep the entries
isolated to the matching toolchain and let either arch grow new
entries without touching the other.

Seed windows_arm64/gdnsuppress with the 44 hydrated entries Guardian
auto-published in the drop_build_windows_arm64_sdl_analysis artifact
on the previous release run; the signatures are derived from
(tool, ruleId, target URI) and remain stable across rebuilds, so
the same file applies to future runs.

windows_x64/gdnsuppress ships as a stub with no suppression entries.
BA2025 is the only BinSkim finding on x64 and it is Warning-severity,
so it does not break the build, and Guardian's pipeline-export only
hydrates findings at or above Error severity, so no canonical entries
were auto-generated to seed from. The stub keeps the per-arch path
uniform without requiring a YAML conditional, and gives us a place
to drop x64 entries later if we ever want to silence the warning.

Assisted-by: Claude Opus 4.7
Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Originally added to vfs-2.53.0.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
release: binskim for Windows

The 1ES PT Windows build job did not run binskim against the binaries
we ship. By default the template would point binskim at the published
artifact (the Inno Setup installer and the 7z self-extracting portable
.exe), neither of which binskim can crack open to find the PE files
inside, so any findings on those wrappers are also unactionable: they
are produced by external tools we do not control.

Opt the job into binskim explicitly and aim it at the actual product
binaries instead. Stage only the first-party pacman packages that
`please.sh build-mingw-w64-git` emits --
mingw-w64-<toolchain>-{git,git-credential-wincred,git-pdb}-*.pkg.tar.xz
-- into _bin/<mingwprefix>/ and scope the analyzer to the .exe/.dll
files in that tree. By construction those packages carry only the
binaries this repo's Makefile builds (git.exe, the dashed subcommands,
scalar.exe, headless-git.exe, git-gvfs-helper.exe,
git-credential-wincred.exe, ...) plus their cv2pdb-generated .pdbs,
so a broad **/*.{exe,dll} glob is safe.

Excluding everything else keeps the full Git for Windows installer
payload out of the scan: MSYS2/MinGW runtime, Perl, Tcl/Tk,
libcurl/libssl/libssh2, Git Credential Manager, Git LFS, tig, and the
build-extra git-wrapper launcher shims are all third-party content we
cannot fix from this repo.

Since the baseline that is added automatically does not conform to Git's
whitespace rules, also add a `.config/.gitattributes` file to suppress
those checks.

Assisted-by: Claude Opus 4.7
Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
@dscho dscho requested a review from mjcheetham June 1, 2026 13:47
@dscho dscho self-assigned this Jun 1, 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.

3 participants