Canonical이 LXD의 제한 프로젝트(restricted project) 기능과 관련해 “Restricted project bypass leading to arbitrary command execution”이라는 제목의 보안 권고를 GitHub 보안 어드바이저리에 공개했습니다. 이 권고는 로컬에서 제작한 악의적인 인스턴스의 스냅샷을 제한 프로젝트로 옮겨 복원하는 경로로 공격자가 호스트에서 root 권한으로 임의 명령을 실행할 수 있다고 지적합니다. 이 시나리오는 추측이 아니라 프로젝트 격리의 무력화와 호스트 수준 명령 실행을 다룬 공식 권고에 근거한 분석입니다. 이 글에서는 2026년 11월 9일 기준으로 확인된 사실과 아직 검증되지 않은 사항을 구분해 정리합니다.
취약점 개요: GHSA-47w9-6r3f-938g와 스냅샷 복원 경로
Canonical의 권고는 GitHub 보안 어드바이저리 형태로 공개되었으며, 해당 어드바이저리는 GHSA-47w9-6r3f-938g로 식별됩니다. GitLab Advisory Database의 같은 GHSA 레코드는 NVD의 CVE-2026-48751을 참조로 매핑하고 있습니다.
권고가 설명하는 LXD 제한 프로젝트 우회 경로는 다음 세 동작으로 요약됩니다.
- 로컬에서 악의적인 인스턴스를 만들고 그 스냅샷을 제작한다.
- 제작된 스냅샷을 제한 프로젝트로 옮긴다.
- 옮겨진 스냅샷을 복원한다.
위협의 본질은 결과에 있습니다. 악용에 성공한 행위자는 호스트에서 root 권한으로 임의 명령을 실행할 수 있다는 것이 권고의 핵심 지적입니다. 스냅샷 복원이 제한 프로젝트의 제한을 우회해 호스트 root에 도달하는 경로가 성립한다면 같은 호스트에서 실행되는 다른 프로젝트와 인스턴스도 함께 영향권에 들어갑니다.
핵심 사실 요약
| 구분 | 내용 | 근거 |
|---|---|---|
| 권고 제목 | Restricted project bypass leading to arbitrary command execution | |
| 식별자 | GHSA-47w9-6r3f-938g, NVD CVE-2026-48751 참조 매핑 | |
| 공격 경로 | 로컬 제작 → 제한 프로젝트로 이동 → 스냅샷 복원 | |
| 악용 시 영향 | 호스트에서 root 권한 임의 명령 실행 | |
| 수정 버전 | 6.9, 5.21.5, 5.0.7 (patched_versions) | |
| 최초 수정 버전 | 0.0.0-20260630083100-c5184be310b1 (first_patched_version, Go 패키지 버전 문자열) | |
| 연결된 기록 | 수정 커밋 4건, 릴리스 태그 lxd-5.0.7 및 lxd-5.21.5, Incus 측 별개 권고 GHSA-48q5-w887-33wv |
공개 경위: Incus가 원 출처인 LXD 보안 권고
이 권고를 해석할 때 반드시 짚어야 할 배경이 있습니다. Incus는 LXD와 별개의 제품이며, Incus의 보안 권고 내용을 LXD의 사실로 그대로 적용할 수는 없습니다. GitLab 레코드의 참조 목록도 Incus 측 별개 권고 GHSA-48q5-w887-33wv를 함께 연결하고 있어, 두 권고가 관련되되 구분된 기록임을 보여줍니다.
공개 시점의 맥락은 Linux Containers Forum에서 확인됩니다. 2026년 6월 26일 사용자 ejrowley가 LXD 보안 권고 11건 목록을 포럼에 올렸고, GHSA-47w9-6r3f-938g는 그중 여덟 번째 항목으로 나열되었습니다. LXD·Incus 관리자 stgraber는 두 프로젝트가 보안 정보를 공유하며 Incus가 원 출처이고 LXD가 자체 버전의 권고를 발행한다고 설명했습니다. 11건 중 8건은 Incus 7.2 태그에 맞춰 전날인 2026년 6월 25일 공개되었다고 밝혔습니다.
실무적 함의는 명확합니다. Incus 권고의 상세 서술을 LXD 환경에 그대로 이식해 해석하면 안 되며, LXD에 적용되는 사실은 LXD가 발행한 권고와 그 기록만으로 판단합니다.
수정 버전 확인: 6.9·5.21.5·5.0.7과 계열별 확인 방법
LXD 리포지토리 보안 권고 API가 수정 버전(patchedversions)으로 표시하는 버전은 6.9, 5.21.5, 5.0.7입니다. GitLab 레코드의 참조 목록은 수정 커밋 4건과 함께 릴리스 태그 lxd-5.0.7, lxd-5.21.5를 연결해 5.0.7과 5.21.5 수정 릴리스의 존재를 독립적으로 뒷받침합니다. GitHub Advisory Database의 같은 GHSA 항목은 Go 패키지 버전 문자열 0.0.0-20260630083100-c5184be310b1을 최초 수정 버전(firstpatched_version)으로 표시합니다.
점검 순서
- 운영 중인 모든 LXD 호스트의 데몬 버전을 확인한다.
- 확인한 버전이 세 가지 수정 버전 기준(6.9, 5.21.5, 5.0.7)과 어떻게 대응되는지 검토한다.
- 수정 버전에 도달하지 못한 호스트는 이번 우회 경로에 대한 노출 가능성을 닫아두지 못한 것으로 간주하고, 다음 절의 점검 포인트를 우선 적용한다.
다만 두 가지 한계를 분명히 둘 필요가 있습니다. 각 계열에서 영향을 받는 버전의 상한은 공개 자료로 확인되지 않았고, firstpatchedversion 문자열이 실제 빌드·배포 단위와 어떻게 대응되는지도 아직 원 레코드 원문 확인 없이 2차 전달로만 존재합니다. 수정 여부는 배포 채널이 아니라 각 호스트에서 확인된 버전 자체로 판단합니다.
점검 포인트: 스냅샷 유입·복원 경로와 영향 범위
- 버전 기준선 확보: 모든 호스트가 6.9, 5.21.5, 5.0.7 중 자신에 해당하는 수정 버전에 도달했는지 확인한다.
- 스냅샷 반입 경로 점검: 외부에서 제작된 인스턴스·스냅샷이 제한 프로젝트로 이동되고 복원될 수 있는 워크플로, 그리고 이동·복원을 수행할 수 있는 계정과 자동화를 점검한다.
- 신뢰 가정 재정의: 제한 프로젝트에 반입된 스냅샷이라도 출처가 신뢰되지 않으면 잠재적 위협으로 취급한다. 복원 단계에서 제한이 우회되면 결과는 호스트 root 권한의 임의 명령 실행이다.
- 호스트 단위 피해 가정: 단일 프로젝트의 침해가 호스트 root로 이어지면 동일 호스트의 다른 프로젝트·인스턴스도 함께 영향권에 들어간다는 전제로 대응 범위를 설정한다.
- Incus 병행 환경 분리: Incus 서버를 함께 운영한다면 LXD 권고와 Incus 권고를 별개 기록으로 구분해 각각 확인한다.
각 공격 단계에 요구되는 구체적 권한 조합은 공개 자료에 명시되어 있지 않습니다. 최소 권한만으로는 성립하지 않을 것이라는 낙관적 가정에 기대지 않고 보수적으로 점검하는 수밖에 없습니다.
아직 확인되지 않은 사항
이 글에서 사용한 공개 자료의 범위에서는 다음 사항이 확인되지 않았습니다. 아래 항목은 확정된 사실로 다루지 않는 편이 안전합니다.
- 실제 환경에서의 악용 여부와 공개 PoC·재현물의 존재 여부
- 로컬 제작·이동·복원 각 단계에 요구되는 구체적 권한과 전제조건
- 각 지원 계열별 취약 버전 상한
- Ubuntu 등 배포 채널 패키지에 수정이 반영되었는지 여부
- firstpatchedversion 문자열의 실제 빌드·배포 단위 대응 관계
- CVSS 3.1 9.9라는 점수가 GHSA-47w9-6r3f-938g 개별 항목의 점수인지 여부
- NVD CVE-2026-48751 원문의 영향 대상 기술 내용
- 탐지 규칙, 관련 로그 항목, 침해 지표(IoC)
확인된 기록이 가리키는 실무 조치는 단순합니다. 수정 버전(6.9, 5.21.5, 5.0.7) 확인, 그리고 제한 프로젝트로 유입되는 스냅샷의 이동·복원 경로 점검입니다. 그 결과가 호스트 root 수준의 임의 명령 실행으로 이어질 수 있다는 점에서 일반적인 컨테이너 설정 오류와는 결이 다릅니다. 확인되지 않은 세부 사항이 채워지기 전까지는 검증된 사실 위에서만 판단하고 나머지는 명시된 미확인 항목으로 남겨두는 것이 안전한 운영의 전제입니다.