
CVE-2018-10933 - libssh 인증 우회
CVE-2018-10933에 대한 개념 증명(PoC) 구현으로, libssh의 서버 측 구현에 영향을 미치는 심각한 인증 우회 취약점입니다.
면책 조항
이 저장소는 교육 목적, 취약점 연구 및 승인된 보안 테스트를 위해서만 제공됩니다. 명시적인 허가 없이 시스템을 테스트하지 마십시오.
CVE-2018-10933은 libssh의 서버 측 상태 머신에서 발견된 심각한 인증 우회 취약점입니다.
약한 비밀번호나 암호학적 결함과 관련된 기존의 인증 취약점과 달리, 이 취약점은 서버가 서버에서 클라이언트로만 전송되어야 하는 프로토콜 메시지를 잘못 신뢰하기 때문에 발생합니다.
따라서 공격자는 어떠한 자격 증명도 제공하지 않고 취약한 libssh 서버가 인증이 이미 성공적으로 완료되었다고 믿게 만들 수 있습니다.
이로 인해 인증되지 않은 공격자는 서버 모드에서 libssh를 사용하는 취약한 애플리케이션에 대해 인증된 SSH 세션을 수립할 수 있습니다.
| 필드 | 값 |
|---|---|
| CVE | CVE-2018-10933 |
| 심각도 | 심각(Critical) |
| CVSS v3 | 9.1 |
| CWE | CWE-287 (부적절한 인증) |
| 공격 벡터 | 네트워크 |
| 사용자 상호작용 | 없음 |
| 필수 권한 | 없음 |
이 취약점은 서버 모드로 실행되는 libssh에 영향을 미칩니다.
영향을 받는 버전은 다음과 같습니다:
libssh를 SSH 클라이언트로만 사용하는 애플리케이션은 취약하지 않습니다.
이 취약점은 libssh의 서버 코드 내부에 구현된 인증 상태 머신에서 비롯됩니다.
일반적인 SSH 인증 흐름 중에:
Client ----------------------> Server
SSH_MSG_USERAUTH_REQUEST
|
V
Server validates credentials
|
V
SSH_MSG_USERAUTH_SUCCESS
|
V
Authenticated Session
프로토콜은 SSH_MSG_USERAUTH_SUCCESS가 성공적인 인증 후 서버에 의해서만 생성되도록 규정합니다.
그러나 취약한 버전의 libssh는 이 메시지의 출처를 제대로 검증하지 못합니다.
서버는 클라이언트가 제공한 SSH_MSG_USERAUTH_SUCCESS를 거부하는 대신, 내부 인증 상태를 다음과 같이 직접 전환합니다:
Authenticated = TRUE
자격 증명을 전혀 검증하지 않은 채 말입니다.
이는 **부적절한 인증(CWE-287)**의 전형적인 사례입니다.
Client
|
| USERAUTH_REQUEST
|
V
Server
Validate Username
Validate Password
Validate Keys
|
V
USERAUTH_SUCCESS
Authenticated
Attacker
|
| USERAUTH_SUCCESS
|
V
Vulnerable Server
(No validation)
Authenticated
성공적인 악용을 통해 인증되지 않은 공격자는 다음을 수행할 수 있습니다:
실제 영향은 취약한 애플리케이션이 인증 후 libssh를 어떻게 사용하는지에 따라 달라집니다.
이 취약점은 인증 상태 머신이 클라이언트로부터 다음 패킷을 잘못 수락하기 때문에 발생합니다:
SSH2_MSG_USERAUTH_SUCCESS
libssh는 패킷이 서버에서 시작되었는지 확인하는 대신, 인증이 성공적으로 완료된 것처럼 내부 세션 상태를 업데이트합니다.
이후의 권한 부여 검사는 이 내부 상태에 의존하기 때문에, 공격자는 즉시 인증된 채널을 열 수 있습니다.
이 취약점은 다음을 악용하지 않습니다:
대신, 프로토콜 상태 처리의 논리적 결함을 악용합니다.
공격자에게 필요한 것은:
다음은 필요하지 않습니다:
잠재적 징후는 다음과 같습니다:
네트워크 IDS 시그니처는 또한 클라이언트에서 전송된 비정상적인 SSH2_MSG_USERAUTH_SUCCESS 패킷을 식별할 수 있습니다.
libssh를 다음 패치된 릴리스 중 하나로 업그레이드하십시오:
즉시 업그레이드할 수 없는 경우:
영향을 받는 소프트웨어를 업데이트하는 것 외에 신뢰할 수 있는 해결 방법은 없습니다.
이 저장소는 인증 상태 머신 취약점이 프로토콜 구현 실수로 인해 어떻게 발생할 수 있는지 보여줍니다.
다음과 같은 사람들을 돕기 위해 만들어졌습니다:
포함된 개념 증명(PoC)은 통제된 환경에서 취약점을 시연하여 안전한 프로토콜 구현에 대한 이해를 높이는 데 도움을 줍니다.