ConnectivityAndDNSChecks attempts TCP port 80 probe to http://ssh.github.com/_dns, violating documented only-HTTPS port 443 egress requirements
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 6.3k
- Forks
- 1.4k
- Avg merge
- 1d 16h
- Merged PRs (30d)
- 24
Description
Describe the bug
Following the changes in PR #4547 ("Allow checking DNS with api.github.com"), the runner worker executes pre-flight diagnostic checks during JobExtension initialization.
While almost all endpoints in the ConnectivityAndDNSChecks payload use https://, one check specifically attempts an unencrypted HTTP connection over TCP port 80:
"http://ssh.github.com/_dns"
In enterprise environments with strict egress network policies that block port 80 (aligning with GitHub's self-hosted runner documentation, which states only port 443 HTTPS is required), this check fails on port 80 and triggers false-positive network policy violation alerts.
To Reproduce
Steps to reproduce the behavior:
- Deploy a self-hosted runner (v2.336.0+).
- Apply an egress network policy restricting outbound internet traffic (
0.0.0.0/0) exclusively to TCP port 443. - Dispatch any workflow job to the self-hosted runner.
- Check worker stdout/diag logs and cluster egress policy logs.
Expected behavior
All diagnostic endpoints in ConnectivityAndDNSChecks should use https:// over TCP port 443, matching GitHub's documented network requirements for self-hosted runners.
Runner Version and Platform
Version of your runner? v2.336.0
OS of the machine running the runner? Linux
What's not working?
The runner attempts an unencrypted HTTP probe on TCP port 80 to http://ssh.github.com/_dns during job initialization. When network policies deny this traffic, it generates security alert noise in network audit logs.
Job Log Output
[WORKER x INFO Worker] "ConnectivityAndDNSChecks": "[\"[https://github.com/_dns](https://github.com/_dns)\",\"[https://api.github.com/_dns](https://api.github.com/_dns)\",\"[https://codeload.github.com/_dns](https://codeload.github.com/_dns)\",\"[https://pkg.github.com/_dns](https://pkg.github.com/_dns)\",\"[https://copilot-proxy.githubusercontent.com/_dns](https://copilot-proxy.githubusercontent.com/_dns)\",\"[http://ssh.github.com/_dns](http://ssh.github.com/_dns)\"]"
[WORKER x INFO JobExtension] Check server connectivity for [http://ssh.github.com/_dns](http://ssh.github.com/_dns).
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating the ConnectivityAndDNSChecks payload used during JobExtension initialization and find the ssh.github.com endpoint shown in the issue. Update the diagnostic endpoint so it uses HTTPS on port 443, then run the relevant runner checks or tests and confirm the worker logs no longer attempt an HTTP port 80 probe.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 82/100