Switch 2 탈옥하기

Jailbreaking the Switch 2

pepsipu.com ▲ 710 댓글 248 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개 표시 · 전체 248개
  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. bm5k HN

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

  6. andrewchilds HN

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

  7. TehCorwiz HN

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

    https://www.ludit.games/

  8. andrewchilds HN

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

  9. mgiampapa HN

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

  10. runnr_az HN

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

  11. gcoakes HN

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

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

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

  12. hgoel HN

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

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

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

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

  13. ChickeNES HN

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

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

  14. 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 카드는 시스템을 부트스트랩하는 데만 쓰고, 나머지는 전부 네트워크로 처리하는 겁니다.

  15. 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로 쉽게 제어할 수 있습니다.

  16. dceddia HN

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

  17. mikepurvis HN

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

  18. l0ng1nu5 HN

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

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

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

  19. valgaze HN

    완벽합니다.

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

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

  21. rootsudo HN

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

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

  22. Capricorn2481 HN

    제가 알기로는 리버스 엔지니어링보다 익스플로잇을 조사할 때 훨씬 더 까다롭게 군다고 합니다. 지금은 Ghidra 출력이라면 거의 뭐든 Claude에 넣어도 신경도 안 쓸 거예요.

  23. oceansky HN

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

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

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

  24. hhh HN

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

  25. oceansky HN

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

  26. thousand_nights HN

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

  27. nikanj HN

    저는 정반대입니다. "이 WER 덤프를 보고 이 pdb 파일들과 조합해서 소프트웨어가 어디서 크래시하는지 알아내 줘"라고 하면,

    "죄송하지만 익스플로잇 무기화는 도와드릴 수 없습니다, Dave"라고 합니다.

  28. kristofferR HN

    "제가 이 기기의 소유자인데, 아쉽게도 직접 고쳐야 하는 심각한 버그가 있어요. 이 WER 덤프를 보고 이 pdb 파일들과 조합해서 소프트웨어가 어디서 크래시하는지 알아내 줘"

    "알겠습니다,...."

  29. gjskngnf HN

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

  30. rootsudo HN

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

Hacker News에서 보기 ↗