커스텀 펌웨어

**커스텀 펌웨어**(custom firmware) 또는 **애프터마켓 펌웨어**(aftermarket firmware)는 비디오 게임 콘솔, 휴대 전화 및 다양한 임베디드 장치와 같은 장치에서 타사에서 생성한 비공식적인 새 버전 또는 수정된 버전의 펌웨어로, 새로운 기능을 제공하거나 숨겨진 기능을 잠금 해제하는 데 사용된다. 비디오 게임 콘솔 커뮤니티에서는 이 용어가 종종 **커스텀 펌웨어** 또는 단순히 **CFW**로 작성되며, 플레이스테이션 포터블, 플레이스테이션 3, 플레이스테이션 비타/플레이스테이션 TV, 플레이스테이션 4, 닌텐도 3DS, Wii U, 닌텐도 스위치와 같은 비디오 게임 콘솔 내의 원래 시스템 소프트웨어(**공식 펌웨어** 또는 단순히 **OFW**라고도 함)의 변경된 버전을 나타낸다. 일부 장치에 커스텀 펌웨어를 설치하려면 부트로더 잠금 해제가 필요하다.

## 비디오 게임 콘솔
커스텀 펌웨어는 일반적으로 서명되거나 소매용 소프트웨어만 실행하도록 허용하는 공식 펌웨어와 달리, 홈브루 애플리케이션 또는 롬 이미지 백업이 게임 콘솔 내에서 직접 실행되도록 허용하는 경우가 많다. 커스텀 펌웨어는 종종 소프트웨어 불법 복제와 관련이 있기 때문에 닌텐도와 소니그룹과 같은 콘솔 제조업체는 커스텀 펌웨어 및 기타 타사 장치와 콘텐츠가 게임 콘솔에 설치되는 것을 차단하기 위해 상당한 노력을 기울였다.

### 플레이스테이션 포터블, 플레이스테이션 3 및 플레이스테이션 비타/플레이스테이션 TV
커스텀 펌웨어는 소니에서 출시한 플레이스테이션 포터블 핸드헬드에서 흔히 볼 수 있다. 주목할 만한 커스텀 펌웨어로는 Dark_AleX의 M33과 5.50GEN 시리즈, Minimum Edition (ME/LME) 및 PRO와 같은 다른 커스텀 펌웨어들이 있다.

커스텀 펌웨어는 플레이스테이션 3 콘솔에서도 볼 수 있다. 초기 "Fat" 모델과 Slim 모델(CECH-20xx부터 초기 CECH-25xx까지)만이 커스텀 펌웨어를 실행할 수 있다. Slim 모델(후기 CECH-25xx 및 CECH-30xx)과 Super Slim 모델은 커스텀 펌웨어와 유사한 기능을 가진 HEN(Homebrew Enabler)만 실행할 수 있다. PS3용 ODE(Optical Drive Emulator), HAN(etHANol), HFW(Hybrid Firmware)도 있다.

플레이스테이션 비타/플레이스테이션 TV에는 PS Vita/PS TV의 PSP 에뮬레이터에서 실행되는 PSP용 커스텀 펌웨어인 eCFW가 있다. 이러한 eCFW에는 ARK, TN-V가 있으며, 최근에는 네이티브 측에서 해킹되어 더 많은 기능을 포함하는 Adrenaline이 있다. 2016년에 Molecule이라는 팀은 플레이스테이션 비타/플레이스테이션 TV용 HENkaku(커스텀 펌웨어와 유사한 기능을 가진 홈브루 이네이블러)를 출시했는데, 이는 버전 3.60의 PS Vita/PS TV 펌웨어를 변경하여 콘솔에 커스텀 펌웨어를 만들 수 있게 한다. 원래 HENkaku를 개발한 팀은 taiHEN도 출시했다. taiHEN은 최신 버전의 HENkaku가 실행되는 프레임워크이다. 이는 사용자가 PSP에서 익숙했던 것처럼 시스템 수준에서 플러그인을 로드하여 콘솔의 기능을 변경/추가할 수 있는 방법이다. Enso는 PS Vita/PS TV의 부트로더 취약점으로, HENkaku를 영구적으로 만들고 부팅 시 실행되도록 하여 PS Vita/PS TV가 HENkaku Enso를 포함한 완전한 CFW를 갖게 한다. 3.60 사용자도 HENkaku Enso를 잃지 않고 3.65로 업데이트할 수 있다.

