Nintendo Switch 2 첫 소프트웨어 탈옥 성공
원제 Jailbreaking the Switch 2
104 포인트댓글 30
Key Point
Switch 2에 대한 첫 실용적인 탈옥 도구가 등장했으며, 소프트웨어만으로 시스모듈 권한을 획득하는 방법을 구체적으로 공개했으므로 홈브루 및 에뮬레이션 커뮤니티에 중대한 영향을 미칠 것이다.
핵심 요약
- ns2jb는 Switch 2 최초의 소프트웨어 온리 탈옥으로, 임의의 네이티브 코드를 일반 시스모듈이나 내장 fs 시스모듈로 실행할 수 있게 해준다.
- 홈브루, 게임 역공학 및 모딩, 세이브 백업, MMIO를 통한 주변기기 접근이 가능해졌으며, 시연으로 Mario Kart World를 모딩했다.
- 처음 시도는 WebKit 브라우저 공격으로 n-day 취약점을 이용해 초기 코드 실행을 얻으려 했다.
- 대신 Switch 1의 SmileBASIC 게임에서 배열 제거 시 32비트 정수 오버플로우를 발견해, 버퍼 오버플로우로 메모리 읽기/쓰기 권한을 얻었다.
- fs 시스모듈의 IFileSystem 경로 정규화 함수에서 배경(\) 문자가 포함된 경로로 인한 0x301바이트 버퍼 오버플로우를 발견했다.
- 이를 통해 fs 서비스의 캐시 포인터를 조종하여 임의 읽기/쓰기(ARW) 권한을 얻고, 저장소 덤프 및 모든 일반 시스모듈 코드를 추출했다.
- ExeFS 파일시스템을 임의로 교체하는 공격으로, 유효한 개발자 서명은 유지하되 실행 파일을 자신의 코드로 바꿔 로더의 검증을 우회했다.
- fs의 IPC 연결 핸들을 SmileBASIC에서 제어하는 이벤트 핸들로 교체해, fs가 로더의 메시지를 처리하는 시점을 조종할 수 있게 했다.
- ro 시스모듈의 NPDM(프로그램 메타데이터) 권한을 이용해 SetProcessMemoryPermission 등 커널 SVC를 호출, fs 코드 메모리에 쓰기 권한을 만들고 fs 자체를 패치했다.
- 0xffff8001 핸들값 조작으로 fs의 KProcess 핸들을 얻어, 사용자공간에서 커널 권한 프로세스에 접근할 수 있게 했다.
- 이제 보유한 메인 NPDM 메타데이터가 있는 모든 프로그램 권한으로 임의 코드를 실행할 수 있으며, 각 하드웨어 드라이버를 별도로 공략하지 않고도 접근 가능해졌다.
- CFI, PAC, XOM 같은 최신 완화 기법이 일반 시스모듈에 적용되어 있어, 메모리 손상보다는 로직 버그 찾기가 더 효율적인 상황이다.
- 향후 관심사는 WebKit 데이터온리 공격, ro 시스모듈 완전 제거, GPU 드라이버 직접 접근 등이다.