it-gundan.com

dirtyc0w, 즉 "Dirty COW"버그의 영향은 무엇입니까?

Dirty COW 에 대해 들었지만 버그 범위에서 괜찮은 글을 찾을 수 없습니다. 익스플로잇이 쓰기 불가능한 파일을 덮어 쓸 수있는 것처럼 보이므로 SUID 프로그램을 대체하여 로컬 루트가 가능하다고 생각합니다. 맞습니까? Dirty COW에 대해 더 알고 있습니까? 원격으로 악용 할 수 있습니까? Android에 영향을 줍니까?

69
d33tah

다른 취약점이 없으면 원격으로 악용 할 수 없습니다. 시스템에서 이미 명령을 실행할 수 있어야합니다.

전형적인 예는 웹 셸입니다. 서버에서 웹 셸을 업로드하거나 시스템 명령을 실행할 수있는 취약점이있는 웹 응용 프로그램을 실행하고 있다고 가정합니다. 이러한 명령은 일반적으로 권한이 낮은 사용자로 실행되며 때로는 www-data 또는 유사합니다.

이 익스플로잇을 사용하면 /etc/passwd 주다 www-data UID 0입니다. 이제 www-data에는 루트 권한이 있습니다.

그러나 몇 가지를 시도하고 /etc/passwd는 내 시스템에서 작동하지 않았습니다. 사용자의 UID를 0으로 설정할 수 있지만 다시 로그인해야합니다. 웹 셸만있는 경우 실제로는 옵션이 아닙니다. 지금까지 본 최고의 무기 공격은 /usr/bin/passwd, 사용자 비밀번호를 변경하는 데 사용되는 바이너리이며 /bin/bash. 익스플로잇의 일부 제한 사항은 다음과 같습니다. 기존 바이트 만 덮어 쓸 수 있으며 파일에는 아무것도 추가 할 수 없습니다. 또한 파일에 정확히 4KB 이상을 쓸 수 없었습니다.

Android에 영향을 미치는 경우 문제가되는 함수에 대해 Android 4.4 git repo 를 검색했습니다 (follow_page_pte)하고 조회수가 없어서 "아니오"라고 말하고 싶지만 저에 대해서는 인용하지 마십시오.

편집 : Android 영향을받습니다- 이 개념 증명 참조).

55
Volker

더티 카우 취약점은 Linux 커널 버전 2.6.22 이상에서 권한 상승 취약점입니다. 2007 년부터 존재했으며 2016 년 10 월 18 일에 수정되었습니다.

dirtyc0w 버그의 영향은 무엇입니까?

권한이없는 로컬 사용자는이 결함을 사용하여 읽기 전용 메모리 매핑에 대한 쓰기 액세스 권한을 얻을 수 있으므로 시스템에 대한 권한을 높일 수 있습니다.

이 결함으로 인해 로컬 시스템 계정을 가진 공격자는 적절한 권한을 설정하지 않고 수정하지 못하게하는 표준 권한 메커니즘을 무시하고 온 디스크 바이너리를 수정할 수 있습니다.

원격으로 악용 할 수 있습니까?

그것은 원격으로 직접 악용 될 수 없습니다; 먼저 시스템에 원격으로 액세스 할 수있는 또 다른 결함이 필요합니다, 그의 의견에서 @ IMSoP

그것은 중요한 버그로 평가됩니다 :

중대한 영향

이 등급은 리소스의 기밀성, 무결성 또는 가용성을 쉽게 손상시킬 수있는 결함에 대해 부여됩니다. 로컬 사용자가 권한을 획득하고, 인증되지 않은 원격 사용자가 인증에 의해 보호되어야하는 리소스를 보거나, 인증 된 원격 사용자가 임의의 코드를 실행할 수있게하거나, 원격 사용자가 서비스 거부를 유발할 수있게하는 취약점의 유형입니다.

Android에 영향을 줍니까?

예, Android은 Linux 커널을 사용하기 때문에).

영향을 받습니까?

2.6.22보다 높은 Linux 커널을 실행하는 장치가 있으면 취약 할 가능성이 높습니다. 보안 업데이트를 아직 발행하지 않았기 때문에 Samsung, Google, Cyanogen, MIUI 또는 기타 공급 업체에서 제공 한 Android의 모든 버전)에 대해서도 동일합니다.

이 취약점을 악용하기 위해 공격자는 영향을받는 장치에서 코드를 실행해야합니다. Android의 경우 Android USB를 통한 디버그 브리지 (ADB)를 통해 또는 익스플로잇을 이용합니다.

