Terakhir Diperbarui: 28 Sept, 2026

XLSX vs. XLSM Security: How Spreadsheet Macros Expose Your Network

Keamanan File Excel Dijelaskan: XLSX, XLSM, dan Risiko Makro

Selama beberapa dekade, Microsoft Excel telah menjadi mesin universal operasi bisnis. Ia menyeimbangkan anggaran perusahaan, memvisualisasikan set data yang kompleks, melacak inventaris, dan menggerakkan alur analitik di hampir setiap industri.

Namun, fleksibilitas komputasi yang sama menjadikan spreadsheet favorit yang bertahan lama di antara musuh siber. Penyerang telah memanfaatkan spreadsheet sejak masa awal virus makro pada akhir 1990-an. Sementara Microsoft dan administrator sistem telah memperkenalkan banyak lapisan pertahanan—seperti pemisahan format file dan pemblokiran makro default—rekayasa sosial dan risiko arsitektur yang halus terus membuat serangan yang berfokus pada Excel tetap relevan.

Untuk membangun postur keamanan yang tangguh, pengembang, administrator, dan pengguna tingkat lanjut harus melihat di bawah antarmuka workbook. Memahami cara kerja format OpenXML yang mendasari, bagaimana .xlsx dan .xlsm berbeda pada tingkat arsitektur, serta bagaimana mekanisme eksekusi makro bekerja sangat penting untuk melindungi endpoint modern.

1. Anatomi File Excel Modern: OpenXML Didekontruksi

Sebelum rilis Microsoft Office 2007, Excel menyimpan file terutama menggunakan format biner proprietari, terutama format .xls (diatur oleh Binary Interchange File Format, atau BIFF8). Pada file .xls, catatan data, definisi pemformatan, formula, dan aliran makro Visual Basic for Applications (VBA) dikemas ke dalam satu kontainer penyimpanan terstruktur. Hal ini membuat inspeksi programatik menjadi sulit dan memungkinkan penyerang menyembunyikan skrip muatan berbahaya di dalam sektor biner yang tidak transparan.

Mulai dari Excel 2007, Microsoft memperkenalkan standar Office Open XML (OOXML) (distandarisasi sebagai ECMA-376 dan ISO/IEC 29500). Di bawah OOXML, workbook Excel tidak lagi berupa blob biner monolitik. Sebaliknya, mereka menjadi arsip zip yang berisi struktur hierarkis dokumen XML, tabel hubungan, dan aset media yang disematkan.

Di Dalam Kontainer ZIP

Jika Anda mengambil workbook Excel modern standar apa pun dan mengubah ekstensi menjadi .zip, Anda dapat mengekstrak isinya dengan utilitas dekompresi standar apa pun:

my_workbook.xlsx (extracted)
│
├── [Content_Types].xml        <-- Registry of MIME types and structural parts
├── _rels/                     <-- Package-level relationship mappings
│   └── .rels
├── docProps/                  <-- Metadata (author, creation date, revision)
│   ├── app.xml
│   └── core.xml
└── xl/                        <-- Core spreadsheet contents
    ├── workbook.xml           <-- Workbook-level parameters and sheet list
    ├── styles.xml             <-- Cell styles, fonts, and borders
    ├── sharedStrings.xml      <-- Unique string index for performance optimization
    ├── _rels/
    │   └── workbook.xml.rels  <-- Sheet and component dependencies
    └── worksheets/
        ├── sheet1.xml         <-- Raw cell values, formulas, and grid geometry
        └── sheet2.xml

Perubahan struktural ini memberikan manfaat keamanan langsung:

  1. DPI (Deep Packet Inspection) & Visibilitas Gateway: Perangkat keamanan, proxy, dan agen endpoint dapat membuka arsip secara langsung dan mengurai pohon XML teks biasa untuk mengidentifikasi string mencurigakan, URL eksternal, atau objek tersemat.
  2. Validasi File Deterministik: Jika sebuah file mengklaim sebagai dokumen OpenXML tetapi melanggar batasan skema, Excel menolak membukanya atau menjalankannya dalam mode pemulihan sandbox.
  3. Pemisahan Format: Microsoft memisahkan spreadsheet komputasi reguler dari file yang dapat mengeksekusi skrip prosedural tersemat.

2. XLSX vs. XLSM: Batas Arsitektur

Perbedaan utama antara .xlsx dan .xlsm terletak pada apakah struktur file mengizinkan penyertaan proyek makro yang dapat dieksekusi.

