PDF에서 실행되는 Linux
(linux.doompdf.dev)- LinuxPDF는 PDF 안에서 Linux VM을 실행하는 데모로, VM 화면과 키보드 입력 UI를 PDF 안에 함께 배치함
- 실행 환경은 Chromium 기반 브라우저로 제한되어 있어, 다른 PDF 환경에서는 동작을 기대하기 어려움
- 키 입력은 화면의 키 버튼을 누르거나 상단 입력 상자에 직접 타이핑해 VM으로 보낼 수 있음
- 제공 키는 Esc, Tab, Enter, Shift, Ctrl, Alt, 방향키, Home/End, PgUp/PgDn, F1~F12, 숫자·문자 키까지 포함함
- 구현을 확인하려는 사용자는 GitHub의 linuxpdf 저장소에서 소스 코드를 볼 수 있음
PDF 안의 Linux VM 데모
- LinuxPDF는 PDF 문서 안에서 Linux VM을 실행하는 데모임
- 동작 환경은 Chromium 기반 브라우저로 제한됨
- 화면에는 VM 로딩 상태를 나타내는
Loading...문구가 있음
VM에 키 입력 보내기
- 입력 방식은 두 가지임
- 화면에 표시된 키 버튼을 누름
Type here for keyboard inputs.입력 상자에 직접 타이핑함
- 현재 눌린 키는
Pressed:영역에서 확인할 수 있음
제공되는 키 구성
- 제어 키와 특수 키
- Esc, Tab, Caps, Enter, Shift, RShift, Ctrl, Alt, Space, Menu
- Home, Ins, Del, End, PgUp, PgDn
- 방향키와 기능 키
^,<,v,>- F1부터 F12까지
- 일반 키 입력
- 숫자 1~0,
-,= - QWERTY 문자 키
[,],;,',,,.,/,\,`
- 숫자 1~0,
소스 코드
- Source code: LinuxPDF 소스 코드 저장소
댓글과 토론
Hacker News 의견들
-
작동하지 않고 문서가 반응하지 않음. 참고로 HP DeskJet 2820e Printer를 사용했음
- 스캔할 때마다 올바른 키에 동그라미를 치면서, 이걸 스캐너에 반복 입력해야 할 듯함
- PDF에는 실제로 어떤 요소를 화면에 표시할지와 인쇄할지를 따로 정의하는 기능이 있음(Optional Content)
-
최근 며칠 사이에 “PDF 안에서 Linux 실행”과 “PDF를 LLM에 넣는 방식”이 각각 화제가 됐는데, 사람들이 여러 종류의 PDF 파서와 평가기를 LLM에 붙이기 시작하면 꽤 흥미로운 해킹 가능성이 생길 듯함
- LLM 안에서 Linux를 실행해서 컴퓨팅 자원 탈취에 쓰고, 그걸로 LLM을 학습시키거나 Bitcoin을 채굴할 수도 있겠음
- PDF는 늘 매우 매력적인 공격 벡터였음. 대부분은 PDF를 그냥 텍스트 문서로만 생각하고, 실행 가능한 코드를 쉽게 넣을 수 있다는 걸 모름
Acrobat 같은 인기 리더에 취약점이 끔찍하게 많다는 점까지 합치면, 회사를 해킹하기 위한 완벽한 관문이 됨
-
며칠 전에 올라왔던 글임: https://news.ycombinator.com/item?id=42891937
저장소에도 내부 장치가 어떻게 동작하는지에 대한 설명과 정보가 있음 -
드디어 나왔네. “Linux.js를 PDF에 넣어서, Linux 안의 브라우저 안의 PDF 안의 Linux 안의 브라우저 안의 PDF 안의 Linux를 실행하겠다”는 농담을 너무 오래 해왔음
- 정확히는 아님. 이 PDF는 아직 브라우저를 열 수는 없음!
-
이걸 JavaScript로 하는 건 약간 반칙처럼 느껴짐. PostScript로도 비슷한 게 가능할지 궁금함
- 가능은 하지만 PDF 안에서는 안 됨. PDF는 PostScript의 튜링 불완전한 부분집합만 지원하는데, PDF 설계자들이 문서 형식 안에 튜링 완전 언어를 넣으면 성능 문제가 생긴다고 봤기 때문임
나중에는 생각을 바꿔서 JavaScript 지원을 추가함 - 계산 관점에서는 가능함. PostScript에는 x86 CPU 에뮬레이션에 필요한 정수 산술 연산이 있고, 에뮬레이션 메모리로 쓰기 좋은 변경 가능한 바이트 문자열도 있음
- PostScript에는 텍스트 어드벤처 게임을 플레이할 수 있는 ZMachine 인터프리터인 zmachine.ps가 있음
물론 PostScript로 만든 체스 엔진과 틱택토도 있고, 인내심만 있으면 NES 게임도 할 수 있겠지만 스택을 많이 만져야 할 수도 있음
- 가능은 하지만 PDF 안에서는 안 됨. PDF는 PostScript의 튜링 불완전한 부분집합만 지원하는데, PDF 설계자들이 문서 형식 안에 튜링 완전 언어를 넣으면 성능 문제가 생긴다고 봤기 때문임
-
드디어 PDF 안에서
rm -rf /를 실행할 수 있게 됨- PostScript는
"shredpage"연산자로 그걸 지원함
- PostScript는
-
이걸 10개 복사해서 USB 드라이브에 넣으면 휴대용 Kubernetes 클러스터를 즐길 수 있음
https://news.ycombinator.com/item?id=42681039 -
VirusTotal에서 최소 3개 탐지가 나오지만, 의미 있는지는 잘 모르겠음
ClamAV: Js.Trojan.Obfus-48
Cylance: Unsafe
Google: Detected -
Firefox의
about:config에서pdfjs.enableScripting을false로 설정하면 됨 -
그런데 PDF 안에서 Linux를 실행하는 Linux용 PDF 편집기도 있나? Evince에서는 로드가 안 됨
- 내가 실행할 수 있었던 곳은 Chrome뿐이었음. Adobe Reader, Firefox, Evince 등에서는 안 됨
이런 “PDF 안에서 코딩”류는 대부분 Chrome을 실행 환경으로만 목표로 삼는 것 같음. Chrome이 문서 안에서 더 많은 코드 실행을 허용한다든가 하는 이유가 있는지는 잘 모르겠음
- 내가 실행할 수 있었던 곳은 Chrome뿐이었음. Adobe Reader, Firefox, Evince 등에서는 안 됨