업데이트

보안 검색자는 this 블로그에서 원격으로 결함을 악용하는 방법을 설명합니다

이 악용은 셸 액세스를 제공하는 웹 호스팅 공급자에 대해 사용될 수 있으므로 한 고객이 다른 고객이나 서비스 관리자를 공격 할 수 있습니다. 권한 상승 악용은 다른 취약점을 대상으로하는 공격과 결합 될 수도 있습니다. 예를 들어, 웹 사이트의 SQL 주입 취약점으로 인해 공격자는 신뢰할 수없는 사용자로만 악의적 인 코드를 실행할 수 있습니다. 그러나 에스컬레이션 익스플로잇과 결합하여 이러한 공격은 종종 탐욕스러운 루트 상태를 달성 할 수 있습니다.

유용한 정보를 찾을 수 있습니다 여기 :

  1. 시스템이 취약한 지 확인하는 방법
  2. 영향을받는 Linux 배포판 목록은 무엇입니까?
  3. 어떻게 고치나요?
28
GAD3R

CVE-2016-5195는 이른바 권한 에스컬레이션 익스플로잇입니다. 일반 Linux 사용자에서 루트로 권한 수준을 올릴 수 있습니다. 그러나 권한 상승 악용은 일반적으로 로컬 악용 (상자에서 로컬로 실행 됨)이므로 이미 운영 체제에 로그온되어 있어야합니다.

내가 확인한 공개 익스플로잇은 루트가 소유 한 파일을 읽기 전용이거나 루트가 아닌 사용자가 전혀 액세스 할 수없는 파일을 쓸 수있게합니다. 이를 통해 관리 파일을 덮어 쓸 수 있습니다. 이것을 활용하여 루트가 될 수 있습니다. 예 : 당신은 라인을 추가 할 수 있습니다

 hack :: 0 : 0 : , :/home/kai :/bin/bash 

/etc/passwd. 암호가없는 루트 사용자가 상자에 추가됩니다.

12
kaidentity

적어도 Android 5.0.1 (Kernel 버전 3.10.54+)에 영향을 미칩니다. Termux 를 사용하여 기기에서 this code 을 시도했습니다. 루트가 소유 한 파일을 편집하면 완벽하게 작동합니다. 장치에 사용할 수있는 루트가 없기 때문에 마음에 듭니다.

반면에 Android SELinux 사용 _이므로 SELinux가 /proc/self/mem에 쓰지 못하게 될 것이라고 생각했기 때문에 놀랍습니다.

실제로 SD 카드의 모든 파일을 소유 한 sdcard라는 사용자가 소유 한 파일에 쓰려고했습니다. Termux 자체는 (일반적으로) SD 카드에 쓸 수 없습니다. 이러한 파일에서 dirtyc0w를 시도하면 몇 초 후에 장치가 자동으로 중단되고 재부팅됩니다. 이 중단 동안 adb logcat조차도 anything을 출력하지 않습니다. 무슨 일이 일어나고 있는지 잘 모르겠습니다.

7
sigalor

얼마나 무섭습니까?

원칙적으로 권한 상승은 모든 액세스 제어를 무의미하게 만들므로 상당히 무섭습니다. 실제로, 그것은 거의 중요하지 않습니다. 먼저 사용자 액세스가 제한되어야합니다.

서버의 경우, 다소 악용 될 수있는 잘 유지 관리되지 않은 서버 시스템은 이제 거의 뿌리를 내릴 수 있습니다. 그러나 이것이 역사상 최초의 권한 상승 익스플로잇과는 다릅니다.
유지 관리 시스템의 영향은 거의 0에 가까워 야합니다 (지금까지 악용되지 않았으며 지금까지 업데이트되어야 함).

7.0 이전의 모든 Android 전화의 경우)는 불행하게도 악의적 인 앱이 전화를 대신 할 수있는 악용이 있음을 의미합니다. 그것은 매우 무서운 생각이지만 보이지는 않습니다. 지금까지 발생했거나 전 세계적으로 공황, 혼돈, 살인이 발생했을 때 자동 업데이트는이 문제로 빠르게 사라지고 그 동안 새로운 앱 (이미 많은 앱이 이미 휴대 전화에있는 앱)을 설치하지 않습니다 개월 분명히 하지 않았다 전화를 도용, 그래서 아마 무해합니다) ... 문제가 해결되었습니다.
휴대 전화를 탈옥하는 또 다른 방법이 있습니다 (적어도 다음 시스템 업데이트가있을 때까지).

