2026년 9월 말, Relapse라는 이름의 익스플로잇 체인 코드가 GitHub에 공개되었다. 이 프로젝트는 이례적으로 방대한 영향 범위를 달성했다. PS5의 7.00부터 13.60에 이르는 전 펌웨어 방어선을 일거에 관통한 것이다. 6년에 걸친 시스템 진화 과정에서 소니는 저수준 구성 요소를 끊임없이 보완하고 패치해왔으나, 이번 공격 체인은 견고한 암호화 계층을 정면으로 공략하지 않았다. 언뜻 평범해 보이는 두 개의 논리적 결함을 연결하여 기기 전체의 읽기 및 쓰기 권한을 직접 확보했다.
배열 하나를 오염시켜 샌드박스를 뚫다
돌파구는 엄격히 제한된 브라우저 환경에서 발생했다. Relapse 체인의 첫 단계는 브라우저 자바스크립트 엔진의 정보 유출과 구조화된 복제(structured clone) 과정의 객체 풀 불일치를 결합하여 특정 데이터 구조를 오염시키는 것이었다.
이 과정은 보관함 관리 시스템의 논리적 오류에 빗댈 수 있다. 시스템이 방금 반납된 사물함을 새 손님에게 즉시 배정했음에도, 이전 손님의 보관증으로 여전히 그 문을 열 수 있는 상황과 같다. 메모리 관점에서 공격자는 이러한 객체 혼동을 통해 타입화된 배열(typedarray)의 내부 상태를 정밀하게 덮어썼다. 이 배열을 제어한다는 것은 브라우저 샌드박스 내부에서 주변 메모리 데이터를 마음대로 변조할 수 있는 만능 열쇠를 쥔 것과 다름없었다.
그림: PS5 본체와 DualSense 컨트롤러. 출처: Wikimedia Commons
단순한 메모리 오염 하나만으로는 기기 전체를 무너뜨릴 수 없다. 그러나 이러한 오염이 시스템 경계의 도약대에서 일어나는 순간, 방어선의 가장 바깥쪽 울타리는 이미 해체된 셈이다. 오염된 메모리를 발판 삼아 공격자는 브라우저 영역 내부에서 후속 실행 환경을 전개하기 시작했다.
마이크로초 단위의 레이스를 낚아채 커널을 관통하다
브라우저 내의 경계 침범은 첫 번째 디딤돌에 불과했다. 콘솔 전체에 대한 완전한 제어권을 획득하려면 하위 커널로의 권한 상승이 필수적이었다. Relapse 체인의 두 번째 단계는 시스템 커널 내의 비동기 I/O 대기 메커니즘(aio_multi_wait)을 겨냥했다.
공격자는 이전 단계에서 획득한 커널 주소 유출을 활용하여 시스템 심층부에서 ‘해제 후 사용(UAF, Use-After-Free)’ 경쟁 상태(Race Condition)를 촉발했다. 시스템이 중요한 메모리 영역을 정리하여 회수하려는 바로 그 찰나, 공격자는 마이크로초 단위의 극히 짧은 타이밍 틈새를 파고들어 시스템이 제어권을 되찾기 전에 해당 영역을 재점유했다. 단독으로는 기껏해야 프로세스 충돌만 일으켰을 두 개의 독립적인 메커니즘 결함이 한 치의 오차도 없이 맞물려 돌아갔다.
그림: PS5 메인보드. 공격 접점은 궁극적으로 시스템 관리와 커널 영역으로 이어진다. 출처: Wikimedia Commons
현대 방어 체계는 단일 지점에 대한 정면 돌파에는 강력하지만, 복잡한 시스템 내부의 상태 전이 과정은 완벽히 밀폐하기가 가장 까다로운 영역이다. 두 개의 평범한 결함이 중첩되자, 저수준에 구축된 엄격한 암호화 검증 모듈들이 모두 무력화되었다.
십여 명의 연구자가 릴레이로 완성한 저수준 통로
6년 치의 펌웨어 방어선을 뚫어낸 이 공격 체인은 한 개인의 고립된 발견으로 이루어진 것이 아니다. 프로젝트의 감사의 글에는 이 연구 계보에서 핵심 조각을 기여한 십여 명의 개발자 이름이 빼곡히 적혀 있다. 초기 브라우저 취약점 발굴부터 중기 커널 주소 탐색, 그리고 최종 ELF 로더 통합에 이르기까지 체인의 모든 고리는 각기 다른 시기에 서로 다른 연구자들의 손을 거쳐 검증되었다.
방어자가 마주한 것은 더 이상 고정된 단일 해커가 아니라, 분산된 오픈소스 생태계 자체였다. 누군가 구조화된 복제의 불일치 메커니즘을 발견하자, 몇 달 뒤 다른 연구자가 이를 커널 동시성 문제와 연결했다. 시스템 방어가 논리적으로 단 한 곳의 틈새라도 남겨두면, 커뮤니티의 릴레이 연구가 그 틈을 지속적으로 파고들어 결국 가장 깊은 곳까지 닿는 완전한 통로를 구축해내고 만다.
무한 재부팅으로 맞서는 시스템급 방어선
Relapse 프로젝트 문서에서 저자들은 이 공격 체인의 높은 실패율을 굳이 숨기지 않는다. 브라우저 단계에서는 페이지가 멈출 수 있으며, 이때의 유일한 해결책은 새로고침뿐이다. 커널 단계로 진입하면 본체가 심각한 오류를 일으키며 전원이 강제로 차단될 확률이 존재하므로, 기기를 강제 재부팅하여 처음부터 다시 시도해야 한다.
그러나 공격자는 무수한 실패를 감당할 수 있다. 반복적인 재부팅 속에서 단 한 번만 올바른 메모리 주소에 적중하면 체인이 완성되고, 콘솔에 ELF 로더가 실행되어 후속 명령을 대기하게 된다. 방어자 입장에서는 100만 번의 방어에 성공하더라도 단 한 번의 타이밍 경쟁을 놓치는 순간 기기 전체의 제어권을 넘겨주게 된다. 매년 조여온 소니의 펌웨어 방어선은 확률론에 기반하여 끊임없이 시행착오를 거듭하는 공격 프레임워크와 마주해야 했다.
취약점 발굴 생태계의 변질과 베테랑들의 퇴장
기술 커뮤니티의 반응은 공격과 방어의 또 다른 이면을 드러냈다. 커뮤니티 토론에서 한 베테랑 연구자는 취약점 발굴 생태계의 변질을 이유로 들며 자신이 이미 이 씬에서 떠났음을 털어놓았다.
다수의 신규 유입 인원이 자동화 도구와 AI 모델에 의존하여 얕은 논리적 결함을 대량으로 찾아내고, 검증 즉시 외부에 공개해버리는 경향이 짙어졌다. 이러한 잦은 노출로 인해 취약점이 심층 연구에 활용되기도 전에 플랫폼 측이 신속하게 패치를 배포하여 경로를 차단한다. 오랜 시간을 들여 깊이 파고드는 연구 방식이 이러한 인스턴트식 결과물로 인해 맥이 끊기고 있는 것이다.
커뮤니티가 이러한 생태계 변화를 겪은 것은 이번이 처음이 아니다. 과거 PS5 환경에 리눅스를 이식하는 작업을 이끌던 핵심 개발자가 떠날 때도 유사한 인력 구조 변화에 대한 토로가 있었다. 6년간의 펌웨어 방어선이 두 개의 메커니즘 결함에 뚫린 사건은, 보안의 승패가 암호화의 단단함이 아닌 복잡한 시스템의 상태 관리에 달려 있음을 보여준다. 평범한 메모리 불일치를 엮어 방어선을 돌파하는 스택 전술은 보안 공방의 진화 속도 자체를 바꾸고 있다.
참고 링크:
- GitHub Relapse-Exploit
- HN 토론
- Wikimedia Commons