Fitur / Dimensi.xlsx (Spreadsheet Excel OpenXML).xlsm (Spreadsheet Excel dengan Makro)
Tipe Konten MIMEapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetapplication/vnd.ms-excel.sheet.macroEnabled.12
Kontainer Penyimpanan VBADilarang Keras. Tidak dapat menyimpan vbaProject.binDiizinkan. Mengandung xl/vbaProject.bin
Risiko Eksekusi AsliSangat kecil untuk eksekusi makro; terbatas pada penyuntikan formula/DDETinggi; dapat menjalankan kode VBA otomatis saat berinteraksi dengan buku kerja
Skema OpenXML KetatMematuhi definisi XML yang ketat dan bebas makroMenyertakan definisi untuk ekstensi otomatisasi lama dan modern
Indikator Visual PenggunaIkon spreadsheet hijau standarIkon spreadsheet dengan lencana tanda seru

Mekanisme Penegakan: Mengapa XLSX Tidak Dapat Menjalankan Makro

Pertanyaan umum di antara administrator junior dan pengembang adalah: Apa yang terjadi jika seorang penyerang mengambil file .xlsm berbahaya, menyuntikkan kode yang dapat dieksekusi, dan mengubah ekstensi file menjadi .xlsx?

Jawaban singkat: File tidak akan mengeksekusi makro.

Excel tidak bergantung secara eksklusif pada ekstensi file untuk menentukan aturan eksekusi. Saat membuka file bernama .xlsx:

  1. Excel memeriksa muatan zip dan merujuk ke [Content_Types].xml.
  2. Dalam file .xlsx yang asli, semua tipe konten yang didefinisikan mewakili elemen data standar (seperti worksheet, sharedStrings, atau styles).
  3. Jika seorang penyerang secara manual menyuntikkan aliran VBA yang telah dikompilasi (xl/vbaProject.bin) ke dalam paket .xlsx dan memperbarui hubungan, Excel menemukan kontradiksi skema yang eksplisit:
    • Ia melihat ekstensi .xlsx yang terikat pada tipe konten yang menunjukkan kemampuan makro.
    • Excel menghasilkan kesalahan integritas fatal: “Excel tidak dapat membuka file ‘filename.xlsx’ karena format file atau ekstensi file tidak valid. Pastikan bahwa file tidak rusak…”
  4. Jika penyerang membiarkan tipe internal tetap tidak berubah tanpa mendaftarkan biner, Excel memperlakukan vbaProject.bin sebagai lampiran yang tidak terreferensi dan terabaikan di dalam arsip zip serta membuangnya sepenuhnya selama siklus pemuatan.

Akibatnya, sebuah file yang benar-benar berfungsi sebagai kontainer .xlsx yang sah tidak dapat menjalankan kode VBA asli. Namun, itu tidak berarti file .xlsx bebas dari semua vektor serangan, seperti yang dibahas lebih lanjut dalam panduan ini.

3. Risiko Makro & Siklus Hidup Serangan

Makro dirancang untuk mengotomatisasi tugas akuntansi berulang, pemodelan keuangan, dan manipulasi data melalui Visual Basic for Applications (VBA). Karena VBA dibangun untuk otomasi di tempat kerja, ia diberikan akses luas ke sistem operasi Windows yang mendasarinya melalui Component Object Model (COM), Windows Script Host (WSH), dan panggilan API Win32 langsung.

Ketika sebuah makro yang tidak dipercaya dijalankan, ia berjalan dengan hak istimewa yang persis sama dengan pengguna yang masuk. Makro tersebut tidak terperangkap dalam sandbox browser bergaya JavaScript yang tervirtualisasi.

