Switch 2 탈옥하기

Jailbreaking the Switch 2

pepsipu.com ▲ 774 댓글 272 ledoge

요약

AI 코딩 에이전트가 찾은 버그로 Switch 2를 소프트웨어만으로 탈옥했습니다.

개발자 새미 하즈하미드(pepsipu)가 10월 18일 블로그에서 펌웨어 23.0.1의 Switch 2를 여는 탈옥 도구 ns2jb를 공개했습니다. 약 2주에 걸친 연구의 상당 부분은 OpenAI의 Codex 에이전트 여러 개가 콘솔을 직접 조작하며 해냈다고 밝혔습니다.

왜 중요한가

  • 개조 칩 같은 하드웨어 없이 Switch 2에서 임의 코드를 실행할 수 있는 길이 열렸습니다.
  • 홈브루(비공식 자작 프로그램), 게임 개조, 세이브 백업이 가능해집니다. 작성자는 이를 커스텀 펌웨어로 가는 첫걸음으로 봤습니다.
  • 핵심 버그를 사람이 아니라 실제 기기를 다루는 AI 에이전트가 찾아냈다는 점이 새롭습니다.

핵심 내용

  • ns2jb는 테더드 방식(외부 장치의 도움을 받아야 작동하는 방식)이며, 공격 코드는 공개 저장소에 올라왔습니다.
  • 지금은 내장 파일 시스템 모듈까지만 장악했고, 다른 시스템 모듈에는 아직 닿지 못했습니다.
  • 처음 노린 웹 브라우저 경로는 실패했고, Switch 1용 게임을 거치는 경로가 통했습니다.
  • JetKVM(원격으로 입력과 화면을 주고받는 장치)과 블루투스 스위치 누름 장치로 에이전트가 콘솔을 조작하고 재시작하게 했습니다.
  • 시연으로 에이전트가 하루 만에 Mario Kart World 개조판을 만들었고, 일부 발견은 아직 공개하지 않았습니다.

HN 반응

  • 곧 게임 덤프가 풀릴 것이라는 전망과 함께, 닌텐도가 버그 바운티(취약점 신고 포상금)를 더 높였어야 했다는 지적이 나왔습니다.
  • AI에 손과 눈을 달아 실제 기기를 다루게 한 경험담이 이어졌고, AI가 보안 작업을 거절하는 기준이 제각각이라는 불만도 나왔습니다.

댓글