또한 컴퓨터와 사용자 계정에 물리적으로 액세스 할 수있는 사람이 시스템을 근절 할 수 있다는 것을 의미하지만 컴퓨터를 가져 가서 운반하거나 하드 디스크를 훔치거나 기본적으로 Firewire/Thunderbolt를 사용할 수 있습니다. 케이블을 통한 직접 메모리 액세스, CDROM에서 부팅 또는 기타 ... 200 가지가 있으므로 이것이 큰 문제라고 생각하지 않습니다. 그것은 누군가가 할 수있는 또 다른 일입니다.

더 중요한 것은

이것은 CVE-2008-0166 이후의 두 번째로 오래 지속되는 중요한 사건이기 때문에 관리자가 "무엇을 관리해야합니까?" 대신에 심각한 보안 문제가 발생했습니다. 문제는 이것이 엔지니어링 프로세스에 대한 토론을 다시 열 수 있기를 바랍니다.

이 취약점에 대한 가장 큰 문제는 2005 년에 발견되어 수정되었다는 것입니다 (발생 가능성이 낮은 이론적 인 문제 일 때). 그러나 IBM 메인 프레임 시리즈에서 문제를 일으켰 기 때문에 되돌려졌습니다. 소수의 사람들이 들어 본 1990 년대 초. 솔직히 말해서, 모든 Linux 사용자의 99 %는 덜 신경 쓰지 않았으며 s/390의 시스템 종속 패치/수정으로 수행 할 수있었습니다. 그러나 그 일은 일어나지 않았으며 11 년 후까지 그 문제는 망각으로 사라졌습니다.

이것은 Valgrind가 경고를 표시했기 때문에 누군가가 의미를 이해하지 않고 코드를 올바르게 편집 한 2008-0166의 도입과 매우 유사합니다.

아마도 이것은 코드 변경의 정확한 의미가 대다수의 사용자에게 미치는 영향을 이해하는 관리자의 중요성에 대한 인식을 높이는 데 도움이 될 것이며 코드 변경에 대한 전반적인 더 중요한 평가 (피어 리뷰 포함)가 발전 할 수 있습니다. 다행 이네요.

6
Damon

수호자 는 그렇다고 말하지만, Android의 변형에 따라 달라지는 것 같습니다.

이는 Android에도 적용됩니다. 모바일 운영 체제가 영향을받습니다. 최고급 Android 기기는 정기적 인 보안 업데이트를 수신하지만 대부분 Android 판매 된 기기는 거의받지 않습니다) 판매 후 업데이트.

Google은 논평을 거부했지만 Android는 Linux 배포판 중 하나입니다. 회사는 Android 파트너, 그런 다음 파트너에게 패치를 발행하는 단계.

3
katrix

이 버그는 침입자가 "읽기 전용"인 메모리에 쓰기 위해 임의의 코드를 실행할 수있는 것보다 허용합니다. Linux는 종종 사용 된 파일을 읽기 전용 메모리에 캐시합니다. 짐작했듯이, 쉘과 같은 임의의 코드를 루트로 실행하기 위해 setuid 루트 파일의 내용을 변경하는 것과 같은 작업을 수행 할 수 있습니다.

공격자가 공격자가 만든 특정 실행 파일을 실행해야하므로 버그 자체는 원격으로 악용 할 수 없습니다. 일반적으로 "원격으로 악용 가능"이라는 단어를 사용할 때는 임의 코드를 실행할 수있는 기능이 필요하지 않습니다.

그러나 공격자가 ssh 액세스만큼 명확하지 않은 의도적으로 의도적으로 임의 코드를 실행할 수있는 상황이 있습니다. 공격자가 코드 실행 권한을 가지고 있다는 것이 항상 명백하지는 않기 때문에 이것이 혼란의 원인 일 수 있습니다. 잠재적으로 공유 자동화 된 빌드 환경은 개발자가 임의 코드를 실행할 수 있기 때문에 이러한 유형의 공격에 취약 할 수 있습니다. 이 시나리오의 공격자는 잠재적으로 루트 권한을 얻을 수 있습니다.

이 버그가 Android에서 악용 될 수 있다면 대답 할 자격이 없다고 생각합니다. Android에서 악용 될 수있는 경우) 범위는 원격 공격자가 전화를 제어 할 수있는 것이 아니라 전화 소유자가 장치를 "루팅"할 수있는 것으로 제한됩니다.

3
Steve Sether