JavaScript가 가상 CPU를 실행합니다
LinuxPDF는 TinyEMU의 RISC-V 에뮬레이터를 asm.js로 변환해 PDF의 JavaScript 환경에서 실행합니다. 프로젝트가 설명하는 기본 구성은 32비트 Buildroot 게스트입니다. 텍스트 필드가 문자 화면을 표시하고 버튼과 입력 필드가 입력을 전달합니다.
PDF 뷰어의 JavaScript 환경
TinyEMU: RISC-V 명령과 가상 장치 처리
게스트 Linux: 가상 장치로 출력
게스트의 셸은 호스트의 셸이 아닙니다
게스트에서 프로그램을 실행했다고 해서 호스트의 파일이나 명령 실행 권한을 얻은 것은 아닙니다. 게스트 명령은 에뮬레이터가 제공하는 CPU와 장치 환경 안에서 처리됩니다. 호스트 접근을 주장하려면 뷰어가 허용하는 API나 별도의 취약점을 통한 경로가 확인되어야 합니다.
PDF JavaScript 지원은 뷰어마다 다릅니다. Adobe의 API 전체와 Chromium PDFium이 구현한 부분집합을 같은 실행 환경으로 취급하지 않습니다. 지원 여부는 뷰어·버전·설정에 따라 확인해야 합니다.
PDF.js 보안 권고와 혼동하지 않습니다
CVE-2024-4367은 별개의 PDF.js 취약점입니다. 공식 권고는 4.1.392 이하에서 isEvalSupported가 true인 조건을 설명하고, 수정 버전을 4.2.67로 명시합니다. 공격 코드가 실행되는 범위는 뷰어를 호스팅하는 도메인입니다. 이것이 곧 네이티브 호스트 셸 실행이라는 뜻은 아닙니다.
이 권고는 LinuxPDF가 해당 취약점을 이용한다는 근거가 아닙니다. 데모의 정상 실행 기능, 뷰어의 보안 결함, 운영체제 권한 획득을 각각 별도의 증거로 판단해야 합니다.
확인한 것과 실행하지 않은 것
이 글은 프로젝트 설명과 보안 권고를 대조한 정적 검토입니다. 원본 PDF를 내려받거나 실행하지 않았고, 프로젝트가 제시한 부팅 시간이나 에뮬레이션 속도를 측정하지 않았습니다. PDF나 악성 동작을 재현할 파일도 배포하지 않습니다.