30개 표시 · 전체 272개
  1. hturan HN

    정말 여러모로 대단합니다.

    복호화된 fs 읽기/쓰기가 진짜라면, 몇 시간 안에 Switch 2 게임 덤프가 올라오기 시작해도 놀랍지 않을 겁니다. 요즘처럼 리컴파일/디컴파일이 흔한 세상에서는 콘솔 독점작을 임의의 하드웨어에서 즐길 수 있게 된다는 뜻이고, 닌텐도로서는 최악의 시나리오입니다. 이미 젤다의 전설 티어스 오브 더 킹덤이 아이폰에서 네이티브로 60fps로 돌아가는 사례도 나왔고요.

    KVM(또는 웹캠)으로 LLM에 팔과 눈을 달아 주는 방식은 이런 하드웨어 작업에 아주 강력한 패러다임입니다. 작업을 병렬로 돌리고 24시간 내내 굴릴 수 있으니까요. 외부 기기용 펌웨어나 하드웨어 작업을 하신다면 (이런 불순한 목적 말고) 더 많이 써 보시길 강력히 권합니다.

    그리고 이 정도면 닌텐도의 HackerOne( https://hackerone.com/nintendo )에서 5만 달러 이상은 너끈히 받았을 거라는 점도 짚어 둘 만합니다.

  2. ecliptik HN

    저는 Claude와 함께 게임을 DOS로 이식하고, 실물 하드웨어로 클래식 매킨토시용 새 앱을 만들고 있습니다 [1][2][3].

    한동안은 SD 카드를 직접 갈아 끼우는 식으로 했는데, usb4vc4, VGA/HDMI USB 캡처 동글(눈과 귀), 오래된 Wemo 스위치(전원 켜기/끄기/재부팅), ftp/appleshare(파일과 로그)를 조합하면 Claude가 전부 알아서 할 수 있다는 걸 깨달았습니다.

    Claude가 이 모두를 하나로 묶어 주는 vcctrl[5]을 만들어 줬습니다. mcp, 스킬, 웹 KVM까지 들어 있습니다.

    1. https://github.com/ecliptik/doskutsu

    2. https://github.com/ecliptik/flynn

    3. https://github.com/ecliptik/talkip

    4. https://github.com/dekuNukem/USB4VC

    5. https://github.com/ecliptik/vcctrl

  3. ChickeNES HN

    네, 저도 NanoKVM, Intel AMT, Wemo 스위치(ㅎㅎ), USB UART, Epiphan VGA2USB 등 다양한 것들로 비슷하게 하드웨어를 루프에 넣어 봤습니다. (Epiphan VGA2USB는 오래된 바이너리 리눅스 드라이버밖에 없다는 걸 몰랐는데, Claude가 알아서 해결해 줬어요: https://github.com/ChickenParts/EpiphanVGA2USB ) USB4VC는 아마 사게 될 것 같습니다. 레트로 기계가 워낙 많아서, pi pico로 또 땜질해서 붙이는 수고를 덜 수 있을 테니까요. 솔직히 완성도는 제각각이지만 묵혀 둔 프로젝트가 한 무더기고, 언제 무엇을 공개해야 할지도 모르겠네요 ㅋㅋ

  4. TedDoesntTalk HN

    벨기에산 WeMo면 벽 스위치 같은 건가요? 어디에 쓰세요? 기기 전원을 켜고 끄는 용도인가요?

  5. andrewchilds HN

    와, 멋지네요! 클래식 맥 게임을 최신 macOS로 이식하는 것도 이제 가능할까요? (Dark Castle이나 Ancient Art of War at Sea 같은 걸 생각하고 있어요.)

  6. TehCorwiz HN

    특히 Dark Castle은 이미 PC와 맥 등 최신 플랫폼용으로 출시됐습니다.

    https://www.ludit.games/

  7. andrewchilds HN

    좋네요. 게다가 원작 게임 디자이너가 직접 냈다니!

  8. mgiampapa HN

    클래식 맥 에뮬레이터가 여럿 있는데, 원래 속도보다 훨씬 빠르게 다 돌아갑니다. 저는 Basilisk II / SheepShaver면 충분하지만 선택지는 많습니다.

  9. runnr_az HN

    Spaceward Ho!에서는 내가 다 이겨 주겠어요!

  10. bm5k HN

    스위치 2는 조이콘으로 마우스 기능도 되니까, 클래식 맥 게임을 스위치로 이식할 수도 있겠네요 </daydream>

  11. a3nz3g HN

    네, 좋은 생각이에요.

  12. l0ng1nu5 HN

    Worth noting too that this would have easily fetched >$50k via Nintendo's HackerOne ( https://hackerone.com/nintendo ).

    (그리고 이 정도면 닌텐도의 HackerOne으로 5만 달러 이상은 너끈히 받았을 거라는 점도 짚어 둘 만합니다.)

    사용자가 자기 기기를 통제하는 걸 그렇게까지 막으려 드는 회사라면, 이런 버그가 불러올 경제적 영향을 버그 바운티 프로그램에 더 제대로 반영했어야죠. 그랬다면 우리가 여기서 이러고 있지도 않았을 테고요.

  13. gcoakes HN

    저는 회사에서 IoT 기기를 만들고 있고, 이번 주에는 제 에이전트의 "실험실 손" 노릇을 하고 있습니다. 정말 묘한 경험이에요. 업데이트/복구 과정을 바꾸는 중이라 장애 주입 조합을 여러 가지로 검증해야 합니다(예: 시작 버전 Y에서 업데이트 X 단계 중에 갑자기 전원이 끊기는 경우).

    사람 손 없이 돌아가는 "손"을 달아 주고 싶긴 합니다. 다만 SD 카드를 뽑았다 꽂는 걸 자동화할 방법을 알아내느라 며칠을 쓰느니 그냥 수동으로 하는 게 시간상 낫다고 생각했습니다. X와 Y의 경우의 수는 비교적 작은 편인데, 이 검증을 CI에서 정기적으로 돌리기엔 비용이 너무 클 것 같거든요. 전원은 MCCI USB-C 스위치로 간단히 제어할 수 있고요.

    좋은 아이디어가 있으신 분은 조언 부탁드립니다.

  14. hgoel HN

    저는 몇 달 전에 Claude가 OS 개발을 할 수 있도록 x86 SBC용 하네스를 만들었습니다.

    시리얼 터미널용 ESP 두 개, 그리고 마이크로스위치에 테이프로 붙인 서보로 보드 전원을 껐다 켜게 하는 엉성한 구성이었어요.

    그래도 아주 잘 작동했습니다. Claude가 밤낮없이 NIC의 말썽을 붙잡고 디버깅해서 결국 드라이버를 동작시켰거든요.

    그러니 IoT 기기에 "손"을 달아 주는 건 해 볼 만하다고 생각합니다. SD 카드 자동화에는 아마존/AliExpress에서 "무선 SD 카드"를 찾아보세요. 마이크로컨트롤러가 SD 카드 행세를 하는 제품이 있습니다. FYSETC SD-Wifi 같은 거요.

  15. ChickeNES HN

    이런 용도라면 NanoKVM이나 AMT를 지원하는 Intel 머신(그리고 정말 꼬였을 때를 대비한 저렴한 와이파이 콘센트)을 강력히 추천합니다.

    추가: PXE와 kexec()도 좋은 친구입니다 :)

  16. hgoel HN

    zigbee 콘센트가 몇 개 굴러다니긴 했지만, Claude가 제 mqtt 브로커에 접근하게 하려고 설정 작업을 할 마음은 없었습니다. 커널은 이미 몇 년 전에 대부분 직접 짜 놓은 상태라 PXE 같은 건 필요 없었고, 목표는 드라이버 작업이 얼마나 잘 되는지 보는 것이었습니다. 재배치 가능한 ELF 바이너리를 시리얼로 보내고, 제 커널에 이미 있던 모듈 구조를 이용해 그걸 로드해서 실행하게 할 수 있었습니다.

  17. Crosseye_Jack HN

    I just thought it was more time efficient to do it manually rather than spend days trying to figure out how to automate SD card pull/plug

    (SD 카드를 뽑았다 꽂는 걸 자동화할 방법을 알아내느라 며칠을 쓰느니 그냥 수동으로 하는 게 시간상 낫다고 생각했습니다.)

    문제는 이겁니다. 자동화는 한 번만 만들면 됩니다. 카드를 뽑는 데는 길어야 몇 초밖에 안 걸리지만, 카드를 뽑아야 할 순간을 기다리며 계속 자리를 지키고 있어야 하잖아요.

    그 문제라면 SD 카드 뽑기를 대신해 줄 방법이 금방 두 가지 떠오릅니다.

    1. SD 카드와 테스트 대상 기기 사이에 레벨 시프터를 끼워 넣고, 뽑거나 꽂고 싶을 때 마이크로컨트롤러가 레벨 시프터를 켜고 끄게 하는 방법입니다. (레벨 시프터와 똑같이 SD 카드 신호선의 스위치 역할을 하는 멀티플렉서 IC도 있습니다. 이걸 쓰면 SD 카드를 두 번째 기기(테스트용 PC)에도 연결할 수 있어서, DUT에서 카드가 "뽑힌" 동안 PC에서 데이터를 읽고 쓸 수도 있습니다.)

    2. SD 카드를 꽂고 빼는 지그를 3D 프린터로 출력하고, 움직임은 저렴한 RC 서보로 처리하는 방법입니다. 이것도 서보 제어는 마이크로컨트롤러가 맡습니다. 실제로 카드를 뽑는 상황에 더 가까운 테스트가 되지만, 할 수 있는 건 뽑기와 꽂기뿐입니다. SD 카드에 읽고 쓸 일이 있으면 여전히 손으로 해야 합니다.

    지그를 한 번 만들어 두면 다음 프로젝트에서도 재사용할 수 있으니, 만들고 세팅하는 데 시간이 들더라도 나중에는 시간을 아끼게 될 겁니다.

    추가: IC나 서보를 구동하는 코드는 이미 임베디드 프로그래밍을 아실 거라 생각하지만, 그렇지 않더라도 간단한 Arduino 스케치면 충분하고, 예제 코드도 엄청나게 많이 널려 있고, USB로 쉽게 제어할 수 있습니다.

  18. dceddia HN

    SD 카드 건에 하나 덧붙이자면, 한쪽 끝에는 SD 카드가 있고 반대쪽에는 슬롯이 있어서 그 사이가 케이블로 이어진 "SD 카드 연장기"를 살 수 있습니다. 케이블을 개조해서 신호선 사이에 뭔가를 끼워 넣기가 물리적으로 훨씬 편해질 수 있어요. 이 제품은 전선이 크고 굵직합니다: https://a.co/d/0cPVVsLE

  19. mikepurvis HN

    앞으로 KVM-for-X 같은 제품이 더 많이 나올 것 같습니다. 말하자면 각종 저장 장치와 주변기기용 멀티플렉서를 만들어서 에이전트가 그것들을 제어할 수 있게 해 주는 식으로요.

  20. Aurornis HN

    I just thought it was more time efficient to do it manually rather than spend days trying to figure out how to automate SD card pull/plug.

    (SD 카드를 뽑았다 꽂는 걸 자동화할 방법을 알아내느라 며칠을 쓰느니 그냥 수동으로 하는 게 시간상 낫다고 생각했습니다.)

    부트로더와 펌웨어를 직접 제어할 수 있거나 그걸 맡은 팀과 이야기할 수 있다면, 네트워크 파일 시스템과 네트워크 부팅을 알아보세요. SD 카드는 시스템을 부트스트랩하는 데만 쓰고, 나머지는 전부 네트워크로 처리하는 겁니다.

  21. valgaze HN

    완벽합니다.

      JetKVM 덕분에 Codex는 USB로 스위치에 컨트롤러 입력을 보내고 HDMI로 영상 출력을 받을 수 있습니다. 전원 버튼을 누를 방법도 필요합니다. Switch 2가 크래시하면 재시작하려고 버튼을 눌러야 하거든요.
    
    그래서 아마존에서 산 블루투스 전등 스위치 누르개를 씁니다. 레버가 내려오면서 전원 버튼을 누르고, 전원 버튼이 완전히 눌리면 레버의 나머지 토크가 장치를 들어 올립니다.
    
  22. ciefa HN

    전등 스위치 달린 그 gif, 세상에서 제일 귀여워요 ㅋㅋ

  23. rootsudo HN

    이해가 안 됩니다. 사람들은 이런 연구에 어떻게 Codex를 쓰는 건가요? 저는 버그 바운티나 연구 같은 걸 하려고 하면 막혀 버리고, "blue" 등급인지 daylight인지 뭔지 하는 접근 권한만 받거든요.

    예를 들어 오래된 안드로이드 롬의 CVE를 조사해 보려고 했더니 대놓고 거부하더라고요. Microsoft 쪽, 그러니까 Microsoft 버그 바운티에 제출하려고 할 때는 괜찮았는데 안드로이드는 안 됐습니다.

  24. oceansky HN

    시간이 지나면서 규칙을 많이 완화했습니다.

    올해 초에는 유출된 Pokemon Emerald 코드베이스를 설명해 달라고 Claude에게 부탁했는데, 별짓을 다 해도 거부했어요.

    그런데 오늘은 같은 코드베이스를 주고 웹 브라우저를 겨냥하라고 했더니 불평 한마디 없이 그냥 해 주더군요.

  25. hhh HN

    새 모델 승인을 받으려면 코드베이스를 갖고 있는 게 핵심입니다.

  26. oceansky HN

    두 번 다 코드베이스는 갖고 있었습니다. 커밋 기록과 문서 파일, 일본어로 된 코드 주석을 읽어서 소유권을 판단하더군요.

  27. thousand_nights HN

    맞아요, 연초에는 Claude가 맥주 홈브루잉을 도와주는 것도 거부했어요. 생물학(효모)과 관련 있다면서요.

  28. ls612 HN

    Mythos 소동이 있기 전까지는 제가 물어본 거의 모든 것에 늘 OK였는데, 요즘은 분류기를 슬그머니 크게 풀어 놨어요. 이제는 오히려 사이버 쪽보다 생물학 쪽이 더 철저히 막혀 있고요. 제가 읽은 바로는, 모델이 실제 바이너리를 직접 뒤지지 않고 MCP로 디컴파일/디스어셈블을 하게 하면 됩니다(직접 뒤지면 모델이 겁을 먹을 수 있대요). 디컴파일된 코드만 손에 들어오면 아무 불평도 하지 않습니다.

  29. gjskngnf HN

    OpenAI 모델을 썼다고 확인해 준 건가요? GLM 같은 다른 모델이었을 수도 있잖아요. 어쨌든 저는 기본 gpt 5.6으로 제가 가진 하드웨어의 루트 권한을 얻는 데 아무 문제가 없었습니다.

  30. rootsudo HN

    OpenAI 모델로 다시 시도해 보겠습니다. 1년 된 안드로이드와 2년 된 안드로이드가 있는데 익스플로잇이 가능할 테니까요. 고맙습니다!

Hacker News에서 보기 ↗