🇰🇷 한글 설명
goshs는 Go로 작성된 SimpleHTTPServer입니다. 2.0.0-beta.4부터 2.0.0-beta.5까지의 버전에서, 전역 basic auth 없이 배포된 경우 공개 협업자 피드를 통해 파일 기반 ACL 자격증명이 유출됩니다. .goshs-protected 폴더에 대한 요청은 인가 적용 이전에 기록되며, 협업자 웹소켓이 Authorization 헤더를 포함한 원시 요청 헤더를 브로드캐스트합니다. 이 취약점은 2.0.0-beta.6에서 수정되었습니다.
💡 쉬운 설명
이 취약점은 서버에 접속하는 사용자의 로그인 정보가 공개된 화면에 그대로 노출될 수 있는 문제입니다. 공격자는 이 정보를 가로채 보호된 폴더의 파일을 읽거나 수정, 삭제할 수 있습니다.
🇺🇸 원문 (English)
goshs is a SimpleHTTPServer written in Go. From 2.0.0-beta.4 to 2.0.0-beta.5, goshs leaks file-based ACL credentials through its public collaborator feed when the server is deployed without global basic auth. Requests to .goshs-protected folders are logged before authorization is enforced, and the collaborator websocket broadcasts raw request headers, including Authorization. An unauthenticated observer can capture a victim's folder-specific basic-auth header and replay it to read, upload, overwrite, and delete files inside the protected subtree. This vulnerability is fixed in 2.0.0-beta.6.
📍 영향받는 시스템
goshs 2.0.0-beta.4 ~ 2.0.0-beta.5 (전역 basic auth 없이 배포된 서버)
⚔️ 공격 벡터
인증되지 않은 공격자가 협업자 웹소켓 피드를 관찰해 피해자의 Authorization 헤더를 탈취한 뒤 재사용하여 보호 폴더 내 파일을 읽기, 업로드, 덮어쓰기, 삭제
🛡️ 대응 방법
goshs를 2.0.0-beta.6 이상으로 업그레이드하고, 가능하면 전역 basic auth를 활성화하며 노출된 자격증명은 즉시 변경
🔧 검증 코드
출력된 버전이 2.0.0-beta.4 또는 2.0.0-beta.5 범위에 해당하면 취약하며, 2.0.0-beta.6 이상이면 패치된 상태이고, 'goshs not found'가 나오면 설치되지 않은 것입니다.
goshs -v 2>/dev/null || (command -v goshs >/dev/null && goshs --version 2>/dev/null) || echo 'goshs not found'