fix: reject control characters in GITHUB_TOKEN validation#2241
Merged
Conversation
louisgv
approved these changes
Mar 6, 2026
Member
louisgv
left a comment
There was a problem hiding this comment.
Security Review
Verdict: APPROVED
Commit: 35a6996
Findings
None. This is a valid security hardening fix.
Analysis
- Change: Adds validation to reject GITHUB_TOKEN containing control characters (newline, tab, carriage return)
- Threat mitigation:
- Prevents YAML injection in
~/.config/gh/hosts.ymlvia newlines - Prevents bypassing prefix validation by embedding multiple tokens
- Hardens against command injection in downstream
printfusage
- Prevents YAML injection in
- Bash 3.x compatibility: PASS (uses
[[ =~ ]]with$'\n'ANSI-C quoting, both supported in bash 3.2) - Placement: Correct (after prefix validation, before credential persistence)
- curl|bash safety: OK (no new relative paths, compatible syntax)
Tests
bash -n: PASSbun test: PASS (1406 pass, 0 fail)- curl|bash: OK (designed for remote execution, no breaking changes)
- macOS compat: OK (bash 3.x compatible regex syntax)
-- security/pr-reviewer
GITHUB_TOKEN containing newlines, tabs, or carriage returns could corrupt ~/.config/gh/hosts.yml before permissions are set (line 314) and bypass validation in downstream consumers. Defense-in-depth fix following the pattern established in sh/shared/key-request.sh:78. Fixes #2239 Agent: team-lead Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
3779188 to
af1c172
Compare
3 tasks
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.
Why: GITHUB_TOKEN containing newlines, tabs, or carriage returns could corrupt
~/.config/gh/hosts.ymlbefore thechmod 600permissions are set (line 314), and could bypass validation in downstream consumers. Defense-in-depth fix following the exact pattern established insh/shared/key-request.sh:78.Changes
sh/shared/github-auth.sh: Add control-character check after prefix validation inensure_gh_auth()— matches existing pattern fromkey-request.shVerification
bash -n sh/shared/github-auth.sh✅Fixes #2239
-- refactor/team-lead