Wins blog

글로벌 정보보안 파트너! Global Security  No.1 윈스는 국가대표 정보보안 기업에서 글로벌 강소기업으로 도약합니다.

보안 정보

앞 내용 보기 다음 내용 보기
취약점 정보Linux Kernel dccp Use-After-Free 취약점(CVE-2017-6074
작성일 2017-03-03 조회 2697

1.개요

 최근 CVE-2017-6074로 발표된 새로운 로컬 권한 상승 취약점이 Linux Kernel에서 발견되었습니다. 해당 취약점은 DCCP(Datagram Congestion Control Protocol)에서 발생하며 Debian, OpenSUSE 및 Ubuntu 등 거의 모든 Linux 배포판에 영향을 미칩니다. DCCP가 도입된 시기(2005년 10월)부터 10년 이상을 해당 취약점에 노출된 상태였기 때문에 현재는 업계에서 큰 관심을 가지고 있는 상황입니다.

2.분석 내용

 해당 취약점은 Use-After-Free가 발생하는 취약점입니다. <그림-1>에서 dccp_v6_conn_request가 해당 되는 값(음영처리 된 부분)을 성공적으로 반환하면 현재 DCCP가 구현된 DCCP_PKT_REQUEST 패잇의 대한 skb(socket buffer)가 dccp_rcv_state_process에서 __kfree_skb를 통해 가제로 해제 됩니다.

<그림-1 dccp input.c 소스코드1>

 그러나 IPV6_RECVPKTINFO가 소켓에 설정되면 skb의 주소는  ireq -> pktopts로 저장되고 skb의 참조 카운트는 dccp_v7_conn_request에서 증가하게 되므로 skb는 여전히 사용중이지만 dccp_rcv_state_process에서는 해제가 되게 됩니다.(<그림-2> 참조)
<그림-2 dccp input.c 소스코드2>

위에서 설명한 결함을 이용하여 double-free로 UAF공격이 가능합니다. 
 //첫 번째 해제
kfree(dccp_skb)
//dccp_skb와 같은 장소에 할당된 다른 객체
some_object=kmalloc()
//두 번째 해제, some_object에서 해제 됨
kfree(dccp_skb)

위 시점에서 공격자는 커널 힙스프레이 기법 중 일부를 사용하여 어떤 객체를 제어하거나 임의의 데이터로 내용을 덮어 쓸 수 있습니다.덮어 쓴 객체가 트리거가 가능한 함수 포인터를 가지고 있다면, 공격자는 커널내에서 임의의 코드를 실행하게 됩니다.

3.정 리

해당 취약점은 대부분의 linux운영체제에 영향을 미치기 때문에 그 영향력은 상당하다고 볼 수 있습니다. 따라서 Linux운영체제를 사용하는 경우에는 각별한 주의를 요하고 최신버전으로 반드시 업그레이드 하시기 바랍니다.
 

4. 대응 방안

1)Linux Kernel 최신 버전 업데이트
-벤더사로부터 발표된 최신 버전으로 업데이트를 진행
(참조 URL : https://access.redhat.com/article/11258

2)Config_Ip_Dccp 설정
-echo "install dccp /bin/true" >> /etc/modprobe.d/disable-dccp.conf
명령어 실행 후 재부팅.

5.참고 사이트

https://ma.ttias.be/linux-kernel-cve-2017-6074-local-privilege-escalation-dccp/
https://marc.ttias.be/oss-security/2017-02/msg00220.php
https://github.com/xairy/kernel-exploits/tree/master/CVE-2017-6074

첨부파일 첨부파일이 없습니다.
태그 Linux Kernel, dccp, 권한 상승, dirty cow