파일 보안 · 웹오피스 블로그

CSV를 열었는데 셀 내용이 수식으로 실행되는 이유

CSV의 텍스트가 스프레드시트에서 수식으로 해석될 수 있는 이유를 무해한 예시로 설명하고, 인용부호와 수식 방어의 차이 및 공유 전 확인 기준을 제시합니다.

편집 책임: SideSideDev · 게시:

먼저 답하면

CSV는 텍스트 형식이지만 열어 보는 스프레드시트가 셀을 수식으로 해석할 수 있습니다. CSV 필드를 큰따옴표로 감싸는 것은 구분 기호를 표현하는 규칙이며 수식 실행을 막는 보장이 아닙니다. 출처와 열기 방식에 따라 텍스트로 가져오는 기준을 확인해야 합니다.

파일 형식과 앱의 해석은 별개다

직접 만든 무해한 예로 셀 내용이 =1+1인 CSV를 생각해 보세요. 어떤 스프레드시트에서 이를 수식으로 해석하면 화면에 2가 나타나고, 텍스트로 가져오면 =1+1이라는 문자열이 나타납니다. 같은 입력이라도 앱의 가져오기 설정에 따라 결과가 다릅니다.

OWASP는 신뢰하지 않는 입력이 CSV로 내보내진 뒤 스프레드시트에서 수식으로 해석되는 문제를 설명합니다. 위험한 명령을 만들어 시험할 필요는 없습니다. 여기서는 단순 덧셈만 사용해 형식과 해석의 경계를 보여 주며 외부 연결이나 명령 실행 예시는 제공하지 않습니다.

무해한 CSV 셀 예시의 두 해석
입력열기 방식보일 수 있는 결과
=1+1수식으로 해석2
=1+1텍스트로 가져오기=1+1
인용부호로 감싼 필드CSV 구문 처리수식 방어 보장 없음

큰따옴표는 CSV 구조를 위한 규칙이다

RFC 4180의 인용부호는 쉼표, 줄바꿈, 큰따옴표를 필드 안에 표현하는 방법입니다. 그것이 스프레드시트에 ‘이 셀은 무조건 텍스트’라고 지시하는 것은 아닙니다. 줄을 올바르게 나누는 것과 수식으로 해석되지 않게 하는 것은 따로 확인해야 합니다.

웹오피스의 CSV 변환·필터·병합 결과를 수식 방어가 완료된 파일로 소개하지 않습니다. 수식을 탐지하거나 위험을 자동 판정하는 기능으로도 설명하지 않습니다. 수신자가 어떤 앱과 설정으로 열 것인지에 맞춰 별도의 가져오기·검수 절차가 필요합니다.

내용을 바꾸기 전에 데이터의 용도를 확인한다

모든 셀에 문자를 덧붙이는 방식은 원래 상품 코드나 숫자의 의미를 바꿀 수 있습니다. 앱에 따라 방어 방식의 효과도 다를 수 있으므로 한 가지 치환이 모든 경우를 해결한다고 단정하지 마세요. 내보내는 환경과 실제 수신 앱에서 정책에 맞는 처리 기준을 확인하세요.

출처가 불명확한 파일은 조직의 검토 절차를 따르고, 텍스트 가져오기 옵션과 결과 셀 형식을 살펴보세요. 원본과 검수용 사본을 구분하면 변경 내용을 추적하기 쉽습니다. 이 글은 해석 원리와 범위를 설명하며 특정 파일이 안전하다는 검사 결과를 제공하지 않습니다.

참고 자료와 확인 범위

공식 문서의 개념과 웹오피스의 실제 지원 범위는 다를 수 있습니다. 각 자료를 참고한 범위를 함께 표시합니다.

  • OWASP: CSV Injection

    스프레드시트에서 수식으로 해석될 수 있는 입력과 방어의 한계

  • RFC 4180: CSV 형식

    행·필드·인용부호의 형식. 셀 실행의 안전성을 보증하는 규격은 아닙니다.

관련 작업 가이드 읽기

블로그 글 모두 보기