CVE-2024-45337
golang.org/x/crypto에서 connection.serverAuthenticate의 오용으로 인해 인증 우회가 발생할 수 있음
- 게시됨
- 2024. 12. 11.
- 업데이트됨
- 2025. 2. 18.
- CNA 할당 중
- Go
- 증거 관찰됨
- 2026. 8. 8.
기본 CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N낮음 · 다음 30일
- 백분위수
- 87.5%
- 모델 날짜
- 2026. 9. 21.
EPSS는 통계적 추정치이지 확실성이나 영향의 척도가 아닙니다. 이를 CVSS, KEV 상태, 노출 및 환경과 결합하세요.
요약
# 애플리케이션 및 라이브러리가 `connection.serverAuthenticate`(콜백 필드 `ServerConfig.PublicKeyCallback`을 통해)를 잘못 사용하는 경우 인증 우회에 취약할 수 있습니다. `ServerConfig.PublicKeyCallback`에 대한 문서는 "이 함수에 대한 호출이 제공된 키가 실제로 인증에 사용된다는 것을 보장하지 않는다"고 명시합니다. 구체적으로, SSH 프로토콜은 클라이언트가 해당 개인 키에 대한 제어를 증명하기 전에 공개 키가 허용 가능한지 문의할 수 있도록 허용합니다. `PublicKeyCallback`은 여러 키로 호출될 수 있으며, 키가 제공된 순서는 클라이언트가 성공적으로 인증한 키(있는 경우)를 추론하는 데 사용할 수 없습니다. `PublicKeyCallback`에 전달된 키(또는 파생 정보)를 저장하고 연결이 설정된 후 이를 기반으로 보안 관련 결정을 내리는 일부 애플리케이션은 잘못된 가정을 할 수 있습니다. 예를 들어, 공격자는 공개 키 A와 B를 보낸 다음 A로 인증할 수 있습니다. `PublicKeyCallback`은 두 번만 호출되며, 먼저 A로, 그다음 B로 호출됩니다. 취약한 애플리케이션은 공격자가 실제로 개인 키를 제어하지 않는 키 B를 기반으로 권한 부여 결정을 내릴 수 있습니다. 이 API가 널리 잘못 사용되므로, 부분적 완화 조치로 golang.org/x/[email protected]은 공개 키로 성공적으로 인증할 때 `ServerConfig.PublicKeyCallback`에 전달된 마지막 키가 연결 인증에 사용된 키가 되도록 속성을 강제합니다. 필요한 경우 `PublicKeyCallback`은 이제 동일한 키로 여러 번 호출됩니다. 연결이 `PasswordCallback`, `KeyboardInteractiveCallback` 또는 `NoClientAuth`와 같은 다른 방법으로 인증되는 경우 클라이언트가 여전히 `PublicKeyCallback`에 전달된 마지막 키를 제어하지 못할 수 있습니다. 사용자는 인증 시도와 관련된 데이터를 기록하기 위해 외부 상태를 참조하는 대신 다양한 인증 콜백의 `Permissions` 반환 값에 있는 `Extensions` 필드를 사용해야 합니다. 연결이 설정되면 성공적인 인증 시도에 해당하는 상태는 `ServerConn.Permissions` 필드를 통해 검색할 수 있습니다. 일부 타사 라이브러리는 인증 시도 간에 `Permissions` 유형을 공유하여 이를 잘못 사용합니다. 타사 라이브러리 사용자는 관련 프로젝트의 지침을 참조해야 합니다.
소스
3Gitea 및 Forgejo 대상 CVE-2024-45337 개념 증명
책임 있는 사용
귀하가 소유하고 있거나 테스트할 권한이 있는 시스템에 대해서만 취약점 정보를 사용하십시오. Kitploit은 공개 연구 메타데이터에 연결되며 익스플로잇 코드나 악성 페이로드를 저장하지 않습니다.