fix(security): token exposed in git-push argv via http.extraheader — use askpass or credential helper #381
Labels
No labels
bump
major
bump
minor
bump
patch
kind
bug
kind
chore
kind
docs
kind
epic
kind
feature
loop/paused
mirror-drift
priority
critical
priority
high
priority
low
priority
medium
size
L
size
M
size
S
size
XL
status
blocked
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
frankenbit/release-toolkit#381
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Empirical finding (external cold-read round 4)
git -c http.extraheader='Authorization: token TOKEN' push ...puts the token into the process argv. Visible viaps auxwwand captured by system audit logs (auditd on many distros). Same class as embedding tokens in remote URLs (alcatraz-infra#89 fixed that adjacent case).Meta-class: grep-sweep-missed-siblings — the alcatraz-infra#89 fix targeted URL-embedded tokens; the sibling argv-embedded token case survived because the sweep was for the URL pattern, not the semantic class of 'token visible outside process env.'
Blocking rationale
v1.0.0 signals broad-adoption readiness. Adopters running release-toolkit on shared runners (multi-tenant self-hosted, CI providers with sidecar containers) leak the release token to co-tenants and audit logs. Security-blocking for v1.0.0.
Fix path
Options:
Option A (preferred):
GIT_ASKPASSscript echoing token from env — token stays in env, never in argvOption B:
git credential-storecredential helper — matches alcatraz-infra#89's discipline patternOption C: pipe token via stdin using
--credential-fill— clean but git-version-sensitiveVerification AC
ps auxww | grep gitduring release-cut shows no token in argvAnchor
External outside-model cold-read round 4 (fresh ChatGPT session, 2026-07-03 late). Verdict: 'promising but not yet trustworthy' — SAME TIER as round-3 despite round-3 delta cycle. Meta-pattern named this round: grep-sweep-missed-siblings — the sweep-pattern targeted the literal grep-target, not the semantic class, so class-axis closed PARTIALLY per round. Operator ratified filing round-4 trackers 2026-07-04. This tracker addresses one of the round-4 findings. Success criterion: subsequent external cold-read returns no further objections of this class.
BLOCKING v1.0.0.