아래 계층이 "이 파일은 root 소유"라 우기면, 커널은 그 말을 그대로 옮겨 적었다

아래 계층이 “이 파일은 root 소유”라 우기면, 커널은 그 말을 그대로 옮겨 적었다

분류: CVE · 커널·OS · 권한상승(LPE) · CVE-2023-0386 [정보성]

덱. 리눅스 커널의 오버레이 파일시스템(OverlayFS)이 파일을 “위 계층”으로 복사할 때, 그 파일의 소유자 정보가 지금 이 사용자 네임스페이스 안에서 실제로 유효한 값인지 확인하지 않았습니다. 이 틈을 이용하면 일반 사용자가 가짜 파일시스템으로 “이 파일은 root 소유의 SUID 바이너리”라고 커널을 속여, 결국 root 권한을 얻을 수 있습니다. 리서치 업체 Datadog Security Labs가 이 구조를 상세히 분석해 공개했습니다.

리드

권한 관리 체계가 여러 계층으로 겹쳐 있을 때, 안쪽 계층에서 “이 값은 이렇다”고 자체적으로 규정한 것을 바깥 계층이 검증 없이 그대로 받아들이면 위험합니다. 사용자 네임스페이스(user namespace)는 컨테이너 격리를 위해 “이 안에서는 UID 0이 root처럼 보이지만, 바깥에서는 평범한 일반 사용자일 뿐”이라는 매핑을 두는 장치입니다. 그런데 파일시스템 계층이 이 매핑을 확인하지 않고 안쪽 네임스페이스가 주장하는 소유자 정보를 그대로 믿어버리면, 안쪽에서 만든 가짜 신원이 바깥 세계의 진짜 권한으로 둔갑합니다. CVE-2023-0386은 이런 종류의 틈이 커널 한복판, 그것도 컨테이너 인프라 전반에서 널리 쓰이는 OverlayFS에 있었다는 사례입니다.

핵심 사실 요약

  • 개요. CVE-2023-0386은 리눅스 커널의 로컬 권한상승(LPE) 취약점입니다. 일반 사용자가 자신의 셸을 root 권한으로 올릴 수 있습니다. 원문에 따르면 커널 소스 트리에는 2023년 1월 27일 패치됐고, NVD(NIST 국가 취약점 데이터베이스)에는 2023년 3월 22일 공개됐으며, 공개 PoC(개념증명) 코드는 2023년 5월 4일 GitHub에 등장했습니다.
  • 영향 범위. 원문은 “커널 버전이 6.2 미만이면 취약할 가능성이 높다”고 안내하며, 정확한 취약 여부는 배포판별 보안 권고를 참고하라고 밝힙니다. Ubuntu, Debian, Amazon Linux, Red Hat 등 주요 배포판이 각자 별도의 보안 공지를 냈다고 원문은 전합니다.
  • 근본 원인. OverlayFS는 여러 디렉터리(하위 계층 “lower”와 상위 계층 “upper”)를 하나의 파일시스템처럼 합쳐 보여주는 장치입니다. 하위 계층의 파일이 수정되면 커널은 그 파일을 상위 계층으로 “복사해 올리는”(copy-up) 절차를 거칩니다. 문제는 이 복사 과정에서 커널이 파일의 소유자 UID/GID가 현재 사용자 네임스페이스 안에 실제로 매핑돼 있는지 확인하지 않았다는 점입니다. 매핑되지 않은 UID(예: 네임스페이스 바깥의 진짜 root, UID 0)라도 그대로 믿고 소유권·SUID 비트까지 상위 계층에 그대로 복사해버렸습니다.
  • 공격 조건. 원문이 설명하는 절차는 다음 요소를 필요로 합니다. ① FUSE(사용자 공간 파일시스템)로 “root 소유에 SUID 비트가 켜진 바이너리”처럼 보이는 가짜 파일시스템을 만든다. ② unshare 시스템 콜로 새 사용자·마운트 네임스페이스에 들어간다(이 자체는 일반 사용자도 별도 권한 없이 가능한 리눅스 기능입니다). ③ 이 가짜 FUSE 파일시스템을 “하위” 계층으로, /tmp처럼 누구나 쓸 수 있는 디렉터리를 “상위” 계층으로 삼아 OverlayFS를 마운트한다. ④ 파일을 건드려(예: touch) 복사-업(copy-up)을 유발한다. 즉 일반 사용자 권한만으로 사용 가능한 네임스페이스 기능을 조합해 트리거하는 구조이며, 별도의 로컬 서비스나 취약한 SUID 프로그램이 미리 깔려 있을 필요가 없습니다.
  • 패치. 원문이 인용한 패치는 fs/overlayfs/copy_up.covl_copy_up_one()kuid_has_mapping() / kgid_has_mapping() 검사를 추가해, 파일 소유자의 UID/GID가 현재 사용자 네임스페이스에 매핑돼 있지 않으면 -EOVERFLOW를 반환하고 복사를 중단시키는 방식입니다.
  • 실제 악용 관측. 원문 작성 시점(2023년 5월 10일 기준)으로는 실제 공격에 쓰인 사례가 관측되지 않았다고 밝히지만, 공개 PoC가 이미 나와 있어 패치를 우선순위로 권고하고 있습니다.
  • 컨테이너 영향. 원문은 컨테이너 내부에서도 이 취약점을 악용해 컨테이너 안에서 root 권한을 얻을 수는 있으나, 이 자체가 호스트로의 컨테이너 탈출(container escape)로 직접 이어지지는 않는다고 밝힙니다(단, 컨테이너 안에서의 root 권한이 다른 공격 경로를 여는 발판은 될 수 있다고 덧붙입니다). ⚠️미확인(팩트체크 대상) — CVSS 점수·CWE 분류는 이 소스 본문에 명시돼 있지 않아 이 초안에서 확증하지 못했습니다.