+--------------------------------------------------------------------------------+
|                             ATTACK LIFECYCLE                                   |
+--------------------------------------------------------------------------------+
                                       │
                                       ▼
  [ Delivery & Evasion ]  ──────► Spear-phishing email with .xlsm, .xlam, or .zip.
                                       │
                                       ▼
  [ Social Engineering ]  ──────► Lures victim to bypass Protected View ("Enable Content").
                                       │
                                       ▼
  [ 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.

Teknik Masuk Makro Umum

  1. Pengait Auto-Eksekusi: Penyerang menempatkan titik masuk mereka dalam penangan peristiwa intrinsik seperti Sub Auto_Open() atau Private Sub Workbook_Open(). Segera setelah pengguna memberikan izin eksekusi, rutin ini dipicu tanpa memerlukan klik apa pun di dalam spreadsheet.

  2. Pengaburan dan Stomping:

    • Pengaburan String: Payload menyembunyikan URL dan panggilan sistem menggunakan array karakter, enkoding XOR, dekode Base64, atau penggabungan variabel lingkungan (mis., Chr(112) & Chr(111) & Chr(119)...).
    • VBA Stomping: VBA ada dalam dua bentuk di dalam vbaProject.bin: kode sumber yang diinterpretasikan dan p-code yang dikompilasi (pseudo-code yang ditargetkan pada versi Office tertentu yang mengkompilasinya). Penyerang dapat menghapus seluruh kode sumber dalam teks jelas, meninggalkan hanya p-code yang dikompilasi. Banyak solusi antivirus dasar dan analis statis hanya memeriksa aliran sumber, sehingga p-code tidak terdeteksi hingga dijalankan oleh versi Office yang cocok.
  3. Memanfaatkan Sumber Daya Sistem (LotL): Makro berbahaya modern jarang menurunkan file .exe langsung ke disk, yang akan segera memberi peringatan kepada agen Endpoint Detection and Response (EDR). Sebaliknya, mereka berinteraksi dengan alat sistem bawaan:

    • Membuat instance WScript.Shell untuk mengeksekusi argumen baris perintah.
    • Memanggil PowerShell.exe dengan kebijakan eksekusi yang dilewati (-ExecutionPolicy Bypass -WindowStyle Hidden).
    • Memanggil API Win32 native melalui Declare PtrSafe Function CreateProcess atau VirtualAlloc untuk menyuntikkan shellcode langsung ke memori sistem.

4. Vektor Ancaman Spreadsheet Lain (Di Luar VBA Standar)

Mengamankan lingkungan dari file .xlsm hanya setengah dari pertempuran. Penyerang juga menggunakan mekanisme yang beroperasi secara independen dari VBA tradisional.

Pertukaran Data Dinamis (DDE) dan Injeksi CSV

Excel memiliki protokol warisan yang disebut Dynamic Data Exchange (DDE), yang dirancang untuk memungkinkan berbagi data antar aplikasi yang sedang berjalan (misalnya, streaming data ticker saham secara langsung dari program terpisah ke sel Excel).

  • Cara Kerja Injeksi Formula: Ketika sel spreadsheet dimulai dengan karakter seperti =, @, +, atau -, Excel menginterpretasikan isinya sebagai formula. Jika penyerang mengendalikan input yang diekspor ke spreadsheet (seperti bidang “Comments” yang tidak disanitasi dalam aplikasi web yang diekspor ke CSV atau XLSX), mereka dapat menyuntikkan:
    =cmd|'/C powershell.exe -w hidden -enc <base64_payload>'!A0
    
  • Saat dibuka, Excel mengevaluasi formula, memberi peringatan kepada pengguna dengan prompt tentang memulai aplikasi eksternal, dan, jika disetujui, menjalankan shell sistem.

Makro Warisan Excel 4.0 (XLM)

Sebelum VBA diperkenalkan pada tahun 1993, Excel menggunakan sistem makro berbasis rumus yang dikenal sebagai Excel 4.0 (XLM) macros. Makro ini berada di dalam lembar makro khusus, bukan dalam proyek VBA terpisah.

Karena makro XLM ditulis sebagai rumus sel (seperti =EXEC(\"calc.exe\")), mereka melewati banyak mesin inspeksi statis VBA standar. Penyerang menyukai makro XLM pada akhir 2010-an dan awal 2020-an untuk menghindari deteksi otomatis sebelum Microsoft menonaktifkannya secara default pada build enterprise modern.

Koneksi Eksternal Berbahaya dan Objek OLE

Buku kerja .xlsx biasa masih dapat menimbulkan risiko melalui sumber daya eksternal:

  • Embedded OLE Packages: Seorang penyerang dapat menyisipkan file eksekusi yang disamarkan sebagai ikon PDF tersemat langsung ke dalam lembar kerja.
  • External Workbook Links & Web Queries: Sebuah XLSX dapat berisi referensi eksternal yang secara otomatis memulai permintaan HTTP GET ke server command-and-control (C2) yang dikendalikan penyerang saat file dibuka, biasanya digunakan untuk pengintaian atau serangan pengumpulan hash netNTLM.

5. Penguatan Perusahaan & Strategi Pertahanan Berlapis

Membela diri terhadap ancaman yang dibawa oleh Excel memerlukan pendekatan berlapis yang mencakup inspeksi jaringan, konfigurasi sistem, kontrol akses, dan proses operasional.

+─────────────────────────────────────────────────────────+
|                  ENTERPRISE DEFENSE LAYERS               |
+─────────────────────────────────────────────────────────+
|  PERIMETER: Drop inbound .xlsm, .xla, and .xltm at mail |
|  gateway unless cryptographically signed or exempted.   |
+---------------------------------------------------------+
|  IDENTITY & 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.                |
+─────────────────────────────────────────────────────────+

1. Terapkan Mark of the Web (MotW) Pemblokiran Makro

Pada tahun 2022, Microsoft memperbarui perilaku default aplikasi Office: makro dalam file yang berasal dari internet diblokir secara default.

Ketika pengguna mengunduh file melalui peramban atau klien eksternal, Windows menandai file dengan aliran data alternatif (ADS) bernama Zone.Identifier (Zona 3 menunjukkan Internet). Untuk file yang memiliki tanda ini, Excel menonaktifkan makro sepenuhnya dan menampilkan banner keamanan berwarna merah: > “RISIKO KEAMANAN: Microsoft telah memblokir makro agar tidak berjalan karena sumber file ini tidak tepercaya.”

Tindakan Administratif: Pastikan perilaku ini ditegakkan melalui Group Policy dan tidak dapat diubah oleh pengguna akhir:

  • Jalur GPO: User Configuration > Administrative Templates > Microsoft Excel 2016 > Excel Options > Security > Trust Center
  • Pengaturan: Aktifkan “Blokir makro agar tidak berjalan dalam file Office dari Internet”.

2. Konfigurasikan Aturan Pengurangan Permukaan Serangan (ASR)

Organisasi yang menggunakan Microsoft Defender for Endpoint harus mengaktifkan aturan Pengurangan Permukaan Serangan inti yang dirancang khusus untuk aplikasi Office:

  • Blokir aplikasi Office dari membuat proses anak (GUID: D4F940AB-401B-4EFC-AADC-AD5F3C50688A)
    • Mencegah Excel meluncurkan PowerShell, CMD, atau mesin skrip.
  • Blokir aplikasi Office dari menyuntikkan kode ke proses lain (GUID: 75668C1F-73B5-4CF0-BB93-3ECF5CB7CC84)
  • Blokir panggilan API Win32 dari makro Office (GUID: 92E6390C-CF9E-43CE-BD8C-0E6F0FE66680)

3. Manfaatkan Antimalware Scan Interface (AMSI)

Versi modern Microsoft 365 mengintegrasikan eksekusi VBA secara langsung dengan AMSI. Bahkan jika penyerang menerapkan obfuscasi string yang kompleks atau VBA stomping, mesin runtime VBA mengirimkan perintah yang telah direkonstruksi dan tidak terenkripsi ke mesin antivirus/EDR yang terpasang tepat milidetik sebelum eksekusi. Pastikan perlindungan endpoint Anda secara aktif memantau peristiwa runtime AMSI.

4. Beralih ke Lokasi Tepercaya dan Sertifikat Digital

Untuk organisasi yang bergantung pada spreadsheet otomatis untuk operasi sehari-hari:

  • Hilangkan file XLSM yang tersebar di folder Unduhan atau desktop pengguna.
  • Gunakan Lokasi Tepercaya: Batasi eksekusi makro secara eksklusif ke share jaringan hanya-baca yang dikelola oleh administrator TI.
  • Penandatanganan Kode: Wajibkan semua makro yang dikembangkan secara internal ditandatangani secara kriptografis menggunakan sertifikat yang dikeluarkan oleh Infrastruktur Kunci Publik (PKI) perusahaan. Konfigurasikan Excel untuk mengeksekusi hanya makro yang ditandatangani secara digital dan secara diam-diam memblokir yang tidak ditandatangani.

6. Perspektif Pengembang: Membangun Otomatisasi Aman

Jika Anda sedang membangun perangkat lunak yang mengurai, menghasilkan, atau mengonsumsi file Excel (misalnya, pipeline Python menggunakan pandas/openpyxl, layanan mikro Node.js, atau aplikasi C#/.NET), terapkan langkah-langkah pengamanan pengembangan berikut:

  1. Tolak Format File yang Tidak Diharapkan pada Batas Unggah: Jika aplikasi Anda mengharapkan laporan keuangan, lakukan validasi ketat bahwa file yang masuk sesuai dengan .xlsx. Periksa byte magis internal (header zip standar 50 4B 03 04) dan pastikan tidak ada entri vbaProject.bin dalam indeks arsip sebelum menyimpannya ke bucket cloud atau penyimpanan basis data.

  2. Sanitasi Data terhadap Injeksi Formula: Saat mengekspor masukan yang dibuat pengguna ke file CSV atau XLSX, tambahkan apostrof (') atau spasi di depan setiap sel yang dimulai dengan karakter berbahaya (=, +, -, @, \t, \r):

    def sanitize_for_spreadsheet(value: str) -> str:
        if value and value[0] in ('=', '+', '-', '@', '\t', '\r'):
            return f"'{value}"
        return value
    
  3. Migrasi dari VBA ke Office Scripts atau Web Add-in: Untuk otomatisasi perusahaan modern, hilangkan sepenuhnya VBA warisan:

    • Office Scripts: Ditulis dalam TypeScript, Office Scripts berjalan dalam lingkungan cloud yang terisolasi dan beroperasi secara mulus di edisi web dan desktop tanpa mengekspos panggilan sistem OS native.
    • Office Web Add-ins: Dibangun menggunakan HTML, CSS standar, dan JavaScript modern, web add-in berkomunikasi melalui API JavaScript yang dikelola dan terisolasi dari sistem operasi lokal.

7. Daftar Periksa Ringkas untuk Keamanan Spreadsheet

  • Terapkan .xlsx secara default: Meminta semua alur kerja pengguna standar untuk menyimpan sebagai .xlsx bebas makro.
  • Blokir makro asal Internet: Pastikan penegakan kebijakan MotW diterapkan di seluruh organisasi Anda melalui GPO atau Intune.
  • Aktifkan aturan ASR: Larang produk Office memunculkan interpreter perintah atau proses anak.
  • Hapus dukungan Excel 4.0 (XLM): Pastikan mesin makro XLM warisan dinonaktifkan secara permanen di semua workstation.
  • Sanitisasi ekspor aplikasi: Lindungi rutin pembuatan CSV dan Excel dari injeksi CSV/formula.
  • Bergerak ke Office Scripts: Alihkan makro administratif warisan ke Office Scripts berbasis TypeScript dan API yang dikelola.

Dengan memperlakukan spreadsheet bukan sekadar file dokumen, melainkan sebagai kontainer perangkat lunak terstruktur yang memiliki kemampuan eksekusi, tim keamanan dan pengembang dapat secara efektif menetralkan salah satu vektor serangan tertua dalam komputasi perusahaan.

Pertanyaan yang Sering Diajukan (FAQ)

Q1: Bisakah file yang berakhiran .xlsx menjalankan makro berbahaya?

Tidak, standar OpenXML secara tegas melarang kode makro dalam file .xlsx, dan Excel akan menolak atau menghapus proyek VBA apa pun yang disuntikkan ke dalam kontainer .xlsx yang sah.

Q2: Apa yang harus saya lakukan jika file Excel meminta saya untuk “Enable Editing” atau “Enable Content”?

Berikan izin hanya jika Anda mengenal pengirim dan mengharapkan file tersebut; prompt ini adalah titik pemeriksaan utama yang memungkinkan makro tidak tepercaya mengeksekusi kode.

Q3: Bagaimana Microsoft Excel menentukan apakah sebuah file berasal dari internet?

Windows menambahkan aliran tersembunyi “Mark of the Web” (Zone.Identifier) ke file yang diunduh, yang memberi sinyal kepada Excel untuk membuka file tersebut dalam Protected View dan memblokir makro secara default.

Q4: Apakah file CSV lebih aman daripada file XLSX dan XLSM?

File CSV tidak dapat berisi makro VBA asli, tetapi tetap rentan terhadap serangan injeksi formula jika mengandung perintah berbahaya yang dijalankan oleh Excel saat dibuka.

Q5: Bagaimana Office Scripts modern berbeda dari makro VBA tradisional?

Office Scripts dijalankan dengan TypeScript dalam lingkungan runtime yang terisolasi (sandbox), sehingga mencegahnya mengakses sistem file lokal Anda, baris perintah, atau API sistem operasi.

Lihat Juga