속보
●개보위, 개인정보 보호 우수기업 신청 접수 시작●NVD, CVSS 4.0 전환 완료 — 기존 CVSS 3.x 병행 표기 종료●EU AI Act 고위험 AI 분류기준 변경 예고 — 국내 영향 분석●BCP·DR 인증 의무화 논의 가속 — 금융·의료 분야 선적용 전망●개보위, 개인정보 보호 우수기업 신청 접수 시작●NVD, CVSS 4.0 전환 완료 — 기존 CVSS 3.x 병행 표기 종료●EU AI Act 고위험 AI 분류기준 변경 예고 — 국내 영향 분석●BCP·DR 인증 의무화 논의 가속 — 금융·의료 분야 선적용 전망
CVE·취약점AI 초안

Node.js 오피스 변환 라이브러리 'office-converter'에서 치명적 OS 명령 삽입 취약점 발견

office-converter 1.0.2 이하 버전에서 CVSS 9.8점의 치명적 OS 명령 삽입 취약점이 확인됐다. 공격자는 파일명에 셸 메타문자를 삽입해 임의 명령을 실행할 수 있다.

백남정 기자
입력 2026년 10월 21일·원문 보기 ↗
단축URLhttps://privacynews.kr/s/b6efdb1c
Node.js 오피스 변환 라이브러리 'office-converter'에서 치명적 OS 명령 삽입 취약점 발견

핵심 요약

- office-converter 1.0.2 이하 버전에서 OS 명령 삽입 취약점(CVE-2020-37282) 발견, CVSS 점수 9.8점(Critical) - generatePdf() 및 generateHtml() 함수의 fileName 파라미터를 통해 셸 메타문자 삽입 시 임의 명령 실행 가능 - child_process.exec() 함수 사용 시 입력값 검증 미흡으로 인한 전형적인 명령 삽입 사례로, Node.js 프로세스 권한으로 공격 코드 실행

주요 내용

office-converter는 Microsoft Office 문서를 PDF 및 HTML 형식으로 변환하는 Node.js 라이브러리다. 2026년 10월 현재까지도 참조되고 있는 이 취약점은 2020년 발견됐으나, 여전히 구버전을 사용하는 시스템에서 보안 위협으로 작용하고 있다.

취약점의 핵심은 index.js 파일의 19-20번째 라인에서 확인된다. generatePdf()와 generateHtml() 함수가 사용자로부터 전달받은 fileName 파라미터를 적절한 검증 없이 unoconv 명령어에 직접 연결(concatenation)하여 child_process.exec()로 실행하는 구조다. 공격자는 파일명에 $(command), 백틱(backtick), 또는 따옴표를 닫은 후 세미콜론(;) 등의 셸 메타문자를 삽입하여 임의의 시스템 명령을 실행할 수 있다.

예를 들어, test.docx; rm -rf / 또는 file$(whoami).doc와 같은 악의적인 파일명이 전달될 경우, 셸이 이를 별도의 명령어로 해석하여 실행한다. 이는 Node.js 프로세스가 보유한 모든 권한으로 명령이 실행됨을 의미하며, 서버 환경에서 운영될 경우 전체 시스템 장악으로 이어질 수 있다.

GitHub 보안 권고(GHSA-9p64-h5q4-phpm)와 관련 Pull Request #9를 통해 이 문제가 공개되었으며, 개발자 커뮤니티에서는 입력값 sanitization과 child_process.execFile() 또는 spawn() 함수 사용을 권고하고 있다.

전문가 시각

ISMS-P 선임심사원 관점에서 본 취약점은 "개발 보안(Secure Coding)" 통제 항목의 전형적인 실패 사례다. 특히 외부 입력값에 대한 화이트리스트 기반 검증이 전혀 이루어지지 않았고, 위험한 함수(exec)를 안전한 대안(execFile, spawn) 없이 사용한 점이 문제의 본질이다. ISMS-P 인증심사 시 소스코드 점검 단계에서 이러한 패턴은 '상' 수준의 취약점으로 분류되며, 즉각적인 시정조치 대상이 된다.

실무 환경에서는 단순히 해당 라이브러리 업데이트만으로 끝나서는 안 된다. 동일한 패턴이 자체 개발 코드에 존재하는지 전수 점검이 필요하며, 특히 파일 업로드 기능을 제공하는 모든 웹 애플리케이션에서 파일명 처리 로직을 재검토해야 한다. 또한 WAF(Web Application Firewall) 규칙에 셸 메타문자 패턴 탐지를 추가하고, 최소 권한 원칙에 따라 Node.js 프로세스를 제한된 권한으로 실행하는 것이 필수적이다.

영향받는 시스템 및 조치사항

영향 범위:
- office-converter 버전 1.0.2 이하 모든 버전
- 해당 라이브러리를 의존성으로 사용하는 Node.js 애플리케이션
- 특히 웹 서버 환경에서 사용자 업로드 파일을 변환하는 서비스

CVSS 3.x 점수 해석 (9.8/Critical):
- 공격 복잡도(AC): Low - 특별한 조건 없이 공격 가능
- 권한 요구(PR): None - 인증 불필요
- 사용자 개입(UI): None - 사용자 행동 불필요
- 영향도: 기밀성(C), 무결성(I), 가용성(A) 모두 High

조치사항:
1. 즉시 최신 패치 버전으로 업데이트 (npm update office-converter)
2. package-lock.json 확인하여 의존성 트리 전체 점검
3. 대안으로 child_process.execFile() 사용 방식으로 코드 수정
4. 파일명에 대한 정규식 기반 화이트리스트 검증 로직 추가: /^[a-zA-Z0-9._-]+$/
5. 컨테이너 환경 사용 시 최소 권한 원칙 적용 및 읽기 전용 파일시스템 설정

CPPG·ISMS-P 연계 포인트

1. 입력값 검증 및 출력값 무해화 (ISMS-P 2.8.2 개발보안)
OS 명령 삽입은 OWASP Top 10의 Injection 공격 유형에 해당하며, 모든 외부 입력값은 신뢰할 수 없다는 원칙을 보여주는 사례다. ISMS-P 심사 시 "입력값 검증은 서버 측에서 화이트리스트 방식으로 수행되는가"를 중점 확인하며, 본 취약점은 이를 위반한 전형적 사례다. 시험에서는 블랙리스트 방식의 한계와 화이트리스트 기반 검증의 필요성을 구분할 수 있어야 한다.

2. 최소 권한 원칙 (Principle of Least Privilege)
공격이 성공하더라도 피해 범위를 제한하기 위해서는 프로세스가 필요한 최소한의 권한만 보유해야 한다. Node.js 애플리케이션을 root 권한으로 실행하는 것은 치명적이며, 전용 사용자 계정 생성, SELinux/AppArmor 정책 적용, 컨테이너 보안 컨텍스트 설정 등 다층 방어(Defense in Depth) 전략이 필요하다. CPPG 시험에서는 이러한 보안 원칙의 실무 적용 사례를 이해하고 있어야 한다.

#CVE-2020-37282#OS명령삽입#office-converter#Node.js#CVSS9.8
백
백남정 기자

공학박사 ·ISMS-P 선임심사원(30회) · CBPR 심사원· 숭실대 기업재난관리학과 석사 · 재해경감 인증심사원 · 개인정보보호 및 재해복구 전문 컨설턴트. LH공사 재해경감우수기업 인증심사 수행. 마이데이터 심사원(개인정보 지정기관 심사원)

개인정보보호뉴스 구독하기구글에서 팔로우

관련 기사

📌 함께 읽으면 좋은 기사