Linux 커널의 DCCP 프로토콜 IPv6 구현에서 use-after-free (메모리 해제 후 사용) 취약점 - CVE-2017-6074

Public Date: February 17, 2017, 20:06
갱신됨 February 8, 2024, 11:53 - Chinese, Simplified 영어 (English) French Japanese
Resolved 상태
Important Impact

Red Hat 제품 보안팀은 Linux 커널의 DCCP 프로토콜 IPV6 구현에 따른 영향에 대한 보안 취약점을 인지하고 있으며 이는 CVE-2017-6074로 지정되어 있습니다. 본 취약점은 2017년 2월 20일에 공지되었으며 중요한 영향을 미치는 것으로 평가되고 있습니다.

배경 정보

DCCP는 프로그래머가 응용 프로그램 계층에서 네트워크 정체 설정을 제어할 수 있도록 고안된 4 계층 (전송 계층) 프로토콜입니다. 이 프로토콜은 3 계층 (네트워크 계층) 프로토콜로 IP를 사용하므로 인터넷을 통해 라우팅할 수 있습니다. 이로 인해 이러한 프로토콜은 IPV4 및 IPV6 기반 시스템 모두에서 작동하도록 고안되었습니다. 본 취약점은 IPV6 기반 DCCP 연결을 명시적으로 사용하여 악용됩니다.

DCCP는 내부의 상태 머신을 사용하여 연결을 추적합니다. 이러한 경우 소켓이 LISTEN 상태에 있는 동안 DCCP 상태 머신은 DCCP_PKT_REQUEST 데이터 구조를 잘못 처리합니다. 이를 통해 네트워크에 연결된 동일한 노드에서 클라이언트와 서버 모두를 제어할 수 있는 로컬 사용자는 "Use After Free" (메모리 해제 후 사용) 상태가 주어질 수 있습니다. 연결이 완료되면 연결 당 skbuff라는 데이터 구조체가 만들어지게 됩니다. 마지막 skbuff에 다른 구조체에 있는 skb_shared_info를 호출하게 되며 여기에는 ubuf_info 구조체가 포함됩니다. 이 구조체에는 skb가 삭제될 때 호출할 함수 포인터가 포함되어 있습니다. skbuff 메모리 해제 이후 이러한 ubuf_info 구조체의 콜백 함수를 호출하게 되면서 오류 상태가 발생합니다. 이를 통해 공격자는 악의적인 명령으로 메모리를 덮어쓰기할 수 있는 상황을 만들 수 있으며 메모리 해제와 이차적인 악의적인 명령 사이에서 함수 포인터 값을 악용할 수 있습니다.

이 공격에는 sk_shared_info 구조체에 대한 메모리가 해제된 후 사용될 수 있도록 동일한 시스템에서 실행되고 있는 서버와 클라이언트가 필요합니다.


Red Hat 제품 보안팀은 본 취약점이 이번 업데이트에서 중요한 영향을 미치는 것으로 평가하고 있습니다.

영향을 받는 제품

영향을 받는 Red Hat 제품 버전은 다음과 같습니다:

  • Red Hat Enterprise Linux 5
  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise MRG 2
  • Red Hat Openshift Online v2
  • Red Hat Virtualization (RHEV-H/RHV-H)
  • RHEL Atomic Host 

공격 내용 및 영향

본 취약점을 통해 로컬 시스템 계정이 있는 공격자가 권한을 상승시킬 수 있는 가능성이 있습니다. 이러한 취약점은 일반적으로 UAF (Use After Free)라고 부르며 이전에 실행된 free() 작업으로 인해 사용 중인 할당을 더이상 참조하지 않는 포인터를 통해 메모리에 접근하는 코드 경로를 사용하여 악용됩니다. 본 취약점은 DCCP 네트워킹 코드에 존재하며 충분한 액세스 권한을 갖는 악의적인 공격자가 해당 코드에 액세스하여 모든 로컬 인터페이스의 DCCP 네트워크 연결을 설정할 수 있습니다. 악용에 성공하면 호스트 커널 크래시, 호스트 커널 컨텍스트에 있는 코드 실행 또는 커널 메모리 구조를 변경하여 다른 권한 상승을 유발할 수 있습니다. 공격자는 시스템의 로컬 계정에 액세스할 수 있어야 합니다. 이는 원격 공격이 아니며 IPV6 지원이 활성화되어 있어야 합니다.

