<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Excel 파일 보안 on File Format Blog</title>
    <link>https://blog.fileformat.com/ko/tag/excel-%ED%8C%8C%EC%9D%BC-%EB%B3%B4%EC%95%88/</link>
    <description>Recent content in Excel 파일 보안 on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ko</language>
    <lastBuildDate>Mon, 28 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/ko/tag/excel-%ED%8C%8C%EC%9D%BC-%EB%B3%B4%EC%95%88/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Excel 파일 보안 설명: XLSX, XLSM 및 매크로 위험</title>
      <link>https://blog.fileformat.com/ko/spreadsheet/excel-file-security-explained-xlsx-xlsm-and-macro-risks/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/ko/spreadsheet/excel-file-security-explained-xlsx-xlsm-and-macro-risks/</guid>
      <description>XLSX와 XLSM 파일 간의 실제 보안 차이점, 매크로 기반 공격이 실행되는 방식, 그리고 악성 스프레드시트로부터 조직을 방어하는 방법을 이해하세요.</description>
      <content:encoded><![CDATA[<p><strong>마지막 업데이트</strong>: 2026년 9월 28일</p>
<figure class="align-center ">
    <img loading="lazy" src="images/excel-file-security-explained-xlsx-xlsm-and-macro-risks.png#center"
         alt="XLSX vs. XLSM Security: How Spreadsheet Macros Expose Your Network"/> 
</figure>

<h2 id="excel-파일-보안-설명-xlsx-xlsm-및-매크로-위험">Excel 파일 보안 설명: XLSX, XLSM 및 매크로 위험</h2>
<p>수십 년 동안 Microsoft Excel은 비즈니스 운영의 보편적인 엔진으로 자리 잡아 왔습니다. 기업 예산을 조정하고, 복잡한 데이터 세트를 시각화하며, 재고를 추적하고, 거의 모든 산업 분야에서 분석 파이프라인을 구동합니다.</p>
<p>하지만 동일한 계산 유연성 때문에 스프레드시트는 사이버 공격자들 사이에서 지속적인 표적이 됩니다. 공격자들은 1990년대 후반 매크로 바이러스 초창기부터 스프레드시트를 무기로 사용해 왔습니다. Microsoft와 시스템 관리자는 파일 형식 분리 및 기본 매크로 차단과 같은 여러 방어 계층을 도입했지만, 사회공학 및 미묘한 구조적 위험이 여전히 Excel 중심 공격을 지속적으로 위협하고 있습니다.</p>
<p>탄탄한 보안 태세를 구축하려면 개발자, 관리자, 그리고 고급 사용자가 워크북 인터페이스 아래를 살펴봐야 합니다. 기본 OpenXML 형식이 어떻게 작동하는지, <code>.xlsx</code>와 <code>.xlsm</code>이 아키텍처 수준에서 어떻게 다른지, 그리고 매크로 실행 메커니즘이 어떻게 작동하는지를 이해하는 것이 현대 엔드포인트를 방어하는 데 필수적입니다.</p>
<h2 id="1-현대-excel-파일의-구조-openxml-해부">1. 현대 Excel 파일의 구조: OpenXML 해부</h2>
<p>Microsoft Office 2007이 출시되기 전, Excel은 주로 독점 바이너리 형식, 특히 <code>.xls</code> 형식(바이너리 교환 파일 형식, 즉 BIFF8에 의해 관리)을 사용하여 파일을 저장했습니다. <code>.xls</code> 파일에서는 데이터 레코드, 서식 정의, 수식, 그리고 Visual Basic for Applications (VBA) 매크로 스트림이 하나의 구조화된 저장 컨테이너에 패키징되었습니다. 이는 프로그래밍 방식의 검사를 어렵게 만들었으며, 공격자들이 불투명한 바이너리 섹터 안에 악성 페이로드 스크립트를 숨길 수 있게 했습니다.</p>
<p>Excel 2007부터 Microsoft는 <strong>Office Open XML (OOXML)</strong> 표준(ECMA-376 및 ISO/IEC 29500으로 표준화)을 도입했습니다. OOXML 하에서는 Excel 워크북이 더 이상 단일 바이너리 블롭이 아닙니다. 대신 XML 문서, 관계 테이블, 그리고 임베드된 미디어 자산의 계층 구조를 포함하는 zip 압축 파일 형태로 제공됩니다.</p>
<h3 id="zip-컨테이너-내부">ZIP 컨테이너 내부</h3>
<p>표준적인 최신 Excel 통합 문서를 선택하고 확장자를 <code>.zip</code>으로 바꾸면, 일반적인 압축 해제 유틸리티로 내용을 추출할 수 있습니다:</p>
<pre tabindex="0"><code>my_workbook.xlsx (extracted)
│
├── [Content_Types].xml        &lt;-- Registry of MIME types and structural parts
├── _rels/                     &lt;-- Package-level relationship mappings
│   └── .rels
├── docProps/                  &lt;-- Metadata (author, creation date, revision)
│   ├── app.xml
│   └── core.xml
└── xl/                        &lt;-- Core spreadsheet contents
    ├── workbook.xml           &lt;-- Workbook-level parameters and sheet list
    ├── styles.xml             &lt;-- Cell styles, fonts, and borders
    ├── sharedStrings.xml      &lt;-- Unique string index for performance optimization
    ├── _rels/
    │   └── workbook.xml.rels  &lt;-- Sheet and component dependencies
    └── worksheets/
        ├── sheet1.xml         &lt;-- Raw cell values, formulas, and grid geometry
        └── sheet2.xml
</code></pre><p>이 구조적 변화는 즉각적인 보안 이점을 제공했습니다:</p>
<ol>
<li><strong>DPI(Deep Packet Inspection) 및 게이트웨이 가시성:</strong> 보안 장비, 프록시 및 엔드포인트 에이전트는 아카이브를 실시간으로 풀어내고 일반 텍스트 XML 트리를 파싱하여 의심스러운 문자열, 외부 URL 또는 포함된 객체를 식별할 수 있습니다.</li>
<li><strong>결정적 파일 검증:</strong> 파일이 OpenXML 문서라고 주장하지만 스키마 제약을 위반하면, Excel은 파일을 열지 않거나 샌드박스 복구 모드에서 실행합니다.</li>
<li><strong>형식 분리:</strong> Microsoft는 일반 계산 스프레드시트와 임베디드 절차 스크립트를 실행할 수 있는 파일을 분리했습니다.</li>
</ol>
<h2 id="2-xlsx1-vs-xlsm7-아키텍처-경계">2. <a href="https://docs.fileformat.com/spreadsheet/xlsx/">XLSX</a> vs. <a href="https://docs.fileformat.com/spreadsheet/xlsm/">XLSM</a>: 아키텍처 경계</h2>
<p><code>.xlsx</code>와 <code>.xlsm</code> 사이의 주요 차이점은 파일 구조가 실행 가능한 매크로 프로젝트의 포함을 허용하는지 여부에 있습니다.</p>
<table>
<thead>
<tr>
<th style="text-align:left">기능 / 차원</th>
<th style="text-align:left"><code>.xlsx</code> (Excel OpenXML 스프레드시트)</th>
<th style="text-align:left"><code>.xlsm</code> (Excel 매크로 사용 스프레드시트)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>MIME 콘텐츠 유형</strong></td>
<td style="text-align:left"><code>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</code></td>
<td style="text-align:left"><code>application/vnd.ms-excel.sheet.macroEnabled.12</code></td>
</tr>
<tr>
<td style="text-align:left"><strong>VBA 저장 컨테이너</strong></td>
<td style="text-align:left"><strong>엄격히 금지됨.</strong> <code>vbaProject.bin</code>을 저장할 수 없습니다</td>
<td style="text-align:left"><strong>허용됨.</strong> <code>xl/vbaProject.bin</code>을 포함합니다</td>
</tr>
<tr>
<td style="text-align:left"><strong>네이티브 실행 위험</strong></td>
<td style="text-align:left">매크로 실행에 거의 영향이 없으며; 수식 삽입/DDE에 제한됩니다</td>
<td style="text-align:left">높음; 워크북 상호 작용 시 자동화된 VBA 코드를 실행할 수 있습니다</td>
</tr>
<tr>
<td style="text-align:left"><strong>OpenXML 엄격 스키마</strong></td>
<td style="text-align:left">엄격하고 매크로가 없는 XML 정의에 부합합니다</td>
<td style="text-align:left">레거시 및 최신 자동화 확장에 대한 정의를 포함합니다</td>
</tr>
<tr>
<td style="text-align:left"><strong>사용자 시각적 표시기</strong></td>
<td style="text-align:left">표준 녹색 스프레드시트 아이콘</td>
<td style="text-align:left">느낌표가 표시된 스프레드시트 아이콘</td>
</tr>
</tbody>
</table>
<h3 id="강제-메커니즘-xlsx가-매크로를-실행할-수-없는-이유">강제 메커니즘: XLSX가 매크로를 실행할 수 없는 이유</h3>
<p>주니어 관리자와 개발자들 사이에서 흔히 묻는 질문은: <em>공격자가 악성 <code>.xlsm</code> 파일을 가져와 실행 코드를 주입하고 파일 확장자를 <code>.xlsx</code> 로 바꾸면 어떻게 될까요?</em></p>
<p>간단히 답하면: <strong>파일이 매크로를 실행하지 않습니다.</strong></p>
<p>Excel은 실행 규칙을 결정할 때 파일 확장자에만 의존하지 않습니다. <code>.xlsx</code> 파일을 열 때:</p>
<ol>
<li>Excel은 zip 페이로드를 검사하고 <code>[Content_Types].xml</code>을 참조합니다.</li>
<li>진짜 <code>.xlsx</code> 파일에서는 정의된 모든 콘텐츠 유형이 표준 데이터 요소(예: <code>worksheet</code>, <code>sharedStrings</code>, <code>styles</code>)를 나타냅니다.</li>
<li>공격자가 컴파일된 VBA 스트림(<code>xl/vbaProject.bin</code>)을 <code>.xlsx</code> 패키지에 수동으로 주입하고 관계를 업데이트하면, Excel은 명시적인 스키마 모순을 만나게 됩니다:
<ul>
<li><code>.xlsx</code> 확장자가 매크로 기능을 나타내는 콘텐츠 유형에 연결된 것을 감지합니다.</li>
<li>Excel은 치명적인 무결성 오류를 발생시킵니다: <em>&ldquo;Excel은 파일 형식이나 파일 확장자가 유효하지 않아 &lsquo;filename.xlsx&rsquo; 파일을 열 수 없습니다. 파일이 손상되지 않았는지 확인하십시오&hellip;&rdquo;</em></li>
</ul>
</li>
<li>공격자가 내부 유형을 그대로 두고 바이너리를 등록하지 않으면, Excel은 <code>vbaProject.bin</code>을 zip 아카이브 내의 참조되지 않은 고아 첨부 파일로 간주하고 로드 사이클 중에 완전히 버립니다.</li>
</ol>
<p>그 결과, <strong>진정한 <code>.xlsx</code> 컨테이너로만 작동하는 파일은 네이티브 VBA 코드를 실행할 수 없습니다.</strong> 그러나 이것이 <code>.xlsx</code> 파일이 모든 공격 벡터에서 자유하다는 의미는 아니며, 이 가이드의 후반부에서 자세히 살펴봅니다.</p>
<h2 id="3-매크로-위험-및-공격-수명-주기">3. 매크로 위험 및 공격 수명 주기</h2>
<p>매크로는 Visual Basic for Applications (VBA)를 통해 반복적인 회계, 재무 모델링 및 데이터 조작 작업을 자동화하도록 설계되었습니다. VBA는 업무 자동화를 위해 만들어졌기 때문에, Component Object Model (COM), Windows Script Host (WSH) 및 직접 Win32 API 호출을 통해 기본 Windows 운영 체제에 광범위한 접근 권한을 부여받았습니다.</p>
<p>신뢰할 수 없는 매크로가 실행될 때, 그것은 <strong>로그인한 사용자와 정확히 동일한 권한</strong>으로 실행됩니다. 이는 가상화된 JavaScript 스타일 브라우저 샌드박스에 갇혀 있지 않습니다.</p>
<pre tabindex="0"><code>+--------------------------------------------------------------------------------+
|                             ATTACK LIFECYCLE                                   |
+--------------------------------------------------------------------------------+
                                       │
                                       ▼
  [ Delivery &amp; Evasion ]  ──────► Spear-phishing email with .xlsm, .xlam, or .zip.
                                       │
                                       ▼
  [ Social Engineering ]  ──────► Lures victim to bypass Protected View (&#34;Enable Content&#34;).
                                       │
                                       ▼
  [ Auto-Execution ]      ──────► Auto_Open() or Workbook_Open() triggers automatically.
                                       │
                                       ▼
  [ System Invocation ]   ──────► VBA creates COM objects (WScript.Shell, WinHttp.WinHttpRequest).
                                       │
                                       ▼
  [ Payload Retrieval ]   ──────► Spawns hidden PowerShell/cURL to fetch staging binary.
                                       │
                                       ▼
  [ Post-Exploitation ]   ──────► In-memory execution, credential theft, lateral movement.
</code></pre><h3 id="일반적인-매크로-침입-기법">일반적인 매크로 침입 기법</h3>
<ol>
<li>
<p><strong>자동 실행 훅:</strong>
공격자는 <code>Sub Auto_Open()</code> 또는 <code>Private Sub Workbook_Open()</code>와 같은 내재된 이벤트 핸들러에 진입점을 배치합니다. 사용자가 실행 권한을 부여하자마자, 이러한 루틴은 스프레드시트 내에서 클릭 없이도 트리거됩니다.</p>
</li>
<li>
<p><strong>난독화 및 스톰핑:</strong></p>
<ul>
<li><strong>문자열 난독화:</strong> 페이로드는 문자 배열, XOR 인코딩, Base64 디코딩 또는 환경 변수 연결(예: <code>Chr(112) &amp; Chr(111) &amp; Chr(119)...</code>)을 사용하여 URL 및 시스템 호출을 숨깁니다.</li>
<li><strong>VBA 스톰핑:</strong> <code>vbaProject.bin</code> 내부에 VBA는 해석된 소스 코드와 컴파일된 p-code(특정 Office 버전에 맞춰 컴파일된 의사코드) 두 형태로 존재합니다. 공격자는 명확한 소스 코드를 완전히 삭제하고 컴파일된 p-code만 남길 수 있습니다. 많은 기본 안티바이러스 솔루션과 정적 분석기는 소스 스트림만 검사하므로, 일치하는 Office 버전에서 실행될 때까지 p-code는 탐지되지 않습니다.</li>
</ul>
</li>
<li>
<p><strong>자체 시스템 활용 (LotL):</strong>
현대의 악성 매크로는 <code>.exe</code> 파일을 직접 디스크에 떨어뜨리는 경우가 거의 없으며, 이는 즉시 엔드포인트 탐지 및 대응(EDR) 에이전트를 경보하게 합니다. 대신, 내장 시스템 도구와 상호 작용합니다:</p>
<ul>
<li><code>WScript.Shell</code>을 인스턴스화하여 명령줄 인수를 실행합니다.</li>
<li>실행 정책을 우회하여 <code>PowerShell.exe</code>를 호출합니다 (<code>-ExecutionPolicy Bypass -WindowStyle Hidden</code>).</li>
<li><code>Declare PtrSafe Function CreateProcess</code> 또는 <code>VirtualAlloc</code>를 통해 네이티브 Win32 API를 호출하여 셸코드를 시스템 메모리에 직접 주입합니다.</li>
</ul>
</li>
</ol>
<h2 id="4-기타-스프레드시트-위협-벡터-표준-vba-외">4. 기타 스프레드시트 위협 벡터 (표준 VBA 외)</h2>
<p><code>.xlsm</code> 파일에 대한 환경을 보호하는 것은 전투의 절반에 불과합니다. 공격자는 전통적인 VBA와 독립적으로 작동하는 메커니즘도 사용합니다.</p>
<h3 id="동적-데이터-교환-dde-및-csv11-인젝션">동적 데이터 교환 (DDE) 및 <a href="https://docs.fileformat.com/spreadsheet/csv/">CSV</a> 인젝션</h3>
<p>Excel은 실행 중인 애플리케이션 간 데이터 공유를 허용하도록 설계된 Dynamic Data Exchange (DDE)라는 레거시 프로토콜을 제공합니다 (예: 별도 프로그램에서 실시간 주식 티커 데이터를 Excel 셀로 스트리밍하는 경우).</p>
<ul>
<li><strong>수식 주입 작동 방식:</strong>
스프레드시트 셀의 시작이 <code>=</code>, <code>@</code>, <code>+</code>, <code>-</code>와 같은 문자일 경우, Excel은 내용을 수식으로 해석합니다. 공격자가 웹 애플리케이션에서 CSV 또는 XLSX로 내보낸 스프레드시트에 입력(예: 정제되지 않은 &ldquo;Comments&rdquo; 필드)을 제어한다면, 다음과 같이 주입할 수 있습니다:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>=cmd|&#39;/C powershell.exe -w hidden -enc &lt;base64_payload&gt;&#39;!A0
</span></span></code></pre></div></li>
<li>열면 Excel이 수식을 평가하고 외부 애플리케이션 실행에 대한 프롬프트로 사용자에게 알리며, 사용자가 승인하면 시스템 셸을 실행합니다.</li>
</ul>
<h3 id="excel-40-xlm-레거시-매크로">Excel 4.0 (XLM) 레거시 매크로</h3>
<p>1993년에 VBA가 도입되기 전, Excel은 <strong>Excel 4.0 (XLM) 매크로</strong>라는 수식 기반 매크로 시스템을 사용했습니다. 이러한 매크로는 별도의 VBA 프로젝트가 아니라 전용 매크로 시트에 존재합니다.</p>
<p>XLM 매크로는 셀 수식(예: <code>=EXEC(&quot;calc.exe&quot;)</code>)으로 작성되기 때문에 많은 표준 VBA 정적 검사 엔진을 우회합니다. 공격자들은 2010년대 후반과 2020년대 초에 자동 탐지를 피하기 위해 XLM 매크로를 선호했으며, Microsoft가 최신 엔터프라이즈 빌드에서 기본적으로 이를 비활성화하기 전까지 사용되었습니다.</p>
<h3 id="악의적인-외부-연결-및-ole-개체">악의적인 외부 연결 및 OLE 개체</h3>
<p>일반적인 <code>.xlsx</code> 워크북도 외부 리소스를 통해 위험을 초래할 수 있습니다:</p>
<ul>
<li><strong>임베디드 OLE 패키지:</strong> 공격자는 워크시트에 임베디드 PDF 아이콘으로 위장된 실행 파일을 직접 삽입할 수 있습니다.</li>
<li><strong>외부 워크북 링크 및 웹 쿼리:</strong> XLSX 파일은 파일을 열 때 자동으로 공격자 제어의 명령·제어(C2) 서버에 HTTP GET 요청을 시작하는 외부 참조를 포함할 수 있으며, 주로 정찰이나 netNTLM 해시 수집 공격에 사용됩니다.</li>
</ul>
<h2 id="5-엔터프라이즈-강화-및-방어-심화-전략">5. 엔터프라이즈 강화 및 방어 심화 전략</h2>
<p>Excel 기반 위협에 대비하려면 네트워크 검사, 시스템 구성, 접근 제어 및 운영 프로세스를 포함하는 다계층 접근 방식이 필요합니다.</p>
<pre tabindex="0"><code>+─────────────────────────────────────────────────────────+
|                  ENTERPRISE DEFENSE LAYERS               |
+─────────────────────────────────────────────────────────+
|  PERIMETER: Drop inbound .xlsm, .xla, and .xltm at mail |
|  gateway unless cryptographically signed or exempted.   |
+---------------------------------------------------------+
|  IDENTITY &amp; POLICY: Enforce ASR rules and apply         |
|  Mark of the Web (MotW) macro execution blocks.         |
+---------------------------------------------------------+
|  RUNTIME: Hook AMSI into Office to evaluate dynamic     |
|  VBA buffers directly before execution.                 |
+---------------------------------------------------------+
|  STORAGE: Restrict macro execution exclusively to       |
|  managed, centralized Trusted Locations.                |
+─────────────────────────────────────────────────────────+
</code></pre><h3 id="1-웹-마크mark-of-the-web-motw-매크로-차단-적용">1. 웹 마크(Mark of the Web, MotW) 매크로 차단 적용</h3>
<p>2022년에 Microsoft는 Office 애플리케이션의 기본 동작을 업데이트했습니다: 인터넷에서 유래한 파일의 매크로가 <strong>기본적으로 차단됩니다</strong>.</p>
<p>사용자가 브라우저나 외부 클라이언트를 통해 파일을 다운로드하면, Windows는 해당 파일에 <code>Zone.Identifier</code>라는 대체 데이터 스트림(ADS) 태그를 붙입니다(Zone 3은 인터넷을 의미합니다). 이 표시가 있는 파일의 경우, Excel은 매크로를 완전히 비활성화하고 빨간색 보안 배너를 표시합니다: &gt; <em>&quot;보안 위험: Microsoft가 이 파일의 출처가 신뢰할 수 없기 때문에 매크로 실행을 차단했습니다.&quot;</em></p>
<p><strong>관리 작업:</strong> 이 동작이 그룹 정책을 통해 적용되고 최종 사용자가 이를 무시할 수 없도록 합니다:</p>
<ul>
<li><strong>GPO 경로:</strong> <code>User Configuration &gt; Administrative Templates &gt; Microsoft Excel 2016 &gt; Excel Options &gt; Security &gt; Trust Center</code></li>
<li><strong>설정:</strong> *&quot;인터넷에서 온 Office 파일의 매크로 실행 차단&quot;*을 활성화합니다.</li>
</ul>
<h3 id="2-공격-표면-감소asr-규칙-구성">2. 공격 표면 감소(ASR) 규칙 구성</h3>
<p>Microsoft Defender for Endpoint를 사용하는 조직은 Office 애플리케이션 전용으로 설계된 핵심 공격 표면 감소 규칙을 활성화해야 합니다:</p>
<ul>
<li><code>Block Office applications from creating child processes</code> (GUID: <code>D4F940AB-401B-4EFC-AADC-AD5F3C50688A</code>)
<ul>
<li><em>Excel이 PowerShell, CMD 또는 스크립팅 엔진을 실행하는 것을 방지합니다.</em></li>
</ul>
</li>
<li><code>Office 애플리케이션이 다른 프로세스로 코드를 주입하는 것을 차단</code> (GUID: <code>75668C1F-73B5-4CF0-BB93-3ECF5CB7CC84</code>)</li>
<li><code>Office 매크로에서 Win32 API 호출을 차단</code> (GUID: <code>92E6390C-CF9E-43CE-BD8C-0E6F0FE66680</code>)</li>
</ul>
<h3 id="3-안티멀웨어-스캔-인터페이스amsi-활용">3. 안티멀웨어 스캔 인터페이스(AMSI) 활용</h3>
<p>Microsoft 365 최신 버전은 VBA 실행을 AMSI와 직접 통합합니다. 공격자가 복잡한 문자열 난독화나 VBA 스톰핑을 적용하더라도, VBA 런타임 엔진은 재구성된 암호화되지 않은 명령을 실행 직전 정확히 그 순간에 설치된 안티바이러스/EDR 엔진에 전달합니다. 엔드포인트 보호가 AMSI 런타임 이벤트를 적극적으로 모니터링하도록 설정하십시오.</p>
<h3 id="4-신뢰-위치-및-디지털-인증서로-전환">4. 신뢰 위치 및 디지털 인증서로 전환</h3>
<p>일상 업무에 자동화된 스프레드시트에 의존하는 조직을 위해:</p>
<ul>
<li><strong>사용자 다운로드 또는 데스크톱 폴더에 있는 느슨한 XLSM 파일을 제거하십시오.</strong></li>
<li><strong>신뢰할 수 있는 위치 사용:</strong> 매크로 실행을 IT 관리자가 관리하는 읽기 전용 네트워크 공유로만 제한하십시오.</li>
<li><strong>코드 서명:</strong> 내부에서 개발된 모든 매크로가 기업 공개키 인프라(PKI)에서 발급한 인증서를 사용해 암호화 서명되도록 의무화하십시오. Excel을 구성하여 <strong>디지털 서명된 매크로만</strong> 실행하고 서명되지 않은 매크로는 조용히 차단하도록 설정하십시오.</li>
</ul>
<h2 id="6-개발자-관점-안전한-자동화-구축">6. 개발자 관점: 안전한 자동화 구축</h2>
<p>Excel 파일을 구문 분석, 생성 또는 사용(예: <code>pandas</code>/<code>openpyxl</code>을 사용하는 Python 파이프라인, Node.js 마이크로서비스, 또는 C#/.NET 애플리케이션)하는 소프트웨어를 구축하고 있다면, 다음 개발 보호 조치를 적용하십시오:</p>
<ol>
<li>
<p><strong>업로드 경계에서 예상치 못한 파일 형식 거부:</strong>
애플리케이션이 재무 보고서를 기대한다면, 들어오는 파일이 <code>.xlsx</code> 형식에 정확히 맞는지 엄격히 검증하십시오. 내부 매직 바이트(표준 zip 헤더 <code>50 4B 03 04</code>)를 검사하고, 클라우드 버킷이나 데이터베이스에 저장하기 전에 아카이브 인덱스에 <code>vbaProject.bin</code> 항목이 존재하지 않는지 확인하십시오.</p>
</li>
<li>
<p><strong>수식 주입에 대비해 데이터 정화:</strong>
사용자 생성 입력을 CSV 또는 XLSX 파일로 내보낼 때, 위험한 문자(<code>=</code>, <code>+</code>, <code>-</code>, <code>@</code>, <code>\t</code>, <code>\r</code>)로 시작하는 셀 앞에 작은 따옴표(<code>'</code>) 또는 공백을 추가하십시오:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">sanitize_for_spreadsheet</span>(value: str) <span style="color:#f92672">-&gt;</span> str:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> value <span style="color:#f92672">and</span> value[<span style="color:#ae81ff">0</span>] <span style="color:#f92672">in</span> (<span style="color:#e6db74">&#39;=&#39;</span>, <span style="color:#e6db74">&#39;+&#39;</span>, <span style="color:#e6db74">&#39;-&#39;</span>, <span style="color:#e6db74">&#39;@&#39;</span>, <span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\t</span><span style="color:#e6db74">&#39;</span>, <span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\r</span><span style="color:#e6db74">&#39;</span>):
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;&#39;</span><span style="color:#e6db74">{</span>value<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> value
</span></span></code></pre></div></li>
<li>
<p><strong>VBA에서 Office Scripts 또는 웹 애드인으로 마이그레이션:</strong>
현대 기업 자동화를 위해 레거시 VBA를 완전히 단계적으로 폐지하십시오:</p>
<ul>
<li><strong>Office Scripts:</strong> TypeScript로 작성된 Office Scripts는 샌드박스된 클라우드 환경에서 실행되며, 네이티브 OS 시스템 호출을 노출하지 않고 웹 및 데스크톱 버전 모두에서 원활하게 작동합니다.</li>
<li><strong>Office Web Add-ins:</strong> 표준 HTML, CSS 및 최신 JavaScript를 사용하여 구축되며, 웹 추가 기능은 관리되는 JavaScript API를 통해 통신하고 로컬 운영 체제와 격리됩니다.</li>
</ul>
</li>
</ol>
<h2 id="7-스프레드시트-보안을-위한-요약-체크리스트">7. 스프레드시트 보안을 위한 요약 체크리스트</h2>
<ul>
<li><input disabled="" type="checkbox"> <strong>기본값으로 <code>.xlsx</code> 적용:</strong> 모든 표준 사용자 워크플로가 매크로가 없는 <code>.xlsx</code> 형식으로 저장하도록 요구합니다.</li>
<li><input disabled="" type="checkbox"> <strong>인터넷 출처 매크로 차단:</strong> GPO 또는 Intune을 통해 조직 전체에 MotW 정책 적용이 배포되었는지 확인합니다.</li>
<li><input disabled="" type="checkbox"> <strong>ASR 규칙 활성화:</strong> Office 제품이 명령 인터프리터나 하위 프로세스를 생성하는 것을 금지합니다.</li>
<li><input disabled="" type="checkbox"> <strong>Excel 4.0 (XLM) 사용 중단:</strong> 모든 워크스테이션에서 레거시 XLM 매크로 엔진이 영구적으로 비활성화되었는지 확인합니다.</li>
<li><input disabled="" type="checkbox"> <strong>애플리케이션 내보내기 정화:</strong> CSV 및 Excel 생성 루틴을 CSV/수식 삽입 공격으로부터 보호합니다.</li>
<li><input disabled="" type="checkbox"> <strong>Office Scripts로 전환:</strong> 레거시 관리 매크로를 TypeScript 기반 Office Scripts와 관리 API로 이전합니다.</li>
</ul>
<p>스프레드시트를 단순히 문서 파일이 아니라 실행 기능을 갖춘 구조화된 소프트웨어 컨테이너로 간주함으로써, 보안 팀과 개발자는 기업 컴퓨팅에서 가장 오래된 공격 경로 중 하나를 효과적으로 무력화할 수 있습니다.</p>
<h1 id="자주-묻는-질문-faq">자주 묻는 질문 (FAQ)</h1>
<h3 id="q1-xlsx-파일이-악성-매크로를-실행할-수-있나요">Q1: <code>.xlsx</code> 파일이 악성 매크로를 실행할 수 있나요?</h3>
<p>아니요, OpenXML 표준은 <code>.xlsx</code> 파일에 매크로 코드를 엄격히 금지하고 있으며, Excel은 정품 <code>.xlsx</code> 컨테이너에 삽입된 VBA 프로젝트를 거부하거나 제거합니다.</p>
<h3 id="q2-excel-파일이-편집-사용-또는-콘텐츠-사용을-요청하면-어떻게-해야-하나요">Q2: Excel 파일이 &ldquo;편집 사용&rdquo; 또는 &ldquo;콘텐츠 사용&quot;을 요청하면 어떻게 해야 하나요?</h3>
<p>보낸 사람을 알고 파일을 기대하고 있을 때만 권한을 부여하세요; 이 프롬프트는 신뢰할 수 없는 매크로가 코드를 실행하도록 허용하는 주요 체크포인트입니다.</p>
<h3 id="q3-microsoft-excel은-파일이-인터넷에서-왔는지-어떻게-판단하나요">Q3: Microsoft Excel은 파일이 인터넷에서 왔는지 어떻게 판단하나요?</h3>
<p>Windows는 다운로드된 파일에 숨겨진 &ldquo;Mark of the Web&rdquo;(Zone.Identifier) 스트림을 첨부하여 Excel이 해당 파일을 보호된 보기에서 열고 기본적으로 매크로를 차단하도록 신호를 보냅니다.</p>
<h3 id="q4-csv-파일이-xlsx1-및-xlsm7-파일보다-더-안전한가요">Q4: CSV 파일이 <a href="https://docs.fileformat.com/spreadsheet/xlsx/">XLSX</a> 및 <a href="https://docs.fileformat.com/spreadsheet/xlsm/">XLSM</a> 파일보다 더 안전한가요?</h3>
<p>CSV 파일은 기본 VBA 매크로를 포함할 수 없지만, 열 때 Excel이 실행하는 악성 명령이 포함된 경우 수식 주입 공격에 취약할 수 있습니다.</p>
<h3 id="q5-최신-office-scripts는-기존-vba-매크로와-어떻게-다릅니까">Q5: 최신 Office Scripts는 기존 VBA 매크로와 어떻게 다릅니까?</h3>
<p>Office Scripts는 샌드박스 런타임 환경 내에서 TypeScript로 실행되어 로컬 파일 시스템, 명령줄 또는 운영 체제 API에 접근하는 것을 방지합니다.</p>
<h2 id="관련-항목">관련 항목</h2>
<ul>
<li><a href="https://blog.fileformat.com/en/spreadsheet/csv-vs-xlsx-vs-ods-in-2026-best-spreadsheet-format-for-developers/">2026년 CSV vs XLSX vs ODS: 개발자를 위한 최고의 스프레드시트 형식</a></li>
<li><a href="https://blog.fileformat.com/en/spreadsheet/xls-vs-xlsx-vs-xlsm-vs-xlsb-choosing-the-right-spreadsheet-format/">XLS vs XLSX vs XLSM vs XLSB - 올바른 스프레드시트 형식 선택</a></li>
<li><a href="https://blog.fileformat.com/spreadsheet/what-is-excel/">Excel이란? 알아야 할 핵심 정보</a></li>
<li><a href="https://blog.fileformat.com/spreadsheet/excel-file-extensions-xlsx-xlsm-xls-xltx-xltm/">Excel 파일 형식: XLSX, XLSM, XLS, XLTX, XLTM</a></li>
<li><a href="https://blog.fileformat.com/spreadsheet/xls-vs-xlsx/">XLS와 XLSX의 차이</a></li>
</ul>
<!-- raw HTML omitted -->
]]></content:encoded>
    </item>
    
  </channel>
</rss>
