상세 컨텐츠

본문 제목

CVE-2021-3493: Kernel Vulnerability in Overlayfs

ANALYSIS/Vulnerability Analysis

by koharin 2021. 5. 30. 15:31

본문

728x90
반응형

Overview


취약점 유형 Privilege Escalation
CVSS 점수 7.8 (HIGH)
취약점 공개 날짜 2021-04-15

 

Description


Linux Kernel의 overlayfs 파일시스템 구현에 있어서 user namespace와 관련한 파일시스템 capability 적용에 대해 적절히 검증하지 않았다. Ubuntu의 로컬 공격자는 해당 취약점을 사용해서 Ubuntu의 권한없는 overlayfs 마운트의 허가로 권한 상승으로 이어질 수 있다.

 

Affected Kernel Version


  • Ubuntu specific
  • Linux Kernel v5.11 이전
  • 확인되는 바로는 현재 5.8 버전은 패치되었다. 5.4는 영향을 받는다.

 

 

Background


Union Mount Filesystem

  • 하나의 디렉터리에 여러 파일시스템을 마운트하는 기술
  • 마운트한 여러 파일시스템 내용이 합쳐진다. 먼저 마운트한 파일시스템의 디렉터리 구조가 나중에 마운트한 파일시스템 디렉터리와 합쳐진다. 동일한 파일 이름을 가진다면 나중에 마운트한 파일시스템 내용을 우선으로 보여주고,
  • 투명한 셀로판지를 여러 개 겹쳐서 위에서 내려다보는 것과 비슷하다.
  • union mount는, 마운트 시 —union 옵션을 줄 때 파일 시스템을 병합(merge)해서 마운트한다.

 

Overlayfs (오버레이 파일 시스템)

  • Union Mount File System
  • overlayfs(overlay 파일시스템)이 linux kernel 3.18 버전부터 통합되었다.
  • overlay 파일시스템은 upper와 lower 파일시스템을 하나의 파일시스템 네임스페이스로 합친다.변화는 upper 파일시스템에서 이루어진다.
  • 다른 union 파일시스템과 다른 점은, 파일이 열린 후 모든 연산은 바로 lower나 upper 파일시스템으로 간다.
  • lower, upper, merge, work의 4개의 디렉토리 레이어로 나뉜다.
    • lower filesystem: upper directory 아래에 깔려있는 1개 이상의 디렉토리 (read-only) lower 파일시스템은 다른 overlayfs가 될 수도 있다.
      • lower directory에서의 파일 변경은 upper에 copy된다.
    • upper filesystem: 가장 위쪽의 디렉토리로, 최종적으로 사용자에게 보이는 파일을 변경할 수 있다. (read/write 가능)
      • 프로세스는 파일을 읽을 때(read), overlayfs 파일시스템은 upper 디렉토리에서 해당 파일이 있으면 upper 디렉토리에서 읽고, 없으면 lower 디렉토리에서 찾는다.
      • 프로세스는 파일을 쓸 때(write), overlayfs 파일시스템은 upper 디렉토리에만 쓴다.
    • work directory: 레이어 사이에서 전환될 때 파일을 준비하는데 사용한다. work 디렉터리는 upper 디렉토리와 동일한 파일시스템에 있어야 한다. (upper 디렉토리와 동일한 파일시스템에 마운트 되는 빈 디렉토리)
    • merge directory

 

cap_convert_nscap

  • 네임스페이스에 대해 권한이 있는지 체크한다.

 

Vulnerability Analysis


linux에서 파일에 대해 file capability를 적용하는 과정은 다음과 같다.

setxattr(...):
if cap_convert_nscap(...) is not OK:
	then fail
vfs_setxattr(...)

cap_convert_nscap을 통해 네임스페이스에 대한 권한이 있는지 체크한 후 파일에 capability를 세팅한다.

하지만 Overlayfs에서 파일 시스템에 대해 file capability를 적용할 때, vfs_setxattr() 함수만 호출하고 cap_convert_nscap()을 호출 하지 않아 네임스페이스에 대한 권한 체크가 부재하다.

이것은 해당 파일들에 대해 외부 네임스페이스나 마운트를 할 수 있도록 capability를 설정할 수 있도록 한다.

 

Exploit


briskets/CVE-2021-3493

 

briskets/CVE-2021-3493

Ubuntu OverlayFS Local Privesc. Contribute to briskets/CVE-2021-3493 development by creating an account on GitHub.

github.com

 

 

Mitigation


sudo apt-get update
sudo apt install linux-image-5.6.0-1055-oem
sudo reboot

취약한 커널 버전에 영향을 받는 우분투를 사용하고 있으면, 위의 과정으로 커널 버전 업을 한다.

 

Patch


vfs: move cap_convert_nscap() call into vfs_setxattr() · torvalds/linux@7c03e2c

 

vfs: move cap_convert_nscap() call into vfs_setxattr() · torvalds/linux@7c03e2c

cap_convert_nscap() does permission checking as well as conversion of the xattr value conditionally based on fs's user-ns. This is needed by overlayfs and probably other layered fs (ecryptfs) ...

github.com

Linux Kernel v5.11에서 패치되었다.

cap_convert_nscap 호출을 vfs_setxattr() 함수에 추가해서 취약점을 패치했다.

 

Reference


CVE - CVE-2021-3493

 

CVE - CVE-2021-3493

20210412 Disclaimer: The record creation date may reflect when the CVE ID was allocated or reserved, and does not necessarily indicate when this vulnerability was discovered, shared with the affected vendor, publicly disclosed, or updated in CVE.

cve.mitre.org

SSD Advisory - OverlayFS PE - SSD Secure Disclosure

 

SSD Advisory – OverlayFS PE - SSD Secure Disclosure

TL;DR Find out how a vulnerability in OverlayFS allows local users under Ubuntu to gain root privileges. Vulnerability Summary An Ubuntu specific issue […]

ssd-disclosure.com

 

728x90
반응형

관련글 더보기