fix(agent/get.ps1): pin TLS 1.2/1.3 explicitly on both AuthenticateAsClient calls (#961) #32
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
primatekuntech/triton-install!32
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/961-tls-protocol-pin"
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?
Fixes the bug behind mirrored triton-repo issue #961 (read-only, from
git.antrapol.tech — not edited/commented/closed there; this PR is the
record).
The bug
Both
SslStream.AuthenticateAsClient($RemoteHost)call sites(
Invoke-DownloadFromManageServer, andInvoke-Preflight's TLScheck — the same function fixed for #962) used the single-argument
overload, relying on the OS/.NET default enabled SSL/TLS protocol set.
On a real, hardened Windows Server target this failed outright:
Explicitly forcing TLS 1.2 fixed it there.
The fix
Switched both to the 4-argument overload, explicitly requesting
Tls12 | Tls13:Tls12 | Tls13: the customer's verified fix (Tls12), plus Tls13 sonewer hosts/servers aren't artificially capped.
$nullclient-cert collection,$falserevocation-check: matchwhat the single-arg overload already defaulted to internally, so
neither changes behavior beyond the protocol floor.
Testing
Verified empirically, not guessed: a throwaway
pwshscript (realself-signed cert +
TcpListener+SslStream, not committed here)confirms the new call negotiates
Tls12successfully against aserver explicitly restricted to Tls12-only. PowerShell AST parse
clean;
PSScriptAnalyzershows zero new findings in the touchedregion.
$SCRIPT_VERSIONbumped 1.3.10 → 1.3.11.Found but explicitly out of scope for this PR
The identical vulnerable pattern also exists in:
agent/get-airgap.ps1(this repo) — a read-only reference copyper CLAUDE.md, not the actual served artifact.
pkg/manageserver/ca/assets/get-airgap.ps1(triton repo) — thereal, go:embed'd, genuinely-served air-gapped installer asset
(#768).
I'm flagging this rather than silently expanding this PR's scope;
whether/how to fix those is a separate decision.
🤖 Generated with Claude Code