id: ebb9556e-9e38-4ba0-8081-2b71e45cd51e title: repo.git publishes local filesystem path in config state: closed labels:
- security assignees: [] milestone: null created: 2026-10-27T14:47:50.464582699Z updated: 2026-10-27T15:53:18.628243968Z
dist/repo.git/config is published and contains the builder's absolute filesystem path.
$ curl -s http://127.0.0.1:39313/repo.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = true
[remote "origin"]
url = ~/src/code/gl0w-w0rld/hu13
git clone records remote.origin.url pointing at the source path, and every file under repo.git/ is served verbatim. That leaks the deploy host's directory layout and username (/home/<user>/src/...) to the public.
Also published and useless: description (the "Unnamed repository" stub) and 14 hooks/*.sample files.
Fix, after the clone:
git --git-dir=<dest> config --remove-section remote.origin(or build the export from the bundle without a named remote and never clone from the path)- delete
description,hooks/,info/excludebeforeupdate-server-info
Acceptance:
-
built
repo.git/configcontains noremotesection and no absolute path -
test: build fixture in a temp dir, assert
configdoes not contain the temp dir path -
hooks/anddescriptionare absent from the export