AI Briefing

Codex가 삼성 TV를 해킹했다

·2026.04.16 19:44

핵심 내용

브라우저 foothold에서 physmap primitive로 root까지 올렸다.

자세히 보기

Samsung TV의 browser foothold에서 시작해, 매칭되는 KantS2 소스와 라이브 디바이스를 함께 검증하며 root까지 올린 과정을 정리한다.

초기 조건은 다음과 같다.

  • TV 안의 browser application context에서 이미 코드 실행이 가능했다.
  • 별도 controller host가 ARM 바이너리 빌드, HTTP 호스팅, tmux send-keys 기반 셸 제어를 담당했다.
  • Samsung Tizen의 UEP 때문에 unsigned 바이너리는 디스크에서 직접 실행할 수 없어, memfd wrapper로 메모리에서 실행했다.
  • 대상은 static ARMv7 바이너리를 요구했다.

탐색 목표는 단순한 PoC가 아니라, 소스상 취약점이 실제 디바이스에서도 존재하고 browser user context에서 reachable한지 끝까지 확인하는 것이었다. /proc/iomem 접근이 막히자, /proc/cmdline의 mem=400M@32M mem=256M@512M mem=192M@2048M 정보를 이용해 물리 메모리 구간을 재구성했다.

핵심은 /dev/ntksys였다.

  • udev rule이 MODE="0666"로 설정돼 있어 unprivileged 접근이 가능했다.
  • ST_SYS_MEM_INFO 구조체의 u32Start, u32Size를 user space가 직접 지정한다.
  • SET_MEM_INFO는 슬롯 인덱스만 검사하고, 물리 주소 범위의 적절성은 검증하지 않는다.
  • mmap 경로에서는 선택된 슬롯의 PFN을 그대로 vk_remap_pfn_range에 넘겨 물리 메모리를 매핑한다.

보조 primitive로는 /dev/ntkhdma가 유용했다.

  • KER_HDMA_IO_GET_BUFF_ADDR가 DMA 버퍼의 physical address를 user space에 그대로 반환했다.
  • 이 주소를 ntksys로 매핑해 읽기/쓰기가 실제로 되는지 검증할 수 있었다.
  • 확인 결과, 0x84840000 같은 물리 주소에서 읽기와 쓰기가 모두 가능했다.

이후 공격은 kernel control-flow exploit이 아니라 data-only escalation으로 전개됐다. /proc/cmdline에서 얻은 메모리 구간을 스캔해 browser process의 cred 구조를 찾고, UID/GID 필드를 0(root)으로 패치한 뒤 /bin/sh를 실행했다.

최종 실행에서는 물리 메모리 범위를 순회하며 cred 패턴을 찾아 패치했고, 결과적으로 uid=0(root) 셸을 얻었다. 전체 세션은 AI가 현실적인 post-exploitation position에서 source audit, primitive 확인, PoC 작성, 원격 배포, 디버깅, 최종 권한 상승까지 이어갈 수 있음을 보여준다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.