Post

secure-execution mode

secure-execution mode

어떤 바이너리를 실행하면, dynamic linker(ld.so)는getauxval( ) 를 이용해 auxiliary vector인 AT_SECURE 값을 가져와 0인지 확인하고 0이 아니면 secure-execution mode로 실행한다.

2017/09/02 - [System/Exploit] - Return to VDSO using ELF Auxiliary Vectors leck

다음과 같은 경우, AT_SECURE != 0이 된다.

  • eUID != rUID또는 c eGID != rGID 인 경우 ( => setUID나 setGID가 걸려있는 경우 )
  • non-root UID process가 capability를 가진 바이너리를 실행하면서 capability를 얻는 경우 (capabilities )
  • Linux Security Module이 set하는 경우

secure-execution mode 일 경우 ld.so는 특정 환경변수의 동작을 제한하거나 비활성화 한다.

LD_PRELOAD에는 다음과 같은 제약이 생긴다.

  • preload pathnames containing slashes are ignored
  • only shared objects in the standard search directories that have the set-user-ID mode bit enabled are loaded.
This post is licensed under CC BY 4.0 by the author.