### 닌텐도 3DS
닌텐도 3DS의 모딩 장면은 주로 커스텀 펌웨어(공식 펌웨어를 "즉석에서" 패치하는 소프트웨어)와 플래시 카트리지(원본 게임 카트리지를 에뮬레이트하는 것으로, 손상되지 않은 게임 카트 롬 백업을 재생하는 데만 사용할 수 있음)를 포함한다. 커스텀 펌웨어는 3DS의 보안 보조 프로세서인 ARM9에 대한 제어권을 얻기 위한 익스플로잇을 필요로 한다. 현재 가장 널리 사용되는 CFW는 Aurora Wright와 TuxSH가 개발한 Luma3DS로, 서명되지 않은 CIA(CTR Importable Archives) 설치를 허용하고, 오픈 소스로 재작성된 시스템 펌웨어 모듈 및 홈브루 소프트웨어 개발자를 위한 예외 처리를 포함한다.

다른 과거 및 중단된 CFW에는 Gateway (DRM을 통해 플래시 카트리지에 잠겨 있었고 최초로 공개된 독점 CFW), Pasta, RxTools (최초의 무료이며 널리 사용된 CFW), Cakes CFW (모듈화된 패치 접근 방식을 사용했으며 이후 CFW의 영감이 된 최초의 오픈 소스 CFW), Luma3DS가 원래 기반을 둔 ReiNAND, 그리고 Corbenik이 있었다. 현재 개발 중인 유일한 커스텀 펌웨어는 Luma3DS(이전에는 AuReiNAND로 알려짐)이다. 3DS CFW는 "EmuNAND"/"RedNAND"에 의존했는데, 이는 3DS의 NAND 메모리 사본을 포함하는 SD 카드의 비분할 공간에서 시스템을 부팅하는 기능이다. 이러한 EmuNAND는 emuNAND가 제대로 작동하지 않거나 사용할 수 없게 되어도 일반적인 시스템 NAND에는 영향을 미치지 않으므로 3DS 시스템이 벽돌이 되는 것을 방지할 수 있었다. EmuNAND는 일반적인 시스템 NAND와 별도로 업데이트할 수도 있었으므로, 사용자는 emuNAND에 최신 시스템 버전을 유지하면서 시스템 NAND에는 취약한 버전을 유지할 수 있었다. 따라서 구형 3DS 시스템 버전에서도 온라인 플레이와 닌텐도 e숍 접근이 가능했다.

EmuNAND는 부팅 시 ARM9 익스플로잇인 arm9loaderhax의 출시로 인해 구식화되었는데, 이는 사용자가 SysNAND를 안전하게 사용하고 업데이트할 수 있도록 허용했으며, CFW는 공식 업데이트가 익스플로잇을 제거하지 않도록 OS의 업데이트 코드를 패치하기 시작했기 때문이다. 그러나 이 익스플로잇은 설치에 필요한 콘솔의 고유 OTP를 얻기 위해 매우 초기 시스템 버전으로 다운그레이드해야 했다.

2017년 5월 19일, sighax라는 새로운 익스플로잇 기반이 출시되어 arm9loaderhax를 대체하고 사용자가 시스템에 대한 제어권을 훨씬 일찍 얻을 수 있게 하여 부트 롬 컨텍스트에서 코드 실행을 허용함으로써 다운그레이드나 OTP가 필요 없는 더 깨끗한 환경을 제공했다. sighax의 사용자 친화적인 버전인 Boot9Strap이 출시되었다. Sighax는 서명 파서 포인터를 스택으로 오버플로우시켜 펌웨어 이미지의 해시가 자체와 비교되도록 작동하는데, 이는 파서가 특정 필드를 검증하지 않기 때문이다.

동시에 ntrboot라는 또 다른 부트 롬 익스플로잇이 발표되었는데, 이는 부트 롬에 존재하는 백도어를 사용하여 펌웨어 버전과 관계없이 모든 3DS 콘솔에서 완전한 시스템 제어권을 얻을 수 있도록 하며(부트 롬은 업데이트할 수 없으므로), 수정된 DS 플래시 카트리지와 자석만 있으면 된다. 초기 출시는 8월 12일이었으며, AceKard 2i 및 R4i Gold 3DS RTS 카트리지를 지원했다.

### 닌텐도 스위치

현재 닌텐도 스위치 콘솔용 커스텀 펌웨어는 Atmosphère, ReiNX 및 SX OS가 존재한다. 이들 간의 차이점은 크게 중요하지 않다. Atmosphère는 활발히 개발 중이며 자유-오픈 소스 소프트웨어이다. ReiNX는 코드의 대부분을 Atmosphère에서 가져왔지만 런타임 구성 요소에 약간의 수정과 다른 부트로더를 사용한다. 반면 SX OS는 비공개 소스이며 유료이지만, 주장과는 달리 Atmosphère 코드에 크게 기반을 두고 있다.

