스택 충돌이란 무엇이며 어떻게해야합니까?


27

나는 Linux뿐만 아니라 BSD, Solaris도 여러 유닉스 계열 시스템에 영향을 미치는 Stack Clash라는 새로운 취약점에 대해 들었습니다.

  • 무엇입니까? 다중 OS 버그는 어떻게 발생 했습니까?
  • 시스템을 어떻게 보호합니까?

답변:


29

스택 충돌은 상당히 오래된 기술을 기반으로하는 악용입니다. 프로세스가 사용하는 메모리 는 스택과 힙의 두 영역으로 나뉩니다 . 일반적으로 스택은 아래쪽으로 자라며 힙은 위쪽으로 자라고 상상합니다. 둘 중 하나 가 다른 쪽과 충돌 하기에 충분히 자라면 어떻게됩니까 ? 보다 일반적으로, 스택이 관련없는 메모리 공간으로 침입하기에 충분히 커지면 어떻게됩니까? 원래 취약점은 12 살이며 Linux 커널 개발자는 guard page 를 사용하여 일시적으로 수정했습니다 . 그러나 Qualys의 연구원들은 가드 페이지에도 불구하고 이것을 악용했습니다.

Ars Technica 보고서 :

스택 크래시 취약점은 보안 연구원 Gaël Delalleau발견으로 2005 년에 처음 발견 되었고 5 년 후 Rafal Wojtczuk 연구원 의 리눅스 취약점발표 되면서 점차 널리 인식되고 있습니다. Linux 개발자 스택 충돌을 방지하기위한 보호 기능도입 했지만 오늘날의 연구에 따르면 공격자가 해당 측정을 우회하는 것이 비교적 쉬운 것으로 나타났습니다.

Qualys가 개발 한 주요 개념 증명 공격은 CVE-2017-1000364로 색인화 된 취약점을 악용합니다. Qualys 연구원은 CVE-2017-1000365 및 CVE-2017-1000367을 포함하여 별도의 취약성을 악용하기 위해 Stack Clash를 사용하는 공격을 개발했습니다. 예를 들어, Qualys가 최근에 발견 한 Sudo의 최근 수정 된 결함 인 CVE-2017-1000367과 함께 로컬 사용자는 Sudo를 이용하여 훨씬 더 광범위한 OS에 대한 전체 루트 권한을 얻을 수 있습니다. Qualys는 지금까지 익스플로이 트가 원격으로 코드를 실행하도록 만들 수 없었습니다. 그들이 조사한 유일한 원격 응용 프로그램은 Exim 메일 서버였습니다. 우연히도 악용 할 수없는 것으로 판명되었습니다. Qualys는 이러한 원격 코드 실행 악용 가능성이 배제 될 수 없다고 말했다. Qualys는 나중에 개념 증명 익스플로잇을 릴리스 할 것이라고 말했다.

[...] Qualys의이 상세한 기술 자문grsecurity의이 기술 분석에서 훨씬 더 많은 정보를 얻을 수 있습니다 .

2010 년의 원래 수정에 대한 LWN 기사 인용 :

Linux는 프로세스 스택과 힙 페이지를 분리하지 않기 때문에 스택 페이지를 인접한 힙 페이지로 오버런 할 수 있습니다. 이것은 (예를 들어 재귀 호출에서) 충분히 깊은 스택이 힙의 메모리를 사용하게 될 수 있음을 의미합니다. 그런 다음 해당 힙 페이지 (예 : X 클라이언트)에 쓸 수있는 프로그램은 호출 중 하나의 리턴 주소를 조작하여 선택한 위치로 이동할 수 있습니다. 이는 클라이언트가 서버로 하여금 원하는 임의의 코드 실행 코드를 실행하게하여 루트 권한을 얻을 수 있음을 의미합니다.

위의 설명은 다양한 유닉스 계열 커널에 적용됩니다.

Ars Technica는 Qualys 보고서에 언급 된 임시 해결 방법 ( " 로컬 사용자  및  원격 서비스 의  어려운 RLIMIT STACK 및 RLIMIT_AS  를   낮은 값으로 설정")에 주목하지만, 이것이 반드시이 악용으로부터 보호하는 것은 아니라는 점에 유의해야합니다 . 현재 유일한 안전한 방법은 업그레이드하는 것입니다. grsecurity 분석에 따르면 :

실제 문제는 스택 프로빙이 없기 때문에이 문제를 해결하기위한 커널 전용 시도는 항상 불완전한 것임을 분명히해야합니다. 대안적인 실제 솔루션은 모든 사용자 영역을 재건하는 데 달려 있기 때문에, 이것은 아마도 미래에 유일하게 실현 가능한 솔루션 일 것입니다.

