🇰🇷 한글 설명
Gogs 0.14.3 미만 버전의 내장 Go SSH 서버에서 인증되지 않은 사용자가 비대칭적 서비스 거부(DoS) 공격을 수행할 수 있습니다. 공격자가 SSH 배너를 전송하지 않고 TCP 연결만 유지할 경우, 서버는 무제한의 고루틴을 생성하여 파일 디스크립터(FD)를 고갈시키고 전체 프로세스를 불안정하게 만듭니다.
💡 쉬운 설명
해커가 가짜 연결을 계속 만들어 서버의 자원을 모두 써버리게 만드는 공격입니다. 이로 인해 서버가 마비되어 실제 사용자들이 서비스를 이용할 수 없게 됩니다.
🇺🇸 원문 (English)
Gogs is an open source self-hosted Git service. Prior to 0.14.3, the Gogs built-in Go SSH server is vulnerable to an unauthenticated, asymmetric Denial of Service (DoS) attack. The application accepts inbound TCP connections and passes them to golang.org/x/crypto/ssh.NewServerConn inside a new goroutine without enforcing any read/write deadlines on the underlying net.Conn. An unauthenticated attacker can open multiple TCP connections to the SSH port and simply withhold the SSH protocol banner. This forces the server to spawn an unbounded number of goroutines that block indefinitely waiting for socket I/O. This leads to complete File Descriptor (FD) exhaustion, preventing legitimate users from accessing the Git SSH service, and ultimately destabilizing the entire Gogs process (e.g., causing internal log rotation failures). This vulnerability is fixed in 0.14.3.
📍 영향받는 시스템
Gogs 0.14.3 미만 버전
⚔️ 공격 벡터
SSH 포트로 다수의 TCP 연결을 생성한 후 SSH 프로토콜 배너 전송을 의도적으로 지연시키는 방식
🛡️ 대응 방법
Gogs를 최신 버전인 0.14.3 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 번호가 0.14.3보다 낮은지 확인하십시오.
curl -s http://<GOGS_HOST>/api/version | grep -E '0\.[0-9]+\.[0-9]+' || echo 'Check version manually'