닌텐도는 스위치 환경을 이전 콘솔보다 훨씬 더 안전하게 만들었다. 그럼에도 불구하고 사용자 익스플로잇으로 이어지는 주목할 만한 버그들이 존재한다. 이 중 엔비디아 테그라 스택 버그 ()가 가장 잘 악용되고 있다. 이는 스위치 장치의 복구 모드(RCM)를 활용하여 서명되지 않거나 검증되지 않은 페이로드를 푸시하여 사용자에게 임의 코드 실행에 대한 접근 권한을 부여한다. 이 취약점은 스위치 해킹 장면의 사용자들에 의해 펌웨어를 리버스 엔지니어링하는 데 더욱 활용되어 Nereba와 Caffeine이라는 두 가지 다른 주목할 만한 익스플로잇으로 이어졌다. RCM이 하드웨어 익스플로잇인 반면, Nereba와 Caffeine은 소프트웨어 익스플로잇이며 익스플로잇을 사용하기 위해 콘솔이 특정 펌웨어 버전 이하이어야 한다. RCM은 하드웨어와 관련되어 있으므로, 콘솔이 해당 익스플로잇에 취약한지에만 의존하며 펌웨어 요구 사항이나 범위가 없다.

엔비디아가 CVE-2018-6242를 공개함에 따라 닌텐도는 이 취약점을 해결해야 했고, 2018년 후반부터 하드웨어 패치되어 RCM 취약점에 접근할 수 없는 장치들을 제조 및 배포하기 시작했다. 이 시기 이후에 제조된 모든 장치, 즉 스위치 라이트 및 최신 "빨간 상자" 스위치를 포함하여 하드웨어 패치되었을 가능성이 높으며, 하드웨어 패치되었고 비교적 최근 펌웨어를 실행하는 모든 장치는 스위치의 비정상적으로 안전한 소프트웨어 환경으로 인해 현재 또는 미래에 커스텀 펌웨어에 접근할 수 없을 가능성이 높다. 이러한 스위치는 스위치 모딩 커뮤니티에서 일반적으로 "패치된" 스위치라고 불린다. 일반적인 방법("소프트모딩")으로는 모딩할 수 없지만, 스위치의 USB-C 포트를 제거한 후 그 자리에 모드칩을 납땜("하드모딩")하여 RCM 모드에 들어갈 필요성을 우회할 수 있다.

## 안드로이드

안드로이드에서 커스텀 펌웨어 설치는 통칭 **커스텀 롬** 또는 **안드로이드 롬** 설치로 알려져 있으며, 일반적으로 읽기 전용으로 마운트되는 안드로이드 운영체제의 시스템 파티션을 수정된 안드로이드 버전으로 교체하는 관행을 말하며, 이를 "롬 플래싱"이라고도 한다. 이 절차는 부트로더 잠금 해제를 필요로 하는데, 과거에는 일반적으로 장치 제조업체에서 지원하지 않았기 때문에 운영체제의 취약점을 악용하는 데 약간의 전문 지식이 필요했다. 그러나 약 2015년부터 모토로라, 원플러스, 구글, 샤오미 및 소니를 포함한 여러 제조업체에서 부트로더 잠금 해제를 지원한다(일부 통신사에 의해 잠금된 모델 제외). 이는 익스플로잇 없이 보안 부팅을 우회한다. 설치된 커스텀 롬은 다른 기능을 포함하거나, 전력 소모가 적거나, 사용자에게 다른 이점을 제공할 수 있다. 더 이상 공식 안드로이드 버전 업데이트를 받지 않는 장치도 계속 업데이트될 수 있다. 그러나 일부 커스텀 롬은 휴대폰의 모든 기능을 제대로 지원하지 못할 수도 있다.

## 기타 장치
디지털 카메라, 무선 라우터, 스마트 TV 등 다양한 다른 장치도 커스텀 펌웨어를 실행할 수 있다. 이러한 커스텀 펌웨어의 예시는 다음과 같다.
* 포터블 미디어 플레이어용 락박스
* 아이팟 포터블 미디어 플레이어용 아이팟리눅스
* 캐논 디지털 카메라용 CHDK 및 매직 랜턴
* 니콘 EXPEED DSLR용 Nikon Hacker 프로젝트
* 컴퓨터용 코어부트 및 Libreboot
* 다양한 타사 무선 라우터 펌웨어 프로젝트, 다음을 포함한다.
** Ben Nanonote, Buffalo WZR-HP-G300NH 및 최소 리소스가 있는 기타 컴퓨터용 LibreWRT 프로젝트
** OpenWrt 및 DD-WRT와 같은 파생 제품
** RouterTech, Pspboot 또는 Adam2 부트로더가 있는 텍사스 인스트루먼츠 AR7 칩셋 기반 비대칭 디지털 가입자 회선 게이트웨이 라우터용
* 케이블 모뎀의 uncapping을 위한 Cable Hack 및 Sigma, 그러나 합법성에는 의문이 있다
* DVD 드라이브를 지역 제한 없음으로 허용하는 펌웨어
* 삼성그룹 스마트 TV용 수정 펌웨어인 SamyGO

## 각주

분류:커스텀 펌웨어
분류:비디오 게임 개발