Samba에서 중요한 보안 취약점 (2016년 4월 12일에 게재)
Samba는 SMB (Server Message Block) 또는 CIFS (Common Internet File System) 프로토콜의 오픈 소스 구현으로 PC 호환을 통해 파일, 프린터 및 기타 다른 정보를 공유할 수 있습니다. 현재 지원되는 Samba 버전에서 몇 가지 결함이 발견되어 수정되었습니다. Badlock 문제 (CVE-2016-2118)에 대한 보다 자세한 내용은 지식 베이스 문서 2253041에서 참조하십시오.
영향 받는 버전:
CVE | RHEL 5 samba | RHEL 5 samba3x | RHEL 6 samba | RHEL 6 samba4 | RHEL 7 | Gluster Storage | 영향 받는 Samba 역할 |
---|---|---|---|---|---|---|---|
CVE-2015-5370 | N | Y | Y | Y | Y | Y | Samba에서 사용할 수 있는 모든 역할 |
CVE-2016-2110 | Y | Y | Y | Y | Y | Y | Samba에서 사용할 수 있는 모든 역할 |
CVE-2016-2111 | Y | Y | Y | Y | Y | Y | Classic primary DC, backup DC, 또는 Active Directory DC |
CVE-2016-2112 | Y | Y | Y | Y | Y | Y | Samba에서 사용할 수 있는 모든 역할 |
CVE-2016-2113 | N | N | N | Y | Y | Y | Samba에서 사용할 수 있는 모든 역할 |
CVE-2016-2114 | N | N | N | Y | Y | Y | Samba에서 사용할 수 있는 모든 역할 |
CVE-2016-2115 | Y | Y | Y | Y | Y | Y | Samba에서 사용할 수 있는 모든 역할 |
CVE-2016-2118 | Y | Y | Y | Y | Y | Y | Active Directory DC의 경우 심각한 영향을 미치지만 Samba에서 사용할 수 있는 모든 역할 |
CVE-2015-5370: DCE/RPC 코드 관련 여러가지 취약점
Samba의 DCE/RPC 프로토콜 구현에서 몇 가지 결함이 발견되었습니다. 원격, 인증된 공격자는 이러한 취약점을 악용하여 Samba 서버 (높은 CPU 부하 또는 충돌)에 대해 DoS (Denaial of Service) 공격을 실행하거나 Samba (root)를 실행하는 사용자의 권한을 사용하여 임의의 코드를 실행할 수 있습니다. 본 결함은 중간 공격자가 Active Directory (AD) 개체의 제어 관리를 탈취하고 Samba Active Directory Domain Controller (DC) 보안을 침해하여 보안 DCE/RPC 연결을 다운그레이드하는데 사용될 수 있습니다.
알림: Red Hat Enterprise Linux에 탑재된 Samba 패키지는 AD DC로 Samba 실행을 지원하지 않지만 본 결함은 Samba가 구현하는 모든 역할에 적용됩니다.
CVE-2016-2118 (Badlock): SAMR 및 LSA 프로토콜 중간 가로채기 공격 가능
본 결함에 대한 자세한 내용은 다음에서 확인하실 수 있습니다: Samba에서 Badlock 보안 결함 - CVE-2016-2118
CVE-2016-2110: NTLMSSP를 사용하여 중간 가로채기 공격 가능
Samba의 NTLMSSP 인증 구현에서 몇 가지 결함이 발견되었습니다. 인증되지 않은 중간 공격자가 본 결함을 악용하여 연결 암호화 및 무결성 플래그를 삭제하여 데이터를 일반 텍스트로 전송할 수 있습니다. 또한 연결을 위해 암호화가 명시적으로 요청되는 경우에도 공격자는 데이터를 일반 텍스트로 전송하도록 클라이언트나 서버를 강제할 수 있습니다.
LDAP (NTLMSSP 인증 사용)는 다양한 Samba 관리 프로젝트 도구 (예: "net", "samba-tool", "ldbsearch", "ldbedit")에 의해 클라이언트로 사용됩니다.
본 결함은 Samba에서 사용되는 모든 역할에 영향을 미치며 CVE-2016-2112 및 CVE-2016-2113에서 다루고 있습니다.
CVE-2016-2111: NETLOGON 스푸핑 허용 취약점
도메인 컨트롤러로 설정된 Samba는 스푸핑 컴퓨터 이름을 사용하여 컴퓨터에 보안 통신 채널을 설정할 수 있음이 발견되었습니다. 네트워크 트래픽을 모니터링할 수 있는 원격 공격자는 이러한 결함을 악용하여 스푸핑 컴퓨터에 대한 세션 관련 정보를 취득할 수 있습니다.
본 결함은 classic primary DC, backup DC, Active Directory DC로 실행되는 Samba에만 영향을 미칩니다.
본 결함은 Microsoft Windows Server의 경우 CVE-2015-0005에서 다루고 있습니다.
본 결함의 보안 권고 패치에는 새로운 smb.conf
옵션이 도입되어 있습니다:
raw NTLMv2 auth (G)
이 매개 변수는 smbd(8)를 사용하여 SMB1 클라이언트가 확장된 보안 없이
(SPNEGO 없이) NTLMv2 인증을 사용하도록 허용할지의 여부를 결정합니다.
이 옵션, lanman auth, ntlm auth 모두가 비활성화되어 있을 경우
SPNEGO 지원의 클라이언트만 허용됩니다. 즉 이는 NTLMv2가
NTLMSSP 내에서만 지원됨을 의미합니다.
기본값: raw NTLMv2 auth = no
CVE-2016-2112: The LDAP 클라이언트 및 서버는 무결성 보호를 적용하지 않습니다
Samba의 LDAP 구현은 LDAP 연결을 위한 무결성 보호를 적용하지 않는 것으로 나타났습니다. 중간 공격자는 본 결함을 사용하여 무결성 보호를 사용하지 않도록 LDAP 연결을 다운그레이드하고 연결을 탈취할 수 있게 합니다.
본 결함은 Samba가 작동할 수 있는 모든 역할에 영항을 미칩니다.
본 결함의 보안 권고 패치에는 새로운 smb.conf
옵션이 도입되어 있습니다:
ldap server require strong auth (G)
"ldap server require strong auth" 옵션은 ldap 서버가 ldap 트래픽에
서명할 것을 요청하거나 서명 또는 암호화 (봉인)
사용 여부를 지정합니다. 사용 가능한 값은 no,
allow_sasl_over_tls 및 yes 입니다.
no 값은 모든 전송에 걸쳐 간단한 sasl 바인딩만 허용합니다.
allow_sasl_over_tls 값은 TLS 암호화 연결을 통해 간단한 sasl 바인딩만 (서명 또는 봉인없이)
허용합니다. 암호화되지 않은 연결은
서명 또는 봉인을 통해 sasl 바인딩만 허용합니다.
yes 값은 TLS 암호화 연결을 통해 간단한 바인딩만을 허용합니다.
암호화되지 않은 연결은 서명 또는 봉인을 통해 sasl 바인딩만 허용합니다.
기본값: ldap server require strong auth = yes
알림: LDAP 서버에는 강력한 인증을 적용할 수 있는 옵션이 없습니다. 보안 패치에는 ldap server require strong auth
라는 새 옵션이 도입될 예정이며 사용 가능한 값은 no
, allow_sasl_over_tls
, yes
입니다.
기본값 동작으로 no
가 설정되므로 모든 클라이언트가 LDAP_STRONG_AUTH_REQUIRED 오류를 처리하도록 조정될 때 까지 이 옵션을 변경해야 할 수 있습니다. Windows 클라이언트 및 Samba 구성원 서버는 무결성 보호를 이미 사용하고 있습니다.
CVE-2016-2113: TLS/SSL 인증서 검증 누락으로 인한 중간 가로채기 공격 허용
Samba는 특정 연결에서 SSL/TLS 인증서 유효성을 검사하지 않는 것으로 나타났습니다. 중간 공격자는 본 결함을 악용하여 특수하게 조작된 SSL/TLS 인증서로 Samba 서버를 스푸핑할 수 있습니다.
본 결함은 Samba가 작동할 수 있는 모든 역할에 영항을 미칩니다.
본 결함의 보안 권고 패치에는 새로운 smb.conf
옵션이 도입되어 있습니다:
tls verify peer (G)
클라이언트가 피어의 인증서 및 이름을 얼마나 엄격하게 제어할 지에 대한
옵션입니다. 사용 가능한 값은 다음과 같습니다 (오름차순으로 정렬): no_check,
ca_only, ca_and_name_if_available, ca_and_name, as_strict_as_possible.
no_check로 설정되어 있을 때 인증서는 전혀 검증되지 않으므로
중간 가로채기 공격을 허용합니다.
ca_only로 설정되어 있을 때 인증서는 "tls ca file" 옵션이 지정된 CA에서
서명되었는지 확인합니다. 유효한 파일에 "tls ca file"을 설정해야
합니다. 인증서 유효 기간도 확인됩니다. "tls crl file" 옵션이
설정되어 있을 경우 인증서는 CA CRL에 대해서도
확인됩니다.
ca_and_name_if_available이 설정되어 있을 경우 ca_only에 따라 모든 검사가 수행됩니다.
또한 애플리케이션 계층에 따라 지정되어 있고 IP 주소 문자열에 따라
지정되어 있지 않을 경우 피어 호스트이름은 인증서 이름에
대해 검사됩니다.
ca_and_name이 설정되어 있을 경우 ca_and_name_if_available에 따라 모든 검사가 수행됩니다.
피어 호스트 이름을 지정해야 하고 인증서 이름에 따라 IP
주소가 확인됩니다.
as_strict_as_possible이 설정되어 있을 경우 ca_and_name에 따라 모든 검사가 수행됩니다.
또한 "tls crl file"을 설정해야 합니다. 차후 Samba 버전에서는
추가 검사를 구현할 예정입니다.
기본값: tls verify peer = as_strict_as_possible
CVE-2016-2114: "server signing = mandatory"가 적용되지 않습니다
Samba는 SMB1 프로토콜을 사용하는 클라이언트에 대해 SMB (Server Message Block) 서명을 적용하지 않는 것으로 나타났습니다. 본 결함을 사용하여 중간 공격자는 클라이언트와 서버 사이의 트래픽을 변경할 수 있습니다.
본 결함은 다음과 같은 서버 역할에 영향을 미칩니다: standalone 서버, member 서버, classic primary DC, backup DC, Active Directory DC.
완화 방법:
server min protocol = SMB2
와 함께 smb.conf
파일의 [global]
섹션에 있는 server signing = mandatory
설정 옵션을 통해 보안 서명 없이 연결하지 못하게 합니다. 하지만 이로인해 SMB2 (또는 그 이상)를 지원하지 않는 이전의 오래된 클라이언트의 경우 연결되지 못 할 수 있습니다.
CVE-2016-2115: IPC 트래픽의 SMB 클라이언트 연결은 무결성 보호되지 않습니다
기본값으로 Samba는 IPC 트래픽의 무결성 보호를 활성화하지 않는 것으로 나타났습니다. 본 결함을 악용하여 중간 공격자는 Samba 서버와 클라이언트 사이에 전송된 데이터를 확인 및 변경할 수 있습니다.
본 결함의 보안 권고 패치에는 새로운 smb.conf
옵션이 도입되어 있습니다:
client ipc signing (G)
이는 DCE/RPC 전송으로 IPC$ 연결에 서명하기 위해 클라이언트에 SMB
사용이 필요한 지 여부를 제어합니다. 가능한 값은
auto, mandatory, disabled입니다.
mandatory 또는 default로 설정되어 있을 경우 SMB 서명이 필요합니다.
auto로 설정되어 있을 경우 SMB 서명이 제공되지만 적용되지 않으며
disabled로 설정되어 있을 경우 SMB 서명은 제공 및 적용되지 않습니다.
winbindd에서 Active Directory DC로의 연결에는
항상 서명이 적용됩니다.
기본값: client ipc signing = default
client ipc max protocol (G)
매개 변수 (문자열) 값은 DCE/RPC 전송으로 IPC$ 연결을 지원하는
최고 수준의 프로토콜입니다.
일반적으로 이 옵션은 SMB 프로토콜에서 적절한 프로토콜 선택을 위해
자동 협상 단계로 설정되어 있지 않습니다.
기본값은 지원되는 최신 프로토콜로 현재 SMB3_11입니다.
사용 가능한 프로토콜의 전체 목록은 client max protocol에서 참조하십시오.
CORE, COREPLUS, LANMAN1, LANMAN2 값은 NT1로 자동 업그레이드됩니다.
기본값: client ipc max protocol = default
예: client ipc max protocol = SMB2_10
client ipc min protocol (G)
이 설정은 DCE/RPC 전송으로 IPC$ 연결을 사용하려는 최소 프로토콜 버전을
제어합니다.
일반적으로 이 옵션은 자동 협상 단계로 설정할 필요가 없습니다
자동 협상 단계로 설정되어 있지 않습니다.
기본값은 가장 높은 NT1 값으로
"client min protocol"에 대해 유효한 값입니다.
사용 가능한 프로토콜의 전체 목록은 client max protocol에서 참조하십시오.
CORE, COREPLUS, LANMAN1, LANMAN2 값은 NT1로 자동 업그레이드됩니다.
기본값: client ipc min protocol = default
예: client ipc min protocol = SMB3_11
완화 방법:
smb.conf
파일의 [global]
섹션에 있는 client signing = mandatory
설정 옵션을 지정합니다.
본 결함은 Samba가 작동할 수 있는 모든 역할에 영항을 미칩니다.
Comments