공유 취소(2)를 취소하는 방법이 있나요?

공유 취소(2)를 취소하는 방법이 있나요?

에 전화하면 런타임에 공유 취소를 취소 unshare ./fooprogram할 수 있는 방법이 있나요 ?fooprogram

답변1

방법이 있다면 커널 취약점입니다.

이 리뷰를 작성하는 시점에서는 최신 커널(5.7.2),이 문제에 관한 문서가 있습니다:

unshare()시스템 호출은 스레드가 생성 시 공유된 모든 리소스를 선택적으로 "공유 해제"할 수 있도록 하는 기본 요소를 Linux 스레딩 모델에 추가합니다.

[…]

unshare()새로운 프로세스를 생성하지 않고 공유 리소스를 제어하려는 애플리케이션을 위한 향상된 Linux 스레드 유틸리티입니다.unshare()프로세스/스레드 개념을 가상 머신으로 구현하는 Linux에서 사용할 수 있는 기본 요소 세트를 자연스럽게 보완합니다.

나중에 계속:

unshare()커널의 프로세스별 네임스페이스 메커니즘을 사용하여 다중 인스턴스화된 디렉터리를 구현하는 데 사용할 수 있습니다. 사용자별 및/또는 보안 컨텍스트 인스턴스 별 등 여러 인스턴스화 디렉터리 /tmp또는/var/tmp사용자 홈 디렉터리의 각 보안 컨텍스트 인스턴스는 해당 디렉터리를 사용할 때 사용자 프로세스를 격리합니다. 를 사용하면 unshare()PAM 모듈을 통해 사용자가 로그인할 때 개인 네임스페이스를 쉽게 설정할 수 있습니다.

문서에는 "복구 불가능"이라고 명시적으로 나와 있지는 않지만 보안 목적으로 unshare()한 가지 합법적인 사용이 언급되어 있습니다 .unshare()

이것이 역전될 수 있다면 목적이 무산될 것이라고 생각할 수도 있습니다.

관련 정보