KernelSU란?

KernelSU는 중국의 안드로이드 개발자 weishu(tiann)이 개발하고 있는 커널 모듈형의 오픈소스 안드로이드 루트 솔루션입니다.
현재 대부분의 안드로이드 루팅 방법은 Magisk를 이용하는 방법을 사용하고 있습니다.
KernelSU와 Magisk가 어떤 차이가 있고, 왜 필요한지 알아볼 필요가 있습니다.
KernelSU란?
다시 한번 정의를 짚고 넘어가자면,
KernelSU는 중국의 안드로이드 개발자 weishu(tiann)이 개발하고 있는 커널 모듈형의 오픈소스 안드로이드 루트 솔루션입니다.
여기서 핵심 키워드는 바로 '커널 모듈형' 입니다. 기존 루트 솔루션과의 가장 큰 차이점이 바로 여기서 납니다.
기존 방식 (Magisk) vs KernelSU: 무엇이 다를까?
기존에 많이 사용했던 Magisk는 어떤 방식이었는지 떠올려봅시다.
Magisk는 주로 boot.img
(부트 이미지)를 패치하는 방식을 사용했습니다.
시스템 파티션을 직접 건드리지 않고 변경 사항을 적용하는 '시스템리스(Systemless)' 방식으로 동작합니다.
덕분에 순정 시스템 상태를 유지하는 것처럼 보이게 하여 SafetyNet 같은 보안 검사를 우회하거나 OTA 업데이트를 비교적(?) 용이하게 하는 등의 장점이 있었습니다.
따라서, Magisk는 사용자 공간(userspace) 레벨에서 루트 권한을 관리하고 제어하는 방식에 가깝습니다.
반면, KernelSU는 이름 그대로 리눅스 커널(Kernel) 레벨에서 작동합니다. 안드로이드 시스템의 가장 핵심인 커널에 직접 모듈을 삽입(로드)하여 루트 권한을 관리하는 방식이죠.
비유하자면, Magisk가 집(시스템)의 현관문(부트 이미지)을 살짝 개조해서 드나드는 방식이라면, KernelSU는 집의 설계도(커널)에 새로운 비밀 통로(커널 모듈)를 만드는 방식에 가깝다고 할 수 있습니다.
그렇다면 왜 KernelSU가 필요할까요?
Magisk가 잘 동작하고 있는데 왜 새로운 방식이 필요할까요? KernelSU는 몇 가지 흥미로운 기술적 특이점이 잇습니다.
- 더 강력한 Root Hide
커널 레벨에서 직접 작동하기 때문에, 사용자 공간에서 루트 상태를 탐지하려는 앱들에게 자신의 존재를 숨기기가 이론적으로 더 용이할 수 있습니다. Zygisk/Shamiko/HideMyApplist 등이 앱의 탐지 로직과 끊임없이 숨바꼭질을 해야 했던 것과는 근본적으로 다른 접근 방식입니다. 루트 탐지가 점점 더 고도화되는 상황에서 KernelSU는 루트 감지를 더더욱 어렵게 만듭니다. - 커널 기능 직접 활용
커널 모듈이기 때문에 커널의 내부 기능에 더 직접적으로 접근하고 상호작용할 수 있습니다. 따라서 새로운 루팅 감지 방법이 나오더라도 커널 동작을 변경하는 방법으로 대응할 수 있으며, User space에서 동작하는 앱은 커널 모듈을 직접적으로 확인하기 어렵습니다. - 간결함
GKI(Generic Kernel Image)를 사용하는 최신 안드로이드 버전과 호환되는 커널이라면, 복잡한 부트 이미지 패치 과정 없이 커널 모듈 로드만으로 루트 권한을 얻을 수 있는 가능성이 있습니다.
단점은 없나요?
당연히 단점도 존재합니다.
- 지원 기기 제한
GKI 2 기반이기에 Magisk에 비해 아직 지원하는 기기나 커널 버전이 제한적입니다.
따라서 GKI 2 적용 기기가 늘어나야 해서 시간이 해결해줘야하는 문제입니다. - 커널 의존성
커널 모듈 방식이기 때문에, 특정 커널 버전이나 설정에 크게 의존합니다. 커널 업데이트 시 호환성 문제가 발생할 가능성이 높습니다.
결론
KernelSU는 Magisk와 같은 기존 루팅 방식의 단점을 보완하기 위해 만들어졌지만, 커널과 최신 아키텍쳐에 의존한다는 점에서 또다른 단점이 존재합니다.
다음 글에서는 KernelSU의 상세한 동작 방식에 대해 알아보고자 합니다.
// KernelSU 돌아가는 기기가 없어서 기약이 없다는 사소한 문제가…