Terakhir Dikemas Kini: 28 Sept, 2026

Keselamatan Fail Excel Dijelaskan: XLSX, XLSM, dan Risiko Makro
Selama beberapa dekad, Microsoft Excel telah menjadi enjin universal operasi perniagaan. Ia mengimbangi bajet korporat, memvisualisasikan set data yang kompleks, menjejaki inventori, dan menggerakkan saluran analitik di hampir setiap industri.
Namun, fleksibiliti pengiraan yang sama menjadikan hamparan data kegemaran yang berterusan di kalangan penyerang siber. Penyerang telah memanfaatkan hamparan data sejak zaman awal virus makro pada akhir 1990-an. Walaupun Microsoft dan pentadbir sistem telah memperkenalkan pelbagai lapisan pertahanan—seperti pemisahan format fail dan penyekatan makro lalai—kejuruteraan sosial dan risiko seni bina halus terus memastikan serangan yang berfokus pada Excel tetap relevan.
Untuk membina kedudukan keselamatan yang tahan lasak, pembangun, pentadbir, dan pengguna kuasa mesti melihat di bawah antara muka buku kerja. Memahami bagaimana format OpenXML yang mendasari berfungsi, bagaimana .xlsx dan .xlsm berbeza pada tahap seni bina, dan bagaimana mekanik pelaksanaan makro berfungsi adalah penting untuk mempertahankan titik akhir moden.
1. Anatomi Fail Excel Moden: OpenXML Dihuraikan
Sebelum pelancaran Microsoft Office 2007, Excel menyimpan fail terutamanya menggunakan format binari proprietari, yang paling terkenal ialah format .xls (ditadbir oleh Binary Interchange File Format, atau BIFF8). Dalam fail .xls, rekod data, definisi pemformatan, formula, dan aliran makro Visual Basic for Applications (VBA) dibungkus ke dalam satu kontena storan berstruktur. Ini menjadikan pemeriksaan programatik sukar dan membolehkan penyerang menyembunyikan skrip muatan berbahaya di dalam sektor binari yang tidak telus.
Bermula dengan Excel 2007, Microsoft memperkenalkan standard Office Open XML (OOXML) (distandardkan sebagai ECMA-376 dan ISO/IEC 29500). Di bawah OOXML, buku kerja Excel tidak lagi menjadi blok binari monolitik. Sebaliknya, ia menjadi arkib zip yang mengandungi struktur hierarki dokumen XML, jadual hubungan, dan aset media terbenam.
Di Dalam Kontena ZIP
Jika anda mengambil mana-mana buku kerja Excel moden standard dan menamakan semula sambungannya kepada .zip, anda boleh mengekstrak kandungannya dengan mana-mana utiliti pemampatan standard:
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 struktur ini memberikan manfaat keselamatan serta-merta:
- DPI (Pemeriksaan Pakej Mendalam) & Kebolehlihatan Gerbang: Peranti keselamatan, proksi, dan ejen titik akhir boleh membuka arkib secara langsung dan mengurai pokok XML teks biasa untuk mengenal pasti rentetan mencurigakan, URL luaran, atau objek terbenam.
- Pengesahan Fail Deterministik: Jika sebuah fail mendakwa sebagai dokumen OpenXML tetapi melanggar sekatan skema, Excel menolak untuk membukanya atau menjalankannya dalam mod pemulihan berpasir.
- Pemisahan Format: Microsoft memisahkan hamparan pengiraan biasa daripada fail yang mampu menjalankan skrip prosedural terbenam.
2. XLSX vs. XLSM: Sempadan Seni Bina
Perbezaan utama antara .xlsx dan .xlsm terletak pada sama ada struktur fail membenarkan penyertaan projek makro boleh laku.
| Ciri / Dimensi | .xlsx (Hamparan Excel OpenXML) | .xlsm (Hamparan Excel Beraktifkan Makro) |
|---|---|---|
| Jenis Kandungan MIME | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | application/vnd.ms-excel.sheet.macroEnabled.12 |
| Kontena Penyimpanan VBA | Sangat Dilarang. Tidak dapat menyimpan vbaProject.bin | Dibenarkan. Mengandungi xl/vbaProject.bin |
| Risiko Pelaksanaan Asli | Sangat kecil untuk pelaksanaan makro; terhad kepada suntikan formula/DDE | Tinggi; boleh menjalankan kod VBA automatik apabila berinteraksi dengan buku kerja |
| Skema Ketat OpenXML | Mematuhi definisi XML yang ketat dan bebas makro | Termasuk definisi untuk sambungan automasi legasi dan moden |
| Penunjuk Visual Pengguna | Ikon hamparan hijau standard | Ikon hamparan berlencana tanda seru |
Mekanisme Penguatkuasaan: Mengapa XLSX Tidak Boleh Jalankan Makro
Satu soalan biasa di kalangan pentadbir junior dan pembangun ialah: Apa yang berlaku jika penyerang mengambil fail .xlsm yang berbahaya, menyuntik kod boleh laku, dan menamakan semula sambungan fail kepada .xlsx?
Jawapan ringkas: Fail tidak akan menjalankan makro.
Excel tidak bergantung semata-mata pada sambungan fail untuk menentukan peraturan pelaksanaan. Apabila membuka fail bernama .xlsx:
- Excel memeriksa muatan zip dan merujuk kepada
[Content_Types].xml. - Dalam fail
.xlsxyang sah, semua jenis kandungan yang ditakrifkan mewakili elemen data standard (sepertiworksheet,sharedStrings, ataustyles). - Jika penyerang secara manual menyuntik aliran VBA yang telah disusun (
xl/vbaProject.bin) ke dalam pakej.xlsxdan mengemas kini hubungan, Excel menghadapi percanggahan skema yang jelas:- Ia melihat sambungan
.xlsxyang terikat kepada jenis kandungan yang menunjukkan keupayaan makro. - Excel menghasilkan ralat integriti yang kritikal: "Excel tidak dapat membuka fail ‘filename.xlsx’ kerana format fail atau sambungan fail tidak sah. Sahkan bahawa fail tidak rosak…"
- Ia melihat sambungan
- Jika penyerang membiarkan jenis dalaman tidak berubah tanpa mendaftar binari, Excel menganggap
vbaProject.binsebagai lampiran yang tidak dirujuk dan terasing dalam arkib zip serta membuangnya sepenuhnya semasa kitaran pemuatan.
Akibatnya, fail yang berfungsi secara ketat sebagai kontena .xlsx yang sah tidak dapat menjalankan kod VBA asli. Walau bagaimanapun, ini tidak bermakna fail .xlsx bebas daripada semua vektor serangan, seperti yang dibincangkan kemudian dalam panduan ini.
3. Risiko Makro & Kitaran Serangan
Makro direka untuk mengautomasi tugas perakaunan berulang, pemodelan kewangan, dan manipulasi data melalui Visual Basic for Applications (VBA). Oleh kerana VBA dibina untuk automasi tempat kerja, ia diberikan akses meluas kepada sistem operasi Windows yang mendasari melalui Component Object Model (COM), Windows Script Host (WSH), dan panggilan API Win32 secara langsung.
Apabila makro yang tidak dipercayai dijalankan, ia beroperasi dengan keistimewaan yang sama tepat seperti pengguna yang log masuk. Ia tidak terperangkap dalam sandbox pelayar berjenis 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 Kemasukan Makro Umum
Cangkuk Auto-Pelaksanaan: Penyerang meletakkan titik masuk mereka dalam pengendali acara intrinsik seperti
Sub Auto_Open()atauPrivate Sub Workbook_Open(). Sebaik sahaja pengguna memberikan kebenaran pelaksanaan, rutin ini akan dipicu tanpa memerlukan sebarang klik di dalam hamparan.Pengaburan dan Stomping:
- Pengaburan Rentetan: Beban kerja menyembunyikan URL dan panggilan sistem menggunakan tatasusunan aksara, pengekodan XOR, penyahkodan Base64, atau penyambungan pembolehubah persekitaran (contoh,
Chr(112) & Chr(111) & Chr(119)...). - VBA Stomping: VBA wujud dalam dua bentuk di dalam
vbaProject.bin: kod sumber yang ditafsirkan dan p-code terkompilasi (kod pseudo yang disasarkan kepada versi Office tertentu yang menyusunnya). Penyerang boleh memadamkan kod sumber teks jelas sepenuhnya, meninggalkan hanya p-code terkompilasi. Banyak penyelesaian antivirus asas dan penganalisis statik hanya memeriksa aliran sumber, membiarkan p-code tidak dikesan sehingga dijalankan oleh versi Office yang sepadan.
- Pengaburan Rentetan: Beban kerja menyembunyikan URL dan panggilan sistem menggunakan tatasusunan aksara, pengekodan XOR, penyahkodan Base64, atau penyambungan pembolehubah persekitaran (contoh,
Menggunakan Sumber Tempatan (LotL): Makro berniat jahat moden jarang menurunkan fail
.exeterus ke cakera, yang akan serta-merta memberi amaran kepada ejen Pengesanan dan Respons Titik Akhir (EDR). Sebaliknya, mereka berinteraksi dengan alat sistem terbina dalam:- Mencipta contoh
WScript.Shelluntuk melaksanakan argumen baris perintah. - Memanggil
PowerShell.exedengan dasar pelaksanaan yang dilangkau (-ExecutionPolicy Bypass -WindowStyle Hidden). - Memanggil API Win32 asli melalui
Declare PtrSafe Function CreateProcessatauVirtualAllocuntuk menyuntik shellcode secara langsung ke dalam memori sistem.
- Mencipta contoh
4. Vektor Ancaman Spreadsheet Lain (Melebihi VBA Standard)
Mengamankan persekitaran daripada fail .xlsm hanyalah separuh daripada perjuangan. Penyerang juga menggunakan mekanisme yang beroperasi secara bebas daripada VBA tradisional.
Pertukaran Data Dinamik (DDE) dan Suntikan CSV
Excel mempunyai protokol warisan yang dipanggil Dynamic Data Exchange (DDE), direka untuk membenarkan perkongsian data antara aplikasi yang sedang berjalan (contohnya, menstrim data penunjuk saham secara langsung dari program berasingan ke dalam sel Excel).
- Bagaimana Suntikan Formula Beroperasi:
Apabila sel hamparan mula dengan aksara seperti
=,@,+, atau-, Excel mentafsirkan kandungannya sebagai formula. Jika penyerang mengawal input yang dieksport ke dalam hamparan (seperti medan “Comments” yang tidak disanitasi dalam aplikasi web yang dieksport ke CSV atau XLSX), mereka boleh menyuntik:=cmd|'/C powershell.exe -w hidden -enc <base64_payload>'!A0 - Apabila dibuka, Excel menilai formula tersebut, memberi amaran kepada pengguna dengan prompt tentang memulakan aplikasi luar, dan, jika diluluskan, menjalankan shell sistem.
Makro Warisan Excel 4.0 (XLM)
Sebelum VBA diperkenalkan pada tahun 1993, Excel menggunakan sistem makro berasaskan formula yang dikenali sebagai Excel 4.0 (XLM) macros. Makro ini berada dalam helaian makro khusus dan bukannya projek VBA yang berasingan.
Kerana makro XLM ditulis sebagai formula sel (seperti =EXEC("calc.exe")), ia mengelak banyak enjin pemeriksaan statik VBA standard. Penyerang memfavoritkan makro XLM pada akhir 2010-an dan awal 2020-an untuk mengelak pengesanan automatik sebelum Microsoft melumpuhkan mereka secara lalai dalam binaan perusahaan moden.
Sambungan Luaran Berbahaya dan Objek OLE
Buku kerja .xlsx biasa masih boleh memperkenalkan risiko melalui sumber luaran:
- Embedded OLE Packages: Penyerang boleh menyisipkan fail boleh laku yang disamarkan sebagai ikon PDF terbenam terus ke dalam helaian kerja.
- External Workbook Links & Web Queries: Sebuah XLSX boleh mengandungi rujukan luaran yang secara automatik memulakan permintaan HTTP GET ke pelayan command-and-control (C2) yang dikawal oleh penyerang apabila fail dibuka, biasanya digunakan untuk pengintipan atau serangan pengumpulan hash netNTLM.
5. Pengukuhan Perusahaan & Strategi Pertahanan Berlapis
Membela diri daripada ancaman yang dibawa oleh Excel memerlukan pendekatan berlapis yang merangkumi pemeriksaan rangkaian, konfigurasi sistem, kawalan akses, dan proses operasi.
+─────────────────────────────────────────────────────────+
| 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. Laksanakan Penandaan Web (MotW) Penyekatan Makro
Pada tahun 2022, Microsoft mengemas kini tingkah laku lalai aplikasi Office: makro dalam fail yang berasal dari internet disekat secara lalai.
Apabila pengguna memuat turun fail melalui pelayar atau klien luaran, Windows menandakan fail tersebut dengan aliran data alternatif (ADS) bernama Zone.Identifier (Zon 3 menunjukkan Internet). Untuk fail yang mempunyai tanda ini, Excel melumpuhkan makro sepenuhnya dan memaparkan sepanduk keselamatan berwarna merah: > “RISIKO KESELAMATAN: Microsoft telah menyekat makro daripada dijalankan kerana sumber fail ini tidak dipercayai.”
Tindakan Pentadbiran: Pastikan tingkah laku ini dikuatkuasakan melalui Group Policy dan tidak dapat diubah oleh pengguna akhir:
- Laluan GPO:
User Configuration > Administrative Templates > Microsoft Excel 2016 > Excel Options > Security > Trust Center - Tetapan: Benarkan “Sekat makro daripada dijalankan dalam fail Office dari Internet”.
2. Konfigurasikan Peraturan Pengurangan Permukaan Serangan (ASR)
Organisasi yang menggunakan Microsoft Defender for Endpoint harus mengaktifkan peraturan Pengurangan Permukaan Serangan teras yang direka khusus untuk aplikasi Office:
Sekat aplikasi Office daripada mencipta proses anak(GUID:D4F940AB-401B-4EFC-AADC-AD5F3C50688A)- Mencegah Excel daripada melancarkan PowerShell, CMD, atau enjin skrip.
Blok aplikasi Office daripada menyuntik kod ke proses lain(GUID:75668C1F-73B5-4CF0-BB93-3ECF5CB7CC84)Blok panggilan API Win32 daripada makro Office(GUID:92E6390C-CF9E-43CE-BD8C-0E6F0FE66680)
3. Manfaatkan Antarmuka Imbas Antimalware (AMSI)
Versi moden Microsoft 365 mengintegrasikan pelaksanaan VBA secara langsung dengan AMSI. Walaupun penyerang menggunakan pengaburan rentetan yang kompleks atau penindasan VBA, enjin masa jalan VBA menghantar perintah yang telah dibina semula dan tidak disulitkan kepada enjin antivirus/EDR yang dipasang pada milisaat yang tepat sebelum pelaksanaan. Pastikan perlindungan titik akhir anda memantau acara masa jalan AMSI secara aktif.
4. Beralih ke Lokasi Dipercayai dan Sijil Digital
Untuk organisasi yang bergantung pada hamparan kerja automatik untuk operasi harian:
- Hapuskan fail XLSM yang tidak terkawal dalam folder Muat Turun atau desktop pengguna.
- Gunakan Lokasi Dipercayai: Hadkan pelaksanaan makro secara eksklusif kepada perkongsian rangkaian baca-sahaja yang diuruskan oleh pentadbir IT.
- Penandatanganan Kod: Wajibkan semua makro yang dibangunkan secara dalaman ditandatangani secara kriptografi menggunakan sijil yang dikeluarkan oleh Infrastruktur Kunci Awam (PKI) perusahaan. Konfigurasikan Excel untuk melaksanakan hanya makro yang ditandatangani secara digital dan secara senyap menyekat yang tidak ditandatangani.
6. Perspektif Pembangun: Membina Automasi Selamat
Jika anda sedang membina perisian yang mengurai, menjana, atau menggunakan fail Excel (contohnya, pipeline Python menggunakan pandas/openpyxl, perkhidmatan mikro Node.js, atau aplikasi C#/.NET), terapkan langkah-langkah keselamatan pembangunan ini:
Tolak Format Fail yang Tidak Dijangka pada Sempadan Muat Naik: Jika aplikasi anda menjangka laporan kewangan, sahkan secara ketat bahawa fail yang masuk mematuhi
.xlsx. Periksa bait magik dalaman (pengepala zip standard50 4B 03 04) dan pastikan tiada entrivbaProject.bindalam indeks arkib sebelum disimpan ke dalam baldi awan atau stor pangkalan data.Sanitasi Data daripada Suntikan Formula: Apabila mengeksport input yang dihasilkan pengguna ke dalam fail CSV atau XLSX, letakkan apostrof (
') atau ruang di hadapan mana-mana sel yang bermula dengan aksara berbahaya (=,+,-,@,\t,\r):def sanitize_for_spreadsheet(value: str) -> str: if value and value[0] in ('=', '+', '-', '@', '\t', '\r'): return f"'{value}" return valueBerpindah dari VBA ke Office Scripts atau Web Add-ins: Untuk automasi perusahaan moden, hapuskan sepenuhnya VBA warisan:
- Office Scripts: Ditulis dalam TypeScript, Office Scripts dijalankan dalam persekitaran awan berpasir dan beroperasi dengan lancar merentasi edisi web dan desktop tanpa mendedahkan panggilan sistem OS asli.
- Office Web Add-ins: Dibina menggunakan HTML, CSS standard, dan JavaScript moden, web add-in berkomunikasi melalui API JavaScript terurus dan diasingkan daripada sistem operasi tempatan.
7. Senarai Semak Ringkas untuk Keselamatan Hamparan
- Paksa
.xlsxsecara lalai: Memerlukan semua aliran kerja pengguna standard untuk menyimpan sebagai.xlsxtanpa makro. - Sekat makro berasaskan Internet: Sahkan bahawa penguatkuasaan dasar MotW dilaksanakan di seluruh organisasi anda melalui GPO atau Intune.
- Dayakan peraturan ASR: Larang produk Office daripada memulakan penafsir perintah atau proses anak.
- Nyahaktifkan Excel 4.0 (XLM): Pastikan enjin makro XLM warisan dinyahaktifkan secara kekal pada semua stesen kerja.
- Sanitasi eksport aplikasi: Lindungi rutin penjanaan CSV dan Excel daripada suntikan CSV/rumus.
- Bergerak ke arah Office Scripts: Alihkan makro pentadbiran warisan kepada Office Scripts yang didorong oleh TypeScript dan API terurus.
Dengan menganggap hamparan kerja bukan sekadar fail dokumen, tetapi sebagai kontena perisian berstruktur yang membawa keupayaan pelaksanaan, pasukan keselamatan dan pembangun dapat dengan berkesan menetralkan salah satu vektor serangan tertua dalam pengkomputeran perusahaan.
Soalan Lazim (FAQ)
Q1: Bolehkah fail yang berakhir dengan .xlsx menjalankan makro berbahaya?
Tidak, piawaian OpenXML secara tegas melarang kod makro dalam fail .xlsx, dan Excel akan menolak atau menanggalkan sebarang projek VBA yang disuntik ke dalam kontena .xlsx yang sah.
Q2: Apa yang harus saya lakukan jika fail Excel meminta saya untuk “Enable Editing” atau “Enable Content”?
Berikan kebenaran hanya jika anda mengenali penghantar dan menjangka fail tersebut; prompt ini adalah titik pemeriksaan utama yang membenarkan makro tidak dipercayai menjalankan kod.
Q3: Bagaimana Microsoft Excel menentukan sama ada fail itu datang dari internet?
Windows melampirkan aliran tersembunyi "Mark of the Web" (Zone.Identifier) kepada fail yang dimuat turun, yang memberi isyarat kepada Excel untuk membukanya dalam Paparan Terlindung dan menyekat makro secara lalai.
Q4: Adakah fail CSV lebih selamat berbanding fail XLSX dan XLSM?
Fail CSV tidak dapat mengandungi makro VBA asli, tetapi ia tetap terdedah kepada serangan suntikan formula jika mengandungi arahan berniat jahat yang dijalankan oleh Excel semasa dibuka.
Q5: Bagaimana Office Scripts moden berbeza daripada makro VBA tradisional?
Office Scripts dijalankan pada TypeScript dalam persekitaran masa jalan berpasir, menghalang mereka daripada mengakses sistem fail tempatan anda, baris perintah, atau API sistem operasi.