지금 할 수있는 최선의 방법은 커널을 패치 된 버전으로 업그레이드하는 것입니다.

2010 익스플로잇은 X 서버를 사용했고,이 서버는 sudo를 사용했으며, 다음 서버는 어느 시점에서 높은 권한으로 실행되는 다수의 userland 프로그램 일 수 있습니다.

Qualys는 아직 악용에 대한 개념 증명 코드를 아직 게시하지 않았습니다 (나중에 그렇게 할 계획).


CVE-2017-1000364와 관련된 여러 Ubuntu 보안 공지가 있습니다.

또한 CVE 추적기여러 릴리스 / 커널 조합을 보류중인 수정 사항으로 나열합니다 .

일반적으로 가장 간단한 수정 방법은 시스템을 최신 커널 패키지로 최대한 빨리 업데이트하는 것입니다.

USN의 관련 커널 버전 (을 사용하여 정리 for i in {24..35}; curl -s https://www.ubuntu.com/usn/usn-33$i-1/ | pup 'dl:nth-last-of-type(1)') :

우분투 17.04 :
linux-image-4.10.0-24- lowlatency 4.10.0-24.28
linux-image-generic-lpae 4.10.0.24.26
linux-image-generic 4.10.0.24.26
linux-image-4.10.0-24-generic-lpae 4.10.0-24.28
linux-image-4.10.0-24- 일반 4.10.0-24.28
linux-image- lowlatency 4.10.0.24.26
우분투 17.04 :
linux-image-4.10.0-1008-raspi2 4.10.0-1008.11
linux-image-raspi2 4.10.0.1008.10
우분투 16.10 :
linux-image-powerpc-smp 4.8.0.56.69
linux-image-powerpc-e500mc 4.8.0.56.69
linux-image-4.8.0-56-powerpc-smp 4.8.0-56.61
linux-image-4.8.0-56-powerpc-e500mc 4.8.0-56.61
linux-image-4.8.0-56- lowlatency 4.8.0-56.61
리눅스 이미지 제네릭 4.8.0.56.69
linux-image-4.8.0-56-generic 4.8.0-56.61
linux-image-powerpc64-emb 4.8.0.56.69
리눅스 이미지 가상 4.8.0.56.69
linux-image-powerpc64-smp 4.8.0.56.69
linux-image-4.8.0-56-generic-lpae 4.8.0-56.61
리눅스 이미지-제네릭 -lpae 4.8.0.56.69
linux-image- lowlatency 4.8.0.56.69
linux-image-4.8.0-56-powerpc64-emb 4.8.0-56.61
우분투 16.10 :
linux-image-4.8.0-1040-raspi2 4.8.0-1040.44
linux-image-raspi2 4.8.0.1040.44
우분투 16.04 LTS :
linux-image-powerpc64-smp-lts-utopic 4.4.0.81.87
linux-image-generic-lts-wily 4.4.0.81.87
linux-image-generic-lts-utopic 4.4.0.81.87
linux-image-4.4.0-81-generic-lpae 4.4.0-81.104
linux-image-powerpc64-emb-lts-vivid 4.4.0.81.87
linux-image-powerpc-e500mc 4.4.0.81.87
리눅스-이미지-제네릭 -lpae-lts-xenial 4.4.0.81.87
리눅스 이미지-일반 -lpae-lts-utopic 4.4.0.81.87
linux-image-powerpc-e500mc-lts-xenial 4.4.0.81.87
linux-image-4.4.0-81-powerpc64-emb 4.4.0-81.104
linux-image-powerpc-e500mc-lts-wily 4.4.0.81.87
linux-image-4.4.0-81-powerpc-e500mc 4.4.0-81.104
리눅스 이미지-일반 -lpae-lts-wily 4.4.0.81.87
리눅스 이미지-가상 -lts- 생생한 4.4.0.81.87
linux-image-virtual-lts-utopic 4.4.0.81.87
리눅스 이미지 가상 4.4.0.81.87
linux-image-powerpc64-emb-lts-wily 4.4.0.81.87
linux-image- lowlatency -lts-vivid 4.4.0.81.87입니다.
linux-image-powerpc-e500mc-lts-vivid 4.4.0.81.87
linux-image-powerpc64-emb 4.4.0.81.87
linux-image-powerpc-smp-lts-xenial 4.4.0.81.87
linux-image-4.4.0-81-generic 4.4.0-81.104
linux-image-powerpc64-smp-lts-vivid 4.4.0.81.87
linux-image- lowlatency -lts-wily 4.4.0.81.87
linux-image-4.4.0-81- lowlatency 4.4.0-81.104
리눅스 이미지 제네릭 4.4.0.81.87
linux-image-lowlatency-lts-xenial 4.4.0.81.87
linux-image-powerpc64-smp-lts-xenial 4.4.0.81.87
linux-image-powerpc64-emb-lts-utopic 4.4.0.81.87
linux-image-generic-lts-xenial 4.4.0.81.87
리눅스 이미지-일반 -lts- 생생한 4.4.0.81.87
linux-image-powerpc-e500mc-lts-utopic 4.4.0.81.87
linux-image-powerpc-smp 4.4.0.81.87입니다.
linux-image-4.4.0-81-powerpc-smp 4.4.0-81.104
리눅스 이미지-일반 -lpae- lts- 생생한 4.4.0.81.87
리눅스 이미지-제네릭 -lpae 4.4.0.81.87
linux-image-powerpc64-smp-lts-wily 4.4.0.81.87
linux-image-powerpc64-emb-lts-xenial 4.4.0.81.87
linux-image-powerpc-smp-lts-wily 4.4.0.81.87
linux-image-virtual-lts-wily 4.4.0.81.87
linux-image-powerpc64-smp 4.4.0.81.87
linux-image-4.4.0-81-powerpc64-smp 4.4.0-81.104
linux-image-powerpc-smp-lts-utopic 4.4.0.81.87
linux-image-powerpc-smp-lts-vivid 4.4.0.81.87
linux-image- lowlatency 4.4.0.81.87
linux-image-virtual-lts-xenial 4.4.0.81.87
linux-image-lowlatency-lts-utopic 4.4.0.81.87
우분투 16.04 LTS :
linux-image-4.4.0-1016-gke 4.4.0-1016.16
우분투 16.04 LTS :
리눅스 이미지 스냅 드래곤 4.4.0.1061.54
linux-image-4.4.0-1061-snapdragon 4.4.0-1061.66
우분투 16.04 LTS :
linux-image-4.4.0-1020-aws 4.4.0-1020.29
우분투 16.04 LTS :
linux-image-raspi2 4.4.0.1059.60
linux-image-4.4.0-1059-raspi2 4.4.0-1059.67
우분투 16.04 LTS :
linux-image-4.8.0-56-powerpc-smp 4.8.0-56.61 ~ 16.04.1
linux-image-4.8.0-56-powerpc-e500mc 4.8.0-56.61 ~ 16.04.1
linux-image-4.8.0-56- lowlatency 4.8.0-56.61 ~ 16.04.1
linux-image-4.8.0-56-generic 4.8.0-56.61 ~ 16.04.1
linux-image-generic-hwe-16.04 4.8.0.56.27
linux-image-lowlatency-hwe-16.04 4.8.0.56.27
linux-image-4.8.0-56-generic-lpae 4.8.0-56.61 ~ 16.04.1
linux-image-virtual-hwe-16.04 4.8.0.56.27
linux-image-generic-lpae-hwe-16.04 4.8.0.56.27
linux-image-4.8.0-56-powerpc64-emb 4.8.0-56.61 ~ 16.04.1
우분투 14.04 LTS :
linux-image-powerpc-smp-lts-xenial 4.4.0.81.66
linux-image-lowlatency-lts-xenial 4.4.0.81.66
linux-image-4.4.0-81-powerpc-smp 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81-powerpc-e500mc 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81- lowlatency 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81-generic-lpae 4.4.0-81.104 ~ 14.04.1
리눅스 이미지-제네릭 -lpae-lts-xenial 4.4.0.81.66
linux-image-powerpc64-smp-lts-xenial 4.4.0.81.66
리눅스 이미지 -4.4.0-81- 일반 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81-powerpc64-smp 4.4.0-81.104 ~ 14.04.1
리눅스 이미지-일반 -lts- 제니4.4.0.81.66
linux-image-powerpc64-emb-lts-xenial 4.4.0.81.66
linux-image-powerpc-e500mc-lts-xenial 4.4.0.81.66
linux-image-virtual-lts-xenial 4.4.0.81.66
linux-image-4.4.0-81-powerpc64-emb 4.4.0-81.104 ~ 14.04.1
우분투 14.04 LTS :
linux-image-powerpc-e500mc 3.13.0.121.131
linux-image-lowlatency-pae 3.13.0.121.131
linux-image-3.13.0-121-powerpc64-emb 3.13.0-121.170
linux-image-generic-pae 3.13.0.121.131
linux-image-3.13.0-121-powerpc-smp 3.13.0-121.170
linux-image-3.13.0-121-powerpc-e500mc 3.13.0-121.170
linux-image-3.13.0-121-powerpc-e500 3.13.0-121.170
linux-image-3.13.0-121-generic-lpae 3.13.0-121.170
linux-image-generic-lts-quantal 3.13.0.121.131
리눅스 이미지 가상 3.13.0.121.131
linux-image-powerpc-e500 3.13.0.121.131
리눅스 이미지-일반 -lts-trusty 3.13.0.121.131
linux-image-3.13.0-121- 일반 3.13.0-121.170
리눅스 화상 OMAP 3.13.0.121.131
리눅스 화상 powerpc64-EMB 3.13.0.121.131
linux-image-3.13.0-121-powerpc64-smp 3.13.0-121.170
리눅스 이미지 제네릭 3.13.0.121.131
리눅스 이미지 - highbank 3.13.0.121.131을
linux-image-generic-lts-saucy 3.13.0.121.131
linux-image-powerpc-smp 3.13.0.121.131
linux-image-3.13.0-121- 낮은 지연 시간 3.13.0-121.170
리눅스 이미지 제네릭-lpae-LTS-건방진 3.13.0.121.131
linux-image-generic-lts-raring 3.13.0.121.131
리눅스 화상 powerpc64-SMP 3.13.0.121.131
리눅스 이미지 제네릭-lpae-LTS-믿을 3.13.0.121.131
리눅스 이미지 제네릭-lpae 3.13.0.121.131
linux-image-lowlatency 3.13.0.121.131
우분투 12.04 ESM :
linux-image-powerpc-smp 3.2.0.128.142
linux-image-3.2.0-128- 가상 3.2.0-128.173
linux-image-3.2.0-128-generic-pae 3.2.0-128.173
리눅스 이미지 제네릭 3.2.0.128.142
linux-image-generic-pae 3.2.0.128.142
리눅스 이미지 하이 뱅크 3.2.0.128.142
리눅스 이미지 -3.2.0-128-highbank 3.2.0-128.173
linux-image-3.2.0-128-powerpc-smp 3.2.0-128.173
리눅스 이미지 가상 3.2.0.128.142
linux-image-powerpc64-smp 3.2.0.128.142
linux-image-3.2.0-128-omap 3.2.0-128.173
linux-image-3.2.0-128-powerpc64-smp 3.2.0-128.173
linux-image-omap 3.2.0.128.142
linux-image-3.2.0-128-generic 3.2.0-128.173
우분투 12.04 LTS :
linux-image-3.13.0-121- 일반 3.13.0-121.170 ~ precise1
리눅스 이미지 제네릭-lpae-LTS-믿을 3.13.0.121.112
리눅스 이미지-일반 -lts-trusty 3.13.0.121.112
리눅스 이미지 -3.13.0-121-generic-lpae 3.13.0-121.170 ~ precise1

수도

위에서 언급 한 sudo 버그는 2017 년 5 월 30 일부터 USN-3304-1에 포함됩니다 .

우분투 17.04 :
sudo-ldap 1.8.19p1-1 우분투 1.1
sudo 1.8.19p1-1 우분투 1.1
우분투 16.10 :
sudo-ldap 1.8.16-0 우분투 3.2
sudo 1.8.16-0 우분투 3.2
우분투 16.04 LTS :
sudo-ldap 1.8.16-0 우분투 1.4
sudo 1.8.16-0 우분투 1.4
우분투 14.04 LTS :
sudo-ldap 1.8.9p5-1 우분투 1.4
sudo 1.8.9p5-1 우분투 1.4

요약하면 여전히 지원되는 대부분의 우분투 버전에서 이미 수정되어 있어야합니다.
CJCombrink

@TheBadger no (CVE 추적기에서 언급했듯이 일부 조합은 여전히 ​​릴리스 보류 중으로 나열됩니다. 수정 프로그램이 릴리스되면 더 많은 USN이 게시 될 것으로 생각합니다.
muru

4
그러나 업데이트가 충분해야하며 추가 구성이 필요하지 않습니다.
muru

영향을 미치는 경우 확인하는 방법은 무엇입니까?
데이지

1
다음 기사에 따르면 @immibis는 있지만 기존 구현이 올바르게 작동하지 않습니다. Qualys Research Labs의 Stackguard 버그 설명
Igor B

1

다중 OS 버그는 어떻게 발생 했습니까?

질문의이 부분을 구체적으로 다루려면 :

이 문제는 힙 (위쪽으로 증가) 및 스택 (아래쪽으로 증가)에 공유 주소 공간을 사용하기 때문에 발생합니다.

이 설계는 많은 시스템에서 공통적이므로 많은 시스템이 동일한 종류의 취약점에 취약한 이유는 무엇입니까?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.