آخر تحديث: 28 سبتمبر، 2026

شرح أمان ملفات Excel: XLSX، XLSM، ومخاطر الماكرو
على مدى عقود، ظل مايكروسوفت إكسل هو المحرك الشامل للعمليات التجارية. فهو يوازن ميزانيات الشركات، ويُصوِّر مجموعات البيانات المعقدة، ويتتبع المخزون، ويقوِّي خطوط التحليل عبر تقريبًا كل الصناعات.
ومع ذلك، فإن نفس المرونة الحاسوبية تجعل جداول البيانات مفضلة دائمة بين الخصوم السيبرانيين. لقد سخر المهاجمون جداول البيانات كأسلحة منذ الأيام الأولى لفيروسات الماكرو في أواخر التسعينيات. بينما قدمت مايكروسوفت ومسؤولو النظام عدة طبقات من الدفاع—مثل فصل صيغ الملفات وحجب الماكرو الافتراضي—لا يزال الهندسة الاجتماعية والمخاطر المعمارية الدقيقة تحافظ على صلة الهجمات التي تستهدف إكسل.
لبناء وضع أمان مرن، يجب على المطورين والمسؤولين والمستخدمين المتقدمين النظر تحت واجهة المصنف. فهم كيفية عمل تنسيق OpenXML الأساسي، وكيف تختلف .xlsx و .xlsm على مستوى معماري، وكيف تعمل آليات تنفيذ الماكرو أمر حيوي للدفاع عن نقاط النهاية الحديثة.
1. تشريح ملفات Excel الحديثة: تفكيك OpenXML
قبل إصدار Microsoft Office 2007، كان Excel يحفظ الملفات أساسًا باستخدام تنسيقات ثنائية مملوكة، وأبرزها تنسيق .xls (المحكم بواسطة تنسيق تبادل الملفات الثنائية، أو BIFF8). في ملفات .xls، تُجَمَّع سجلات البيانات وتعريفات التنسيق والصيغ وتدفقات ماكرو Visual Basic for Applications (VBA) في حاوية تخزين منظمة واحدة. جعل ذلك فحص البرمجيات صعبًا وسمح للمهاجمين بإخفاء نصوص حمولة خبيثة داخل قطاعات ثنائية غير شفافة.
بدءًا من Excel 2007، قدمت Microsoft معيار Office Open XML (OOXML) (المُعتمد كـ ECMA-376 و ISO/IEC 29500). تحت معيار OOXML، لم تعد مصنفات Excel كتلًا ثنائية موحدة. بل هي أرشيفات مضغوطة تحتوي على بنية هرمية من مستندات XML وجداول العلاقات ووسائط مدمجة.
داخل حاوية ZIP
إذا أخذت أي مصنف إكسل حديث قياسي وأعدت تسمية امتداده إلى .zip، يمكنك استخراج محتوياته باستخدام أي أداة فك ضغط قياسية:
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
هذا التحول الهيكلي قدم فوائد أمنية فورية:
- فحص الحزم العميق (DPI) ورؤية البوابة: يمكن لأجهزة الأمان، والوكالات، وعوامل النهاية فك ضغط الأرشيف مباشرةً وتحليل أشجار XML النصية لتحديد السلاسل المشبوهة، وعناوين URL الخارجية، أو الكائنات المدمجة.
- التحقق الحتمي من الملفات: إذا ادعى ملف أنه مستند OpenXML لكنه ينتهك قيود المخطط، يرفض إكسل فتحه أو يشغله ضمن وضع استعادة معزول.
- فصل الصيغ: قامت مايكروسوفت بفصل جداول البيانات الحاسوبية العادية عن الملفات القادرة على تنفيذ السكريبتات الإجرائية المدمجة.
2. XLSX مقابل XLSM: الحد المعماري
الفرق الأساسي بين .xlsx و .xlsm يكمن في ما إذا كان هيكل الملف يسمح بإدراج مشاريع ماكرو قابلة للتنفيذ.
| الميزة / البُعد | .xlsx (جدول إكسل OpenXML) | .xlsm (جدول بيانات ماكرو-مفعل في إكسل) |
|---|---|---|
| نوع محتوى MIME | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | application/vnd.ms-excel.sheet.macroEnabled.12 |
| حاوية تخزين VBA | ممنوع تمامًا. لا يمكن تخزين vbaProject.bin | مسموح. يحتوي على xl/vbaProject.bin |
| مخاطر التنفيذ الأصلي | ضئيل بالنسبة لتنفيذ الماكرو؛ يقتصر على حقن الصيغ/DDE | عالي؛ يمكن تشغيل كود VBA تلقائي عند التفاعل مع المصنف |
| مخطط OpenXML الصارم | يتوافق مع تعريفات XML الصارمة والخالية من الماكرو | يتضمن تعريفات للامتدادات القديمة والحديثة للأتمتة |
| مؤشر بصري للمستخدم | أيقونة جدول بيانات خضراء قياسية | أيقونة جدول بيانات مع علامة تعجب |
آلية التنفيذ: لماذا لا يمكن لـ XLSX تشغيل الماكروهات
سؤال شائع بين المسؤولين المبتدئين والمطورين هو: ماذا يحدث إذا أخذ المهاجم ملفًا خبيثًا .xlsm، وأدخل شفرة تنفيذية، وأعاد تسمية امتداد الملف إلى .xlsx؟
الإجابة المختصرة: الملف لن ينفّذ الماكرو.
لا يعتمد Excel بشكل حصري على امتداد الملف لتحديد قواعد التنفيذ. عند فتح ملف يحمل الاسم .xlsx:
- يقوم Excel بفحص حزمة zip ويشير إلى
[Content_Types].xml. - في ملف
.xlsxأصلي، جميع أنواع المحتوى المعرفة تمثل عناصر بيانات قياسية (مثلworksheetأوsharedStringsأوstyles). - إذا قام المهاجم بحقن تدفق VBA مُجمّع يدويًا (
xl/vbaProject.bin) في حزمة.xlsxوقام بتحديث العلاقات، يواجه Excel تناقضًا صريحًا في المخطط:- يرى أن امتداد
.xlsxمرتبط بأنواع محتوى تشير إلى إمكانية الماكرو. - يقوم Excel بإلقاء خطأ تكامل فادح: “Excel لا يمكنه فتح الملف ‘filename.xlsx’ لأن تنسيق الملف أو امتداده غير صالح. تحقق من أن الملف لم يتلف…”
- يرى أن امتداد
- إذا ترك المهاجم الأنواع الداخلية دون تعديل دون تسجيل الملف الثنائي، فإن Excel يتعامل مع
vbaProject.binكملف مرفق غير مُشار إليه ومهجور داخل أرشيف zip ويتجاهله تمامًا أثناء دورة التحميل.
وبالتالي، ملف يعمل بصرامة كحاوية .xlsx حقيقية لا يمكنه تشغيل كود VBA الأصلي. ومع ذلك، لا يعني ذلك أن ملفات .xlsx خالية من جميع مسارات الهجوم، كما سيتم استكشافه لاحقًا في هذا الدليل.
3. مخاطر الماكرو ودورة حياة الهجوم
تم تصميم الماكرو لأتمتة مهام المحاسبة المتكررة، ونمذجة المالية، ومعالجة البيانات عبر Visual Basic for Applications (VBA). وبما أن VBA تم بناؤه لأتمتة بيئة العمل، فقد مُنح وصولًا واسعًا إلى نظام تشغيل Windows الأساسي من خلال Component Object Model (COM)، وWindows Script Host (WSH)، واستدعاءات Win32 API المباشرة.
عند تنفيذ ماكرو غير موثوق، يعمل بنفس الصلاحيات تمامًا كما للمستخدم المسجل الدخول. ولا يُحجز داخل صندوق رمل افتراضي يشبه متصفح JavaScript.
+--------------------------------------------------------------------------------+
| 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.
تقنيات دخول الماكرو الشائعة
خطاطيف التنفيذ التلقائي: يقوم المهاجمون بوضع نقطة الدخول الخاصة بهم داخل معالجات الأحداث الجوهرية مثل
Sub Auto_Open()أوPrivate Sub Workbook_Open(). بمجرد أن يمنح المستخدم أذونات التنفيذ، تُفعَّل هذه الروتينات دون الحاجة إلى أي نقرات داخل جدول البيانات.إخفاء وتدمير:
- إخفاء السلاسل: تقوم الحمولات بإخفاء عناوين URL واستدعاءات النظام باستخدام مصفوفات الأحرف، ترميز XOR، فك تشفير Base64، أو دمج متغيرات البيئة (مثال:
Chr(112) & Chr(111) & Chr(119)...). - تدمير VBA: يوجد VBA في شكلين داخل
vbaProject.bin: شفرة المصدر المفسَّرة و p-code المترجم (شفرة شبهية موجهة إلى نسخة Office المحددة التي قامت بترجمتها). يمكن للمهاجمين مسح شفرة المصدر النصية بالكامل، تاركين فقط p-code المترجم. العديد من حلول مكافحة الفيروسات الأساسية والمحللات الثابتة تفحص فقط تدفق المصدر، مما يترك p-code غير مكتشف حتى يتم تنفيذه بواسطة نسخة Office المتطابقة.
- إخفاء السلاسل: تقوم الحمولات بإخفاء عناوين URL واستدعاءات النظام باستخدام مصفوفات الأحرف، ترميز XOR، فك تشفير Base64، أو دمج متغيرات البيئة (مثال:
الاعتماد على الأدوات المتاحة (LotL): نادراً ما تقوم وحدات الماكرو الخبيثة الحديثة بإسقاط ملف
.exeمباشرةً على القرص، مما سيُنبه فوراً وكلاء كشف النقاط الطرفية والاستجابة (EDR). بدلاً من ذلك، تتفاعل مع الأدوات المدمجة في النظام:- إنشاء كائن
WScript.Shellلتنفيذ وسائط سطر الأوامر. - استدعاء
PowerShell.exeمع تجاوز سياسة التنفيذ (-ExecutionPolicy Bypass -WindowStyle Hidden). - استدعاء واجهات برمجة التطبيقات الأصلية Win32 عبر
Declare PtrSafe Function CreateProcessأوVirtualAllocلحقن الشيل كود مباشرةً في ذاكرة النظام.
- إنشاء كائن
4. متجهات تهديد أخرى لجداول البيانات (ما وراء VBA القياسي)
تأمين البيئة ضد ملفات .xlsm هو مجرد نصف المعركة. يستخدم الخصوم أيضًا آليات تعمل بشكل مستقل عن VBA التقليدي.
تبادل البيانات الديناميكي (DDE) وحقن CSV
يحتوي Excel على بروتوكول قديم يُدعى تبادل البيانات الديناميكي (Dynamic Data Exchange - DDE)، صُمم للسماح بمشاركة البيانات بين التطبيقات قيد التشغيل (على سبيل المثال، بث بيانات مؤشرات الأسهم الحية من برنامج منفصل إلى خلية في Excel).
- كيف يعمل حقن الصيغ:
عندما تبدأ خلية جدول البيانات بأحرف مثل
=,@,+, أو-، يفسر Excel المحتوى كصيغة. إذا كان المهاجم يتحكم في الإدخال المُصدَّر إلى جدول البيانات (مثل حقل "التعليقات" غير المنقح في تطبيق ويب يتم تصديره إلى CSV أو XLSX)، يمكنه حقن:=cmd|'/C powershell.exe -w hidden -enc <base64_payload>'!A0 - عند الفتح، يقوم Excel بتقييم الصيغة، وينبه المستخدم بمطالبة حول بدء تطبيق خارجي، وإذا تم الموافقة، ينفّذ شل النظام.
ماكروهات Excel 4.0 (XLM) القديمة
قبل تقديم VBA في عام 1993، كان Excel يستخدم نظام ماكرو يعتمد على الصيغ يُعرف باسم Excel 4.0 (XLM) macros. هذه الماكروات توجد داخل أوراق ماكرو مخصصة بدلاً من مشروع VBA منفصل.
نظرًا لأن ماكرو XLM تُكتب كصيغ خلية (مثل =EXEC("calc.exe"))، فإنها تتجاوز العديد من محركات الفحص الثابت القياسية لـ VBA. فضل المهاجمون ماكرو XLM خلال أواخر العقد 2010 وبداية العقد 2020 لتفادي الكشف الآلي قبل أن تقوم Microsoft بتعطيله افتراضيًا في إصدارات المؤسسات الحديثة.
الاتصالات الخارجية الخبيثة وكائنات OLE
يمكن لملف .xlsx عادي أن يظل يشكل خطرًا عبر الموارد الخارجية:
- Embedded OLE Packages: يمكن للمهاجم إدراج ملف تنفيذي متخفي كأيقونة PDF مدمجة مباشرةً في ورقة العمل.
- External Workbook Links & Web Queries: يمكن أن يحتوي ملف XLSX على مراجع خارجية تُطلق تلقائيًا طلبات HTTP GET إلى خوادم التحكم والقيادة (C2) التي يتحكم فيها المهاجم عند فتح الملف، وتُستخدم أساسًا للاستطلاع أو هجمات جمع تجزئات netNTLM.
5. تعزيز أمان المؤسسة واستراتيجيات الدفاع المتعمق
يتطلب الدفاع ضد التهديدات التي يحملها Excel نهجًا طبقيًا يغطي فحص الشبكة، وتكوين النظام، وضوابط الوصول، والعمليات التشغيلية.
+─────────────────────────────────────────────────────────+
| 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. فرض علامة الويب (MotW) وحظر الماكرو
في عام 2022، قامت مايكروسوفت بتحديث السلوك الافتراضي لتطبيقات Office: الماكرو في الملفات التي تأتي من الإنترنت محظور افتراضيًا.
عندما يقوم المستخدم بتنزيل ملف عبر المتصفح أو عميل خارجي، تقوم Windows بوضع علامة على الملف باستخدام تدفق بيانات بديل (ADS) يُسمى Zone.Identifier (المنطقة 3 تشير إلى الإنترنت). بالنسبة للملفات التي تحمل هذه العلامة، يقوم Excel بتعطيل الماكرو بالكامل ويظهر شريط أمان أحمر: > "مخاطرة أمان: قامت مايكروسوفت بحظر تشغيل الماكرو لأن مصدر هذا الملف غير موثوق به."
إجراء إداري: تأكد من تطبيق هذا السلوك عبر سياسة المجموعة ولا يمكن تجاوزه من قبل المستخدمين النهائيين:
- مسار GPO:
User Configuration > Administrative Templates > Microsoft Excel 2016 > Excel Options > Security > Trust Center - الإعداد: تمكين “حظر تشغيل الماكرو في ملفات Office من الإنترنت”.
2. تكوين قواعد تقليل سطح الهجوم (ASR)
يجب على المؤسسات التي تستخدم Microsoft Defender for Endpoint تفعيل قواعد تقليل سطح الهجوم الأساسية المصممة خصيصًا لتطبيقات Office:
منع تطبيقات Office من إنشاء عمليات فرعية(GUID:D4F940AB-401B-4EFC-AADC-AD5F3C50688A)- يمنع Excel من تشغيل PowerShell أو CMD أو محركات البرمجة النصية.
حظر تطبيقات Office من حقن الشيفرة في عمليات أخرى(GUID:75668C1F-73B5-4CF0-BB93-3ECF5CB7CC84)حظر استدعاءات Win32 API من ماكروات Office(GUID:92E6390C-CF9E-43CE-BD8C-0E6F0FE66680)
3. الاستفادة من واجهة فحص البرامج الضارة (AMSI)
تدمج الإصدارات الحديثة من Microsoft 365 تنفيذ VBA مباشرةً مع AMSI. حتى إذا قام المهاجم بتطبيق تشفير معقد للسلاسل أو تعديل VBA، فإن محرك تشغيل VBA يمرر الأوامر المعاد بناؤها غير المشفرة إلى محرك مضاد الفيروسات/EDR المثبت لديك في اللحظة الدقيقة قبل التنفيذ. تأكد من أن حماية نقطة النهاية الخاصة بك تراقب أحداث وقت تشغيل AMSI بنشاط.
4. الانتقال إلى المواقع الموثوقة والشهادات الرقمية
للمنظمات التي تعتمد على جداول البيانات الآلية للعمليات اليومية:
- إزالة ملفات XLSM المتروكة في مجلدات التنزيل أو سطح المكتب للمستخدمين.
- استخدام المواقع الموثوقة: قصر تنفيذ الماكرو على مشاركات الشبكة للقراءة فقط التي يديرها مسؤولو تكنولوجيا المعلومات.
- توقيع الشيفرة: إلزام جميع الماكروات المطورة داخليًا بأن تكون موقعة تشفيرياً باستخدام شهادة صادرة عن بنية المفتاح العام (PKI) للمؤسسة. قم بتكوين Excel لتنفيذ الماكروات فقط الموقعة رقمياً وحظر غير الموقعة بصمت.
6. منظور المطور: بناء أتمتة آمنة
إذا كنت تقوم بتطوير برنامج يقوم بتحليل أو إنشاء أو استهلاك ملفات Excel (مثل خطوط أنابيب Python التي تستخدم pandas/openpyxl، أو خدمات microservices في Node.js، أو تطبيقات C#/.NET)، فطبق هذه التدابير الوقائية في التطوير:
رفض صيغ الملفات غير المتوقعة عند حد التحميل: إذا كان تطبيقك يتوقع تقارير مالية، فقم بالتحقق الصارم من أن الملفات الواردة تتوافق مع صيغة
.xlsx. افحص البايتات السحرية الداخلية (رأس zip القياسي50 4B 03 04) وتأكد من عدم وجود إدخالاتvbaProject.binداخل فهرس الأرشيف قبل حفظها في دلائل السحابة أو مخازن قواعد البيانات.تنقية البيانات ضد حقن الصيغ: عند تصدير مدخلات المستخدم إلى ملفات CSV أو XLSX، أضف علامة اقتباس مفردة (
') أو مسافة إلى أي خلية تبدأ بأحرف خطرة (=,+,-,@,\t,\r):def sanitize_for_spreadsheet(value: str) -> str: if value and value[0] in ('=', '+', '-', '@', '\t', '\r'): return f"'{value}" return valueالانتقال من VBA إلى Office Scripts أو الإضافات الويب: لأتمتة المؤسسات الحديثة، قم بإلغاء VBA القديم تمامًا:
- Office Scripts: مكتوبة بلغة TypeScript، تعمل Office Scripts داخل بيئة سحابية معزولة وتعمل بسلاسة عبر إصدارات الويب وسطح المكتب دون كشف استدعاءات نظام التشغيل الأصلية.
- Office Web Add-ins: تم بناءه باستخدام HTML و CSS القياسيين و JavaScript الحديث، تتواصل الإضافات الويب عبر واجهات برمجة تطبيقات JavaScript المدارة وتكون معزولة عن نظام التشغيل المحلي.
7. قائمة التحقق الملخصة لأمان جداول البيانات
- فرض
.xlsxبشكل افتراضي: طلب من جميع سير عمل المستخدمين القياسية الحفظ كملف.xlsxخالٍ من الماكرو. - حظر الماكروهات ذات الأصل الإنترنت: تأكيد أن تنفيذ سياسة MotW تم نشره عبر مؤسستك باستخدام GPO أو Intune.
- تمكين قواعد ASR: منع منتجات Office من إنشاء مفسرات أوامر أو عمليات فرعية.
- إلغاء دعم Excel 4.0 (XLM): التأكد من تعطيل محركات ماكرو XLM القديمة بشكل دائم على جميع محطات العمل.
- تنظيف تصديرات التطبيق: حماية روتينات إنشاء CSV و Excel من حقن CSV/الصيغ.
- التحول نحو Office Scripts: تحويل الماكروهات الإدارية القديمة إلى Office Scripts المدعومة بـ TypeScript والواجهات البرمجية المدارة.
من خلال اعتبار جداول البيانات ليست مجرد ملفات مستندات، بل حاويات برمجية منظمة تحمل قدرات تنفيذية، يمكن لفرق الأمن والمطورين تحييد أحد أقدم مسارات الهجوم في الحوسبة المؤسسية بفعالية.
الأسئلة المتكررة (FAQ)
س1: هل يمكن لملف ينتهي بـ .xlsx تشغيل ماكرو خبيث؟
لا، معيار OpenXML يحظر بشدة وجود كود ماكرو في ملفات .xlsx، وسيقوم Excel برفض أو إزالة أي مشروع VBA يتم حقنه في حاوية .xlsx حقيقية.
س2: ماذا يجب أن أفعل إذا طلب مني ملف إكسل “تمكين التحرير” أو “تمكين المحتوى”؟
امنح الأذونات فقط إذا كنت تعرف المرسل وتوقع الملف؛ هذه المطالبة هي نقطة الفحص الأساسية التي تسمح للماكرو غير الموثوق بتنفيذ الكود.
س3: كيف يحدد مايكروسوفت إكسل ما إذا كان الملف قد جاء من الإنترنت؟
يقوم Windows بإرفاق تدفق مخفي “علامة الويب” (Zone.Identifier) إلى الملفات التي تم تنزيلها، مما يُشير إلى Excel لفتحها في العرض المحمي وحظر الماكرو بشكل افتراضي.
س4: هل ملفات CSV أكثر أمانًا من ملفات XLSX و XLSM؟
لا يمكن لملفات CSV احتواء ماكرو VBA أصلي، لكنها تظل عرضة لهجمات حقن الصيغ إذا احتوت على أوامر خبيثة يتم تنفيذها بواسطة Excel عند الفتح.
س5: كيف تختلف سكريبتات Office الحديثة عن ماكرو VBA التقليدية؟
تعمل Office Scripts على TypeScript داخل بيئة تشغيل معزولة، مما يمنعها من الوصول إلى نظام الملفات المحلي، سطر الأوامر، أو واجهات برمجة تطبيقات نظام التشغيل.