취약점 진단


시스템의 취약성 여부 확인

다음의 검색 스크립트를 사용하여 시스템에 취약점이 존재하는지를 확인하십시오.

대응 방법

영향을 받는 커널 버전을 실행하고 있는 모든 Red Hat 고객의 경우 패치 릴리즈 후 커널을 업데이트할 것을 권장합니다. 영향을 받는 패키지와 권장 완화 방법은 아래에 설명되어 있습니다. 커널 업데이트를 적용하려면 시스템을 다시 시작해야 합니다.

제품패키지권고
Red Hat Enterprise Linux 7커널 RHSA-2017:0000
Red Hat Enterprise Linux 7kernel-rtRHSA-2017:0000
Red Hat Enterprise Linux 7.1 Extended Update Support*커널 보류
Red Hat Enterprise Linux 7.1 Extended Update Support*커널 보류
Red Hat Enterprise Linux 6커널 RHSA-2017:0000
Red Hat Enterprise Linux 6.7 Extended Update Support*커널 보류
Red Hat Enterprise Linux 6.6 Advanced Update Support**커널 보류
Red Hat Enterprise Linux 6.5 Advanced Update Support**커널 보류
Red Hat Enterprise Linux 6.2 Advanced Update Support***커널 보류
Red Hat Enterprise Linux 5커널 RHSA-2017:0000
Red Hat Enterprise Linux 5.9 Advanced Update Support**커널 보류
Red Hat Enterprise Linux 5.6 Advanced Update Support**커널 보류
RHEL Atomic Host커널 보류
Red Hat Enterprise MRG 2kernel-rt보류
Red Hat Virtualization (RHEV-H/RHV-H)커널 보류

영향을 받는 제품 업데이트

*이러한 패치에 액세스하려면 활성 EUS 서브스크립션이 필요합니다.

사용 계정에 활성 EUS 서브스크립션이 없을 경우 보다 자세한 내용은 Red Hat 영업팀 또는 해당 영업 담당자에게 문의하시기 바랍니다.

Red Hat Enterprise Linux Extended Update Support 서브스크립션이란?

**RHEL AUS에서 이러한 패치에 액세스하려면 활성 AUS 서브스크립션이 필요합니다.

완화 방법

응용 프로그램이 DCCP 프로토콜을 사용하려할 때 DCCP 커널 모듈이 자동으로 로드됩니다. 이 모듈이 로드되지 않도록 하려면 시스템 전반의 modprobe 규칙을 사용합니다. 다음과 같은 명령 (root로 실행)을 통해 실수로 또는 의도적으로 모듈이 로드되지 않게 합니다. Red Hat 제품 보안팀은 이러한 방법이 권한이 있는 사용자라도 실수로 모듈을 로드할 수 없도록 하기 위한 강력한 방법이라고 생각합니다.





# echo "install dccp /bin/true" >> /etc/modprobe.d/disable-dccp.conf 


DCCP 모듈이 이미 로드된 경우 시스템을 다시 시작해야 합니다. 대부분의 경우 DCCP 커널 모듈은 사용 중이거나 네트워크 인터페이스가 활성화 상태일 때 언로드할 수 없습니다.

추가 도움이 필요할 경우 KCS 기사 ( https://access.redhat.com/solutions/41278 )를 참조하거나 Red Hat 글로벌 지원 서비스에 문의하십시오.

또한 RHEL 6 및 7 시스템을 완전 업데이트하기 위한 기본 SELinux 정책은 CVE-2017-6074에 대한 bugzilla 상세 정보에 설명되어 있듯이 본 결함을 완화시킬 수 있습니다.















Comments