실제 루트가 없어도 사용자 네임스페이스를 사용하여 다른 네임스페이스를 만들 수 있는 이유는 무엇입니까?

실제 루트가 없어도 사용자 네임스페이스를 사용하여 다른 네임스페이스를 만들 수 있는 이유는 무엇입니까?

이 명령을 사용하여 unshare네임스페이스를 생성할 때 호스트의 루트가 아니고 사용자 유형이 아닌 다른 네임스페이스를 생성하면 다음 오류가 발생합니다. Operation not permitted.분명히 루트로 실행하면 작동합니다.

따라서 unshare -n(공유 해제 네트워크 네임스페이스)에서 이 오류가 발생하는 경우 unshare -Un(공유 해제 사용자 및 네트워크 네임스페이스)에서 이 오류가 발생하지 않는 이유는 무엇입니까?

내가 봤지만 맞는지 알 수 없는 첫 번째 옵션은 모든 네임스페이스가 실제로 사용자 네임스페이스와 연결되어 있다는 것입니다. 충분한 권한이 없으면 새 네임스페이스를 연결할 수 없습니다. 그러나 사용자 네임스페이스를 생성하면 이를 가능하게 하는 권한을 얻게 됩니다.

위의 내용이 사실이라면 명시적으로 사용자로 생성하지 않더라도 모든 프로세스에 사용자 네임스페이스가 있다고 말할 수 있습니까? 이것이 다른 네임스페이스에도 적용됩니까?

편집: 주석에서 지적한 대로 unshare -Un동일한 오류가 발생할 수 있습니다 operation not permitted. 사용자 네임스페이스가 활성화된 Ubuntu 20.04를 사용하여 테스트했습니다. 나는 그것이 차이점이라고 믿는다.

답변1

왜 안돼?

무엇보다도 네임스페이스는 샌드박싱 메커니즘입니다. 이를 통해 시스템의 나머지 부분에 영향을 미칠지 여부에 대한 걱정 없이 격리된 도메인 내의 특정 설정을 수정할 수 있습니다.

네임스페이스 마운트를 예로 들어 보겠습니다. 파일 시스템 마운트는 일반적으로 권한이 있는 작업입니다. 임의의 파일 시스템을 마운트할 수 있는 경우 특히 선택한 set-user-id 실행 파일이 포함된 파일 시스템을 마운트한 다음 이를 실행하여 권한 상승 공격을 수행할 수 있습니다. 그러나 사용자 네임스페이스 내에서 set-user-id 실행 파일을 시작하면 해당 네임스페이스 내의 권한만 증가합니다. 사용자 네임스페이스 내의 루트 사용자 ID는 네임스페이스 외부의 일반 사용자 ID에 매핑되고 프로세스 기능도 동일하게 적용됩니다. 이 네임스페이스에 속하는 리소스에 연결됩니다.

사용자 네임스페이스가 없는 경우 비슷한 방식으로 권한 상승을 위해 다른 유형의 네임스페이스를 생성할 수 있습니다. 그러나 "권한"이 사용자 네임스페이스로 제한되면 이를 허용하지 않을 이유가 없습니다. 실제로 이에 대한 몇 가지 사용 사례가 있습니다. 사용자 네임스페이스는 권한을 제한할 뿐만 아니라 권한 있는 경계와 비권한 경계를 정의할 수 있는 가능성도 만듭니다.이내에악의적인 프로세스가 샌드박스를 완전히 탈출하여 샌드박스 자체를 장악하는 것을 방지하기 위한 네임스페이스입니다.

LWN 기사네임스페이스 작동, 6부: 사용자 네임스페이스에 대한 추가 정보권한 없이 네임스페이스를 생성할 수 있는 몇 가지 응용 프로그램은 다음과 같습니다.

기능이 네임스페이스에 미치는 영향을 격리함으로써 사용자 네임스페이스는 권한이 없는 사용자가 이전에 루트 사용자로 제한되었던 기능에 안전하게 액세스할 수 있도록 허용한다는 약속을 이행합니다. 이는 결국 새로운 유형의 사용자 공간 애플리케이션에 대한 흥미로운 가능성을 창출합니다. 예를 들어 이제 권한이 없는 사용자는 루트 권한 없이 Linux 컨테이너를 실행할 수 있습니다.Chrome 스타일 샌드박스달성하기 위해 set-user-ID-root 도우미를 사용할 필요가 없습니다.가근성유형 응용 프로그램은 동적 연결 트릭과 구현을 사용하지 않습니다.chroot()애플리케이션 기반프로세스 격리에 사용됩니다. 커널 버그를 제외하면 사용자 네임스페이스를 사용하여 권한 있는 커널 기능에 액세스하는 애플리케이션은 기존의 set-user-ID-root 기반 애플리케이션보다 더 안전합니다. 사용자 네임스페이스 기반 접근 방식을 사용하면 애플리케이션이 손상되더라도 영향을 미치지 않습니다. 더 넓은 시스템에 손상을 입히는 데 사용될 수 있는 모든 권한입니다.

즉, 사용자 네임스페이스에 대한 지원을 추가하면 Linux에 여러 가지 보안 취약점이 발생합니다(한 가지 예를 들자면) 일부 배포까지권한 없는 사용자 네임스페이스 생성은 기본적으로 비활성화되어 있습니다..

자료를 찾고 계시다면,네임스페이스에 관한 나머지 LWN 시리즈이 주제를 더 자세히 다룹니다.

관련 정보