TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 47 READS

동영상 코덱으로 컴퓨터를 만들다 — VP8 디코더에서 NAND 게이트를 뽑아낸 해킹

동영상 파일이 계산을 한다고요?

가끔 '이걸 대체 왜 하지?' 싶은데 자세히 들여다보면 무릎을 치게 되는 해킹 프로젝트들이 있죠. 이번에 소개할 Video2NAND가 딱 그런 물건이에요. 한 개발자가 VP8 비디오 코덱의 디코딩 과정을 이용해서 조합 논리 회로(combinatorial logic)를 구현해냈거든요. 쉽게 말하면, 특별하게 조작된 동영상 파일을 재생(디코딩)하는 것만으로 논리 연산이 수행되는 시스템을 만든 거예요. 동영상 플레이어가 자기도 모르게 계산기 역할을 하게 되는 셈이죠.

VP8이 뭐냐면, 구글이 인수해서 오픈소스로 공개한 비디오 코덱이에요. WebM 포맷의 기반이고, 지금 널리 쓰이는 VP9과 AV1의 조상 격이죠. 웹에서 동영상을 재생할 때 여전히 곳곳에서 만날 수 있는 코덱이에요.

어떻게 이게 가능하냐면

비디오 코덱의 핵심은 '예측'이에요. 동영상은 원본 데이터가 어마어마하게 크니까, 모든 픽셀을 저장하는 대신 '이 블록은 옆 블록과 비슷하니까 옆 블록을 복사한 다음 차이만 기록하자'는 식으로 압축하거든요. 이걸 인트라 예측(intra prediction)이라고 해요. 그리고 예측값에 차이값을 더할 때 픽셀 값이 0~255 범위를 벗어나지 않도록 잘라내는 포화 연산(clamping)도 들어가요.

여기서 발상의 전환이 나와요. '복사한다', '더한다', '범위를 벗어나면 잘라낸다' — 이 연산들을 아주 교묘하게 조합하면 논리 연산을 흉내 낼 수 있다는 거예요. 픽셀 값 0과 255를 각각 논리값 0과 1로 취급하고, 예측과 포화 연산을 엮어서 NAND 게이트의 동작을 만들어내는 거죠.

NAND 게이트가 왜 중요하냐면, 디지털 논리의 '만능 부품'이기 때문이에요. AND, OR, NOT부터 덧셈기, 메모리, 나아가 CPU까지 — 모든 디지털 회로는 이론적으로 NAND 게이트만으로 조립할 수 있어요. 이걸 '기능적 완전성'이라고 하는데요. 그러니까 코덱 안에서 NAND 하나를 만들어냈다는 건, 원리적으로는 그 코덱 위에 어떤 계산이든 올릴 수 있는 길을 열었다는 뜻이에요. 게이트의 출력이 다음 게이트의 입력으로 이어지도록 프레임을 구성하면, 동영상이 디코딩되는 과정 자체가 회로가 계산을 진행하는 과정이 되는 거예요.

'이상한 기계'의 유서 깊은 계보

이런 장르의 해킹은 전통이 깊어요. 폰트 렌더링 엔진의 힌팅 명령어로 계산을 시킨다거나, x86의 mov 명령어 하나만으로 튜링 완전한 프로그램을 짠다거나, PDF 파일 안에서 게임 둠(Doom)을 돌린다거나 하는 것들이요. 보안 업계에서는 이걸 '위어드 머신(weird machine)'이라고 불러요. 설계자가 전혀 의도하지 않은 방식으로 시스템 안에 숨어 있는 계산 능력을 끄집어내는 거죠.

그런데 이게 그냥 재미로 끝나는 얘기가 아니에요. 보안 관점에서 꽤 의미심장하거든요. 비디오 디코더는 우리가 매일같이 신뢰할 수 없는 입력(인터넷에서 받은 동영상)을 먹이는 소프트웨어예요. 그 안에 이 정도로 풍부한 계산 능력이 숨어 있다는 건, 코덱이 그만큼 복잡하고 공격 표면이 넓다는 방증이기도 해요. 실제로 코덱과 이미지 파서의 취약점은 메신저 앱의 제로클릭 공격(사용자가 아무것도 누르지 않아도 감염되는 공격)에 단골로 등장해 왔고요. '파싱하는 코드는 곧 실행하는 코드다'라는 보안 격언을 이보다 생생하게 보여주는 사례도 드물어요.

한국 개발자에게는

당장 실무에 갖다 쓸 기술은 아니에요. 하지만 이런 프로젝트를 따라가 보는 건 값진 공부가 돼요. 코덱의 내부 동작(예측, 변환, 양자화)을 이 정도 깊이로 이해하게 되는 계기가 흔치 않거든요. 미디어 처리나 스트리밍 쪽 일을 하는 분이라면 VP8 스펙을 이렇게 창의적으로 읽어낸 관점 자체가 자극이 될 거고, 보안 쪽이라면 '복잡한 파서는 전부 잠재적 실행 환경'이라는 교훈을 다시 새기게 될 거예요. 저수준 시스템에 관심 있는 주니어에게는 압축과 논리 회로라는 두 세계를 한 번에 배우는 최고의 교재이기도 하고요.

정리하며

동영상 코덱 안에 컴퓨터가 숨어 있었다 — 이 프로젝트의 한 줄 요약이에요. 여러분이 지금까지 본 것 중 가장 기발했던 '의도하지 않은 컴퓨터'는 뭐였나요? 엑셀로 만든 CPU? 마인크래프트 레드스톤 컴퓨터? 댓글로 공유해 주세요.


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://sharedobject.blog/posts/vp8-combinatorial-logic/
SHARE
처리 중...