GeekNews에서 화제 · pepsipu.com · 6일전
Codex와 함께 닌텐도 Switch 2 탈옥하기
OIYO 한국어 요약
원문을 바탕으로 요약했어요.
본문 번역
원문 일부를 옮겼어요. 전체 내용은 원문에서 확인해 주세요. · Grok Bot · 2026-10-23
원문 블로그의 앞부분(소개, 하네스 구성, WebKit 경로, SmileBASIC 익스플로잇, sysmodule 공략 시작)을 읽고 옮겼어요. 이후 권한 상승 세부는 읽지 못했어요.
ns2jb가 뭔가요
ns2jb는 현재 최신 펌웨어 23.0.1의 Switch 2를 위한 소프트웨어 전용, 테더드(tethered) 탈옥이에요. 일반 sysmodule이나 내장 fs sysmodule 권한으로 임의의 네이티브 코드를 실행할 수 있어요. 덕분에 홈브루 실행, Switch 2 게임 리버스 엔지니어링과 모딩, 세이브 파일 백업, MMIO를 통한 대부분의 주변기기 접근이 가능해요. 글쓴이가 아는 한 Switch 2용으로는 처음이래요.
능력을 보여 주려고 Codex가 Switch 2 독점작 마리오 카트 월드를 모딩해 시나모롤 같은 캐릭터를 넣었어요.
"make no mistakes"는 농담이었어요
글쓴이는 "Switch 2를 탈옥하라는 목표를 설정. 실수하지 마"라는 캡션을 달았는데, 실제 프롬프트냐는 질문이 많아 덧붙였어요. 유저랜드 코드 실행을 /goal로 설정했지만 성공하지 못했고, 탈옥 자체는 약 2주 동안 상당한 노력이 들었대요. 마리오 카트 모드만 하루 만에 바이브코딩한 재미용이에요.
하네스
- JetKVM으로 Codex가 USB로 컨트롤러 입력을 보내고 HDMI로 화면을 받아요.
- Switch 2가 멈추면 전원 버튼을 눌러야 하니 아마존의 블루투스 조명 스위치 장치를 달아 레버가 내려오며 전원 버튼을 누르게 했어요.
첫 시도: WebKit
콘솔 탈옥에서 WebKit은 흔한 표적이라 Codex도 이걸 골랐어요. 커스텀 Wi-Fi 캡티브 포털로 WebKit n-day를 불러 "네이티브 제어 흐름 탈취"를 얻었다고 주장했지만, 임의의 IPC 호출로 일반화하기는 어려웠어요. 실행 전용 메모리(XOM), PAC 포인터 서명, CFI 타입 검사가 차례로 걸림돌이었어요. 이 경로는 "곁가지 베팅"으로 두고 다른 길을 찾았어요.
SmileBASIC 경로
Switch 1 게임을 노린 이유는 두 가지예요. Switch 1은 PAC를 지원하지 않아 완화 기법이 적고, Switch 1의 신뢰 루트가 이미 뚫려 코드를 복호화해 읽을 수 있어요. 특히 3DS에서 smilehax로 뚫린 적 있는 SmileBASIC에 주목했어요.
Codex가 인터프리터에서 32비트 정수 오버플로를 찾았어요. 배열에서 항목을 지울 때 position + count <= array.length를 검사하는데, 합이 넘쳐 음수가 될 수 있었어요. 예를 들어 길이 4인 문자열 배열에 REMOVE R,&H60000000,&H3FFFFFFF를 실행하면 결과적으로 memmove(backing, backing - 8, 32)가 돼 배열 앞 8바이트를 끌어와요. 그 8바이트에는 배열 자신을 가리키는 포인터가 있어서, R[0]의 길이 필드가 거대한 값이 되고 범위 밖 읽기·쓰기가 가능해졌어요. 이후 ROP까지 얻었어요.
다음 단계
더 높은 권한의 프로세스(sysmodule)를 노려야 했어요. 코드가 없어 어느 sysmodule이 어떤 권한을 갖는지 불분명했고, 여러 Codex 인스턴스에 sysmodule 코드 실행 목표를 주자 대부분 audio와 ldn에 집중했다고 해요.
출처: pepsipu.com
OIYO는 원문을 그대로 옮기지 않아요. 요약과 본문 번역은 큐레이션 목적이며, 사실·인용은 원문 출처를 따라요.