시스템 무결성 보호

최근 수정 시각:

파일:external/upload.wikimedia.org/Rootless-test.png
날릴려고 하는건 macOS의 인텔 그래픽 드라이버

1. 개요

1. 개요[편집]

Apple 고객지원 홈페이지의 'Mac의 시스템 무결성 보호'에 대한 설명 페이지
근본없는 기술이란 뜻이다

루트리스(rootless) 혹은 SIP(System integrity protection, 시스템 무결성 보호)라고 하며, macOS 10.11과 iOS 9에 적용된 새로운(?) 기술이다.

일반적인 Unix 운영체제의 경우 rm -rf /를 하면 머리가 텅 비어지는 그런 경험을 느낄수 있다. 유닉스 기반인 macOS도 이를 피해갈수 없어서 rm -rf / 명령어로 모든걸 날릴수 있었다. 그러나, 10.11 들어서 root를 엿먹이는 루트리스(rootless) 혹은 시스템 무결성 보호라는 시스템이 도입되었다.

간단하게, 루트리스는 다음과 같은 시스템 파일들을 루트계정을 빌려서도 못 건든다. 애플측에서 커널측에다가 아예 박아놔서 아무리 Root가 와도 못 건드는 것. 거기다가 이 파일들은 루트리스가 켜져 있을 경우 애플 소프트웨어 업데이트와 연계되어 새로이 업데이트 된다. 루트가 와도 못 건드는게 아니라, 루트리스는 SELinux 처럼 구동한다. 즉, 접근 권한이 없는 놈들은 무조건 차단. 여기엔 당연히 루트 계정도 포함된다. 그러니까 일반 사용자 입장에선 그냥 놔둬도 상관 없고, 아예 잘못된 실수를 할수도 없는 상황이 도래했다. 거기다가 이런 보호를 받는 프로그램의 경우 코드 인젝션도 불가능하다. 그래서 이런 프로그램에 관련하던 몇몇 개발자들은 손 털고 나가기도 하였다. 다음은 시스템 무결성 보호가 보호하는 디렉터리 목록이다.

  • /System

  • /usr

  • /sbin

  • /bin

  • OS X이 사전 설치된 앱 (즉, /System 그 아래의 빌트인 소프트웨어들(파인더같은 프로그램.))


아래는 시스템 무결성 보호가 보호해주지 않는 디렉터리 목록이다.

  • /Application

  • /보관함

  • /usr/local (homebrew가 사용하는 디렉토리.)


물론 복구 모드를 통해서 루트리스를 끌수 있지만, 착한 위키러들은 그냥 가만히 놔두는게 상책이다.뭐, 끄는 것 자체야 문제는 아닌데 거기에 도래하는 책임은 알아서 지라는 것이다 하지만 시스템을 씹고 뜯고 맛보고 즐기는 걸 좋아하는 공돌이 위키러라면, 루트리스는 시스템 파티션이 아닌 복구 파티션[1] 에서 다음과 같은 명령으로 끌수 있다. 켜는것은 뒤에 disable을 지우고 enable을 치면 된다.

csrutil disable


여담으로 iOS9 출시 전 루트리스가 도입되면 탈옥이 불가능해질것이라는 예상이 들끓었으나, 이미 Pangu 팀의 iOS 9.0 ~ 9.0.2 탈옥툴이 나온 상태로 iOS9 도 탈옥이 가능하다는 것이 증명되었다. 우린 언제나 답을 찾을것이다. 늘 그랬듯이

현재 맥에서 ASTx가 허수아비 인 것도 다 루트리스 때문. 일단 kext[2]를 커널에 올려야 맥을 그야말로 씹고 맛보고 즐기고가 가능해지는데, 루트리스는 애플 코드 서명이 없는 kext를 다 조져버린다. 그리고 ASTx 같은 걸 애플이 코드 서명 해줄리가 없고... 그래서 루트에서 돌아가는 아주 허수아비 급으로 반쪼가리로 만들어 놨다. 물론 ASTx가 자랑하는 키보드 보안 따윈 없다.[3]

macOS 10.13 하이 시에라에 와서는 이 기능이 더욱더 확장되었다루트리스 무시할 수 있는 구멍도 만들고..곤 하나, 실제 머신에서 rm -rf /를 구동해본 바(...) 남는거 하나 없이[4] 홀라당 날아가는게 관측되었다(...)뭐야 저건

'rootless'라는 단어는 안드로이드에서 글자 그대로 루팅 없이 사용 가능한 유틸리티를 말할 때도 쓰인다. 이 문서에서 다루는 대상과는 관계가 없으니 헷갈리지 말자.




[1] 부팅 시 애플 로고가 보이기 전에 커맨드 키와 R 키를 동시에 누르고 있으면 진입할 수 있다[2] 커널 확장, 간단하게 장치 드라이버 비슷한것들 [3] 키보드 보안 프로그램은 커널에 직접적으로 달라 붙는데, 이렇게 비정상적인 커널접근을 막아버리면? [4] EFI 파티션 포함