관리 메뉴

Information Security

Dirty Pipe (CVE-2022-0847) 본문

CVE 취약점

Dirty Pipe (CVE-2022-0847)

HackingPractice 2023. 12. 12. 21:18

Dirty Pipe(CVE-2022-0847)는 2022년 3월에 공개된 리눅스 로컬권한상승 취약점이다. 권한이 필요한 파일을 무단으로 수정할 수 있는 Dirty COW 취약점과 유사하면서 리눅스 커널의 Pipe 기능에서 발생하기 때문에 Dirty Pipe이라는 별칭이 붙었다. 5.8 버전 이상의 리눅스 커널에서 발생하며, 계정 정보 파일을 변조하는 등의 방법으로 관리자 권한 획득이 가능하다. 

 

S/W 구분 취약 버전
Linux Kernel 5.8 이상 5.16.11, 5.15.25, 5.10.102 이하 버전

 

 

Dirty Pipe PoC 소스코드를 다운받았다.

 

해당 파일은 아래와 같다.

 

 

커널 버전은 5.15.0이 라는 것을 아래와 같은 명령어를 통해 알 수 있다.

 

exploit2.c를 gcc 컴파일을 한다.

 

Dirty Pipe PoC 중 하나는 SUID 파일의 바이너리를 하이재킹하여 관리자 권한(Root Shell)을 획득할 수 있음을 보여준다.

 

/etc/passwd 파일을 확인할 수 있다.

 

 

1.   임의 파이프 생성 pipe( )


[파이프 생성]

 

2.  “PIPE_BUF_FLAG_CAN_MERGE” 플래그 임의 설정


[플래그 설정]

 

 

3.   메모리 영역 병합

 

Splice 함수를 이용하여 대상 파일의 데이터를 파이프로 전송한다. 참조하는 Page Cache

offset 조정하여 기존 데이터가 입력되는 데이터에 의해 덮여 쓰이도록 하고 있다.

 

※“PIPE_BUF_FLAG_CAN_MERGE” 플래그는 초기화되지 않은 채로 남아있다.


[메모리 영역 병합]

 

4.   캐시 데이터 입력

 

파이프를 통해 입력되는 데이터로 대상 파일의 Page Cache 덮어쓰기4된다.

 

[캐시데이터 입력]