GHSA-3m6q-h5gj-7mrw json
Gitea has insecure default SSH settings
published 6mo ago modified 4mo ago also GO-2026-5091
- cvss
- —
- not scored
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
## Summary
The built-in SSH server currently advertises a number of key exchange, MAC, and host key algorithms that are considered weak or broken. The defaults should be tightened so a fresh installation passes a baseline SSH security audit out of the box.
## Details
Running `ssh-audit` against a default deployment flags the following as `fail`:
- **Key exchange** - `ecdh-sha2-nistp256` - `ecdh-sha2-nistp384` - `ecdh-sha2-nistp521` - **MAC** - `hmac-sha1` - **Host key** - `ssh-rsa`
## Reproduction
```sh docker run -it --rm positronsecurity/ssh-audit -p 2222 gitea.local ```
## Impact
Default deployments expose algorithms that are known-weak or deprecated upstream. The current workaround requires manually setting several `GITEA__server__SSH_SERVER_*` variables, which most users will never do.
### Workaround
```ini [server] SSH_SERVER_KEY_EXCHANGES = curve25519-sha256, diffie-hellman-group14-sha256 SSH_SERVER_CIPHERS = chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com SSH_SERVER_MACS = hmac-sha2-256-etm@openssh.com, hmac-sha2-256 ```
There is no exposed option to restrict host key algorithms, so `ssh-rsa` remains advertised.
## Acceptance criteria
- [ ] Default `SSH_SERVER_KEY_EXCHANGES`, `SSH_SERVER_CIPHERS`, and `SSH_SERVER_MACS` updated to the secure list above. - [ ] New `SSH_SERVER_HOST_KEY_ALGORITHMS` option added, with a default that excludes `ssh-rsa`. - [ ] Documentation updated to reflect the new defaults. - [ ] `ssh-audit` against a fresh install reports no `[fail]` entries.
Patch / fix
- go code.gitea.io/gitea 1.25.0
Is GHSA-3m6q-h5gj-7mrw in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerAffected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| go | code.gitea.io/gitea | <1.25.0 |
1.25.0 |
Classification
References
-
github.com
/go-gitea/gitea/security/advisories/GHSA-3m6q-h5gj-7mrw
web, advisory
-
github.com
/go-gitea/gitea
package
Sources
- GitHub Advisory GHSA-3m6q-h5gj-7mrw
- OSV GO-2026-5091
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.