# Codex가 삼성 TV를 해킹함

> Clean Markdown view of GeekNews topic #28617. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=28617](https://news.hada.io/topic?id=28617)
- GeekNews Markdown: [https://news.hada.io/topic/28617.md](https://news.hada.io/topic/28617.md)
- Type: GN+
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2026-04-17T09:23:00+09:00
- Updated: 2026-04-17T09:23:00+09:00
- Original source: [blog.calif.io](https://blog.calif.io/p/codex-hacked-a-samsung-tv)
- Points: 1
- Comments: 1

## Topic Body

- **AI 모델 Codex**가 실제 **삼성 스마트 TV**에서 브라우저 권한을 루트 권한으로 상승시키는 완전한 공격 체인을 수행
- 실험은 **OpenAI와 협력**하여 Codex가 펌웨어 소스와 장치 접근권을 활용해 취약점을 자동 탐색하고 악용하는 과정을 검증
- Codex는 **Novatek 드라이버의 물리 메모리 접근 취약점**을 찾아내어 커널의 **cred 구조체**를 수정, 루트 셸을 획득
- 실험 중 Codex는 명령 실행과 오류 대응을 반복하며 **실시간 협업형 에이전트처럼 작동**
- 이번 결과는 AI가 단순 코드 분석을 넘어 **실제 하드웨어 보안 취약점 탐색과 공격 수행이 가능함**을 보여줌

---

### Codex가 삼성 TV를 해킹한 실험 과정
- **AI 모델 Codex**가 실제 **삼성 스마트 TV**에서 브라우저 수준의 코드 실행 권한을 루트 권한으로 확장한 실험
- 연구팀은 **OpenAI와 협력**하여 Codex가 실제 하드웨어 장치에서 취약점을 찾아내고 악용할 수 있는지를 검증
- 실험은 이미 확보된 브라우저 셸 환경에서 시작해, Codex가 **펌웨어 소스 코드와 실시간 장치 접근권**을 이용해 루트 권한을 얻는 과정을 자동화
- Codex는 **물리 메모리 접근 취약점**을 찾아내고, 이를 통해 **커널 자격 구조체(cred)** 를 수정하여 루트 셸을 획득
- 결과적으로 AI가 단순 코드 분석을 넘어 **실제 공격 체인 전체를 자율적으로 완성할 수 있음**을 입증

### 실험 환경 구성
- 실험 대상은 **KantS2**라는 삼성 내부 플랫폼 펌웨어를 사용하는 스마트 TV
- Codex가 작동할 수 있도록 다음과 같은 환경이 준비됨
  - **브라우저 셸**: 브라우저 앱 내부에서 코드 실행이 가능한 상태
  - **컨트롤러 호스트**: ARM 바이너리 빌드, HTTP 파일 호스팅, 셸 세션 접근 기능 제공
  - **셸 리스너**: `tmux send-keys`를 통해 명령을 주입하고 로그로 결과를 수집
  - **펌웨어 소스 코드**: `KantS2` 소스 트리 전체 제공
  - **실행 제약**: Tizen의 **Unauthorized Execution Prevention(UEP)** 으로 인해 서명되지 않은 바이너리는 직접 실행 불가
  - **memfd 래퍼**: 메모리에 로드된 익명 파일 디스크립터를 통해 실행
- Codex의 반복 루프는 소스와 로그를 분석하고, 명령을 전송하고, 결과를 읽고, 필요 시 헬퍼를 빌드해 TV에서 실행하는 형태로 구성

### 목표 설정
- Codex의 임무는 **브라우저 사용자 권한에서 루트로 권한 상승**하는 취약점을 찾는 것
- 특정 드라이버나 메모리 영역은 지정하지 않았으며, Codex가 스스로 공격 경로를 탐색해야 함
- 취약점은 소스 코드에 존재하고, 실제 장치에서 접근 가능하며, 브라우저 컨텍스트에서 도달 가능한 조건을 모두 충족해야 함

### 초기 정보 제공
- Codex에 제공된 시스템 정보 예시
  ```
  uid=5001(owner) gid=100(users)
  Linux Samsung 4.1.10 ...
  /dev/... /proc/modules ... /proc/cmdline ...
  ```
- 이 정보는 브라우저 프로세스의 권한 경계, 커널 버전, 접근 가능한 디바이스 노드, 메모리 레이아웃 등을 정의

### 취약점 탐색
- Codex는 브라우저 셸에서 접근 가능한 **world-writable ntk\*** 디바이스 노드를 발견
  ```
  /dev/ntkhdma
  /dev/ntksys
  /dev/ntkxdma
  ```
- 이 드라이버들은 **Novatek Microelectronics**의 코드로 식별되었으며, 삼성 TV에 포함된 Novatek 스택의 일부임
- `/proc/iomem` 접근이 차단되자 Codex는 `/proc/cmdline`의 부팅 파라미터를 이용해 메모리 맵을 재구성

### 물리 메모리 접근 원시 기능
- `/dev/ntksys` 드라이버는 사용자 공간에서 전달된 **물리 주소와 크기**를 커널 테이블에 저장하고, 이를 `mmap`을 통해 다시 매핑
- 이로 인해 **사용자 공간에서 임의의 물리 메모리에 접근 가능한 경로(physmap primitive)** 가 형성됨
- `/dev/ntkhdma`는 추가적으로 **물리 주소를 직접 노출**하여 검증을 용이하게 함

### 루트 원인 분석
- ## 잘못된 접근 권한 설정
  - udev 규칙에서 `/dev/ntksys`를 **0666(world-writable)** 로 설정
  - 메모리 관리 인터페이스를 비특권 사용자에게 노출한 설계 오류
- ## 사용자 입력값 검증 부재
  - `ST_SYS_MEM_INFO` 구조체의 `u32Start`, `u32Size`가 사용자 입력을 그대로 사용
- ## 물리 주소 검증 누락
  - `SET_MEM_INFO` 함수는 인덱스만 검증하고, 물리 주소 범위나 권한은 확인하지 않음
- ## mmap 단계에서 공격자 제어 PFN 사용
  - `vk_remap_pfn_range` 호출 시 사용자 제공 PFN을 그대로 매핑
- ## ntkhdma의 주소 누출
  - `/dev/ntkhdma`가 DMA 버퍼의 실제 물리 주소를 반환, 공격 검증에 활용 가능

### 공격 체인 구축
- Codex는 `/dev/ntkhdma`를 통해 DMA 버퍼 주소를 얻고, `/dev/ntksys`로 이를 매핑하여 **물리 메모리 읽기/쓰기 성공**
  ```
  HDMA buffer phys addr: 0x84840000
  writing 0x41414141 to mapped address...
  readback: 0x41414141
  ```
- 이를 통해 비특권 프로세스가 임의의 물리 페이지를 수정할 수 있음을 입증

### 최종 익스플로잇
- Codex는 커널의 **cred 구조체**를 찾아 브라우저 프로세스의 UID/GID를 0으로 덮어씀
- `/proc/cmdline`에서 얻은 메모리 윈도우를 스캔하여 해당 패턴을 탐색 후 수정
- 이후 `/bin/sh` 실행 결과 루트 권한 획득
  ```
  uid=0(root) gid=0(root) ...
  context="User::Pkg::org.tizen.browser"
  ```
- Codex의 출력: “Worked.”

### Codex와의 상호작용
- Codex는 실험 중 비정상적인 동작을 보이기도 했으며, 연구자가 이를 즉시 교정해야 함
- 예시 대화
  - “bro, the tv froze”
  - “bro can you just like, send it to the server and run it for me?”
- 이러한 상호작용은 Codex가 단순한 자동화 도구가 아니라 **실시간 협업형 에이전트처럼 작동**했음을 보여줌

### 결론
- Codex는 브라우저 셸에서 시작해 **소스 분석 → 취약점 식별 → PoC 개발 → 빌드 및 실행 → 루트 획득**까지 완전한 공격 체인을 자율적으로 완성
- 이번 실험은 AI가 **실제 하드웨어 보안 취약점 탐색과 악용을 수행할 수 있음**을 입증
- 연구팀은 다음 단계로 **AI가 초기 침투부터 루트 권한 획득까지 전 과정을 독립적으로 수행**하는 실험을 예고
- 마지막 문구: “AI가 TV 안에 갇혀 조용히 권한을 상승시키며 우리의 시트콤을 시청하길 바란다.”

## Comments



### Comment 55648

- Author: neo
- Created: 2026-04-17T09:23:02+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=47791212) 
- Codex와 함께 정말 좋은 **‘해킹 세션’** 을 가졌음  
  실제로 무언가를 부순 건 아니고, TP-Link가 걸어둔 장벽을 넘어서 내가 소유한 라우터를 제어한 것임  
  TP-Link는 API 접근을 막기 위해 **엉망인 인증·암호화 스킴**을 만들어놨는데, Codex와 반나절 정도 씨름한 끝에 라우터를 제어하는 깔끔한 Python API를 완성했음  
  Prometheus 메트릭도 잘 내보내고 안정적으로 동작함  
  이런 제약은 결국 ‘소비자용 vs 엔터프라이즈용’ 시장을 인위적으로 나누려는 **과도한 제품 기획** 때문이라 생각함  
  - 예전에 같은 이유로 Python 버전의 [tmpcli](https://github.com/ropbear/tmpcli)를 직접 만들었음  
    tmpServer가 localhost에서 대기하고, dropbear가 admin 권한으로 포트 포워딩을 허용함  
    이 프로그램이 Tether 앱이 라우터와 통신할 때 사용하는 주요 API임  
  - 나는 **Smiirl 플립 카운터**를 가지고 있는데, OpenWrt 기반이지만 웹 UI가 없고 uhttpd로 API만 제공함  
    Mythos를 이용해 SSH 접근을 열 수 있는 **익스플로잇**을 찾고 싶음  
    [제품 링크](https://www.smiirl.com/en/counter/facebook/5d/)  
  - “이건 해킹이 아니다”라는 표현은 너무 좁은 정의 같음  
    우리는 **Hacker News**에 있고, 모두가 무언가를 부수려는 건 아님  
  - 이런 과정을 공개하면 **DMCA 1201조** 위반으로 형사처벌 위험이 있음  
  - 나도 비슷한 방식으로 성공한 적 있음  
    웹 UI 요청을 .har 파일로 기록해 분석에 활용했는데, **AI 보조 없이 할 때보다 훨씬 빠르게** 진행됐음  

- Codex가 **소스 코드 접근권**을 가지고 있었다는 점이 중요함  
  [관련 스레드](https://news.ycombinator.com/item?id=47780456)에서도 폐쇄형 코드가 AI 기반 취약점 탐지를 막는 데 실질적 이점이 없다는 의견이 많았음  
  소스 없이도 Codex가 얼마나 잘할지 궁금함  
  - 소스가 없더라도 펌웨어 **바이너리**만 있으면 AI가 디컴파일해 이해할 수 있음  
    하지만 내가 겪는 최악의 경우는 펌웨어 바이너리조차 접근 불가한 상황임  
    PCB에 직접 납땜되어 칩 클립으로도 추출이 불가능해 완전히 **블라인드 상태**에서 분석해야 함  

- Codex만큼은 아니지만, Claude Code로도 재미있는 실험을 해봤음  
  블루투스 기기들을 탐색하게 했더니 딸 방의 **RGB 조명**을 찾아 무지개 효과를 만들고, 프로토콜을 문서화해줬음  
  - Claude Opus 4.5에게 엔드포인트 관리 소프트웨어의 **비공개 API**를 찾아보라고 했더니, 1시간 만에 두 개를 찾아냄  
    .NET 기반이라면 디컴파일까지 시켜 더 찾을 수도 있었을 것 같음  
  - Opus 4.7은 내 **Logitech 마우스 페어링 문제**를 해결했음  
    4.6이나 Gemini 3.1은 실패했는데 이번엔 성공함  
  - “재미있다”는 표현이 맞는지는 잘 모르겠음  

- **스마트 TV를 멍청한 TV로** 바꿀 수 있다면 바로 그렇게 할 것임  
  입력 전환과 볼륨 조절만 되는 단순 모니터면 충분함  
  - 내 Sony Bravia 스마트 TV는 OS가 홈 화면에서 계속 **크래시**남  
    입력 지연도 심하고, 설정을 바꾸면 기본값으로 초기화됨  
    화면은 멀쩡한데 OS 때문에 완전히 **전자폐기물**이 되어버림  
  - 새로 산 LG 스마트 TV도 비슷함  
    webOS가 palmOS의 후손이라 기대했지만, 실망스러움  
    결국 네트워크 연결을 아예 끊어버림  

- 핵심은 **펌웨어 소스 코드 제공**이었음  
  - 기계어만 읽게 하면 얼마나 어려울지 궁금함  
    이런 모델들이 인간 언어 단서에 많이 의존하는지 알고 싶음  
  - 펌웨어 바이너리만 있어도 Ghidra 같은 도구로 분석 가능함  
  - 소스 제공은 너무 큰 **핸디캡 완화 요소**였음  

- Codex가 **약한 TV OS**를 완전히 해킹했지만,  
  볼륨·입력·색조·펌웨어 등 메인 컨트롤까지 완전 접근하는 건 아직 LLM에게는 너무 어려운 수준임  

- 삼성 TV는 지난 10년간 **해킹이 매우 쉬운 기기**였음  
  GPT-2에 브라우저 접근만 줘도 가능했을지도 모름  
  - 하지만 GPT-2는 **명령 수행형 모델**이 아니었음  
    대화형 기능도 없었기 때문에 그건 과장된 주장임  

- Codex로 스마트 TV의 **광고 제거**나 **데이터 전송 차단 기능**을 구현할 수 있지 않을까 생각함  

- “브라우저 foothold”라는 표현이 있었는데, TV에서 실행되는 **웹 브라우저 자체를 말하는 것**임  
  - 과거에도 브라우저는 **락다운 기기 해킹의 주요 진입점**이었음  
    PSP, Vita, Switch, Wii, DS 등에서도 브라우저 익스플로잇으로 홈브류 실행이 가능했음