짧은 논평

이 취약점이 흥미로운 지점은 “버그가 있는 코드”가 아니라 “확인을 빼먹은 코드”라는 데 있습니다. FUSE로 가짜 파일시스템을 만드는 것도, 사용자 네임스페이스로 들어가는 것도 리눅스가 의도적으로 일반 사용자에게 열어준 기능입니다. 문제는 그 두 기능이 OverlayFS라는 세 번째 계층을 통과할 때, 이 계층이 “네임스페이스 안에서 주장하는 소유권”과 “네임스페이스 밖에서 실제로 유효한 소유권”을 구분하지 않았다는 것뿐입니다. 컨테이너 인프라가 사용자 네임스페이스·OverlayFS·FUSE를 겹겹이 쌓아 격리를 흉내 내는 지금, 이런 “계층 경계에서의 신뢰 재사용” 문제는 한 번으로 끝나지 않을 가능성이 큽니다. 저희가 이 블로그의 다른 사례들에서도 반복해서 짚는 원칙과 같은 자리입니다 — 한 계층에서 성립한 값은 그 계층을 벗어나는 순간 다시 검증돼야지, 그냥 옮겨 적으면 그 값 자체가 공격 표면이 됩니다.

References / 참고자료

  1. Datadog Security Labs (Ryan Simon, Matt Mills, Christophe Tafani-Dereeper, Frederic Baguelin), “Privilege escalation with mount_setattr and OverlayFS: CVE-2023-0386” — 이 글이 재구성한 원 분석. 취약점 메커니즘·패치 diff·탐지 규칙을 다룸. https://securitylabs.datadoghq.com/articles/overlayfs-cve-2023-0386/

이 글은 위 원 분석을 우리 관점에서 다시 쓰고 짧은 논평을 더한 정보성 초안입니다. 특정 문장·코드·재현 절차를 그대로 옮기지 않았으며, 작동하는 익스플로잇은 싣지 않았습니다. ⚠️미확인 표시 항목은 발행 전 독립 팩트체크에서 확증·정정되어야 합니다.