עודכן לאחרונה: 28 ספטמבר, 2026

הסבר על אבטחת קבצי Excel: XLSX, XLSM וסיכוני מקרו
במשך עשרות שנים, Microsoft Excel משמש כמנוע האוניברסלי של פעילות עסקית. הוא מאזן תקציבים תאגידיים, ממחיש מערכי נתונים מורכבים, עוקב אחרי מלאי, ומניע צינורות אנליטיים כמעט בכל תעשייה.
עם זאת, אותה גמישות חישובית הופכת את הגיליונות האלקטרוניים למועדף מתמשך בקרב יריבי סייבר. תוקפים נשקו בגיליונות מאז תחילת ימי וירוסי המאקרו בסוף שנות ה-90. בעוד ש-Microsoft ומנהלי המערכת הציגו שכבות הגנה מרובות—כגון הפרדת פורמטים של קבצים וחסימת מאקרו כברירת מחדל—הנדסה חברתית וסיכונים ארכיטקטוניים עדינים ממשיכים לשמור על רלוונטיות של התקפות ממוקדות ב-Excel.
כדי לבנות עמדת אבטחה עמידה, מפתחים, מנהלים ומשתמשים מתקדמים חייבים להסתכל מתחת לממשק חוברת העבודה. הבנת האופן שבו פורמט OpenXML הבסיסי פועל, כיצד .xlsx ו-.xlsm שונים ברמת הארכיטקטורה, וכיצד מנגנוני ביצוע המקרו פועלים היא חיונית להגנה על קצות קצה מודרניים.
1. המבנה של קבצי Excel מודרניים: OpenXML מפורק
לפני השחרור של Microsoft Office 2007, Excel שמר קבצים בעיקר באמצעות פורמטים בינריים קנייניים, ובמיוחד פורמט .xls (שנשלט על ידי Binary Interchange File Format, או BIFF8). בקבצי .xls, רשומות נתונים, הגדרות עיצוב, נוסחאות, וזרמי מקרו של Visual Basic for Applications (VBA) אורזו במכולת אחסון מובנית אחת. זה הפך את הבדיקה התכנותית לקשה ואפשר לתוקפים להסתיר סקריפטים של עומס זדוני בתוך מגזרים בינריים אטומים.
החל מ-Excel 2007, Microsoft הציגה את תקן Office Open XML (OOXML) (מתקן כ-ECMA-376 ו-ISO/IEC 2950). תחת OOXML, חוברות העבודה של Excel אינן עוד גושים בינריים מונוליטיים. במקום זאת, הן ארכיונים דחוסים המכילים מבנה היררכי של מסמכי XML, טבלאות קשרים, ונכסי מדיה משובצים.
בתוך קובץ ZIP
אם תופסים כל חוברת עבודה מודרנית של Excel סטנדרטית ומשנים את הסיומת שלה ל-.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 אך מפר את מגבלות הסכמה, Excel מסרב לפתוח אותו או מריץ אותו במצב שחזור מבודד.
- הפרדת פורמט: מיקרוסופט הפרידה גיליונות חישוב רגילים מקבצים שיכולים לבצע סקריפטים פרוצדורליים משובצים.
2. XLSX נגד XLSM: הגבול האדריכלי
ההבדל העיקרי בין .xlsx ל-.xlsm הוא האם מבנה הקובץ מאפשר לכלול פרויקטי מאקרו ניתנים לביצוע.
| תכונה / ממד | .xlsx (גיליון אלקטרוני OpenXML של Excel) | .xlsm (גיליון Excel עם מאקרו) |
|---|---|---|
| סוג תוכן 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), וקוראות API ישירות של Win32.
כאשר מאקרו לא מהימן מתבצע, הוא פועל עם אותם ההרשאות המדויקות כמו למשתמש המחובר. הוא אינו נלכד בתוך ארגז חול מדומה בסגנון דפדפן 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 Stomping: VBA קיימת בשתי צורות בתוך
vbaProject.bin: קוד מקור מפורש וקוד p-code מקומפל (קוד פסאודו המיועד לגרסת Office הספציפית שקומפלה). תוקפים יכולים למחוק את קוד המקור בטקסט ברור לחלוטין, ולהשאיר רק את קוד ה‑p-code המקומפל. פתרונות אנטי‑וירוס בסיסיים רבים ומנתחים סטטיים בודקים רק את זרם המקור, ולכן ה‑p-code נשאר בלתי מזוהה עד שהוא מבוצע על ידי גרסת Office תואמת.
- הסתרת מחרוזות: מטענים מסתירים כתובות URL וקוראות מערכת באמצעות מערכי תווים, קידוד XOR, פענוח Base64, או צירוף משתני סביבה (למשל
ניצול משאבים קיימים (Living off the Land - LotL): מאקרו זדוניים מודרניים כמעט ולא משחררים קובץ
.exeישירות לדיסק, דבר שהיה גורם להתראה מיידית של סוכני זיהוי ותגובה לנקודות קצה (EDR). במקום זאת, הם מתקשרים עם כלי מערכת מובנים:- יצירת מופע של
WScript.Shellלהפעלת ארגומנטים משורת הפקודה. - הפעלת
PowerShell.exeעם עקיפת מדיניות ביצוע (-ExecutionPolicy Bypass -WindowStyle Hidden). - קריאה ל‑APIs מקומיים של Win32 דרך
Declare PtrSafe Function CreateProcessאוVirtualAllocכדי להזריק קוד מעטפת ישירות לזיכרון המערכת.
- יצירת מופע של
4. וקטורי איום נוספים בגיליונות אלקטרוניים (מעבר ל‑VBA הסטנדרטי)
אבטחת סביבה מפני קבצי .xlsm היא רק חצי מהמאבק. יריבים גם משתמשים במנגנונים הפועלים באופן עצמאי מ‑VBA המסורתי.
החלפת נתונים דינמית (DDE) וCSV הזרקה
ל‑Excel יש פרוטוקול ישן בשם Dynamic Data Exchange (DDE), שנועד לאפשר שיתוף נתונים בין יישומים פועלים (לדוגמה, זרימת נתוני מניות בזמן אמת מתוכנית נפרדת לתא ב‑Excel).
- איך פגיעה בנוסחה פועלת:
כאשר תא בגליון אלקטרוני מתחיל בתווים כגון
=,@,+או-, Excel מפרש את התוכן כנוסחה. אם תוקף שולט בקלט שמיוצא לגיליון (כגון שדה “Comments” שלא עבר סינון ביישום אינטרנטי שיוצא ל‑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 כדי להתחמק מזיהוי אוטומטי לפני שמיקרוסופט השבית אותם כברירת מחדל בבניות הארגוניות המודרניות.
חיבורים חיצוניים זדוניים ואובייקטי OLE
קובץ עבודה .xlsx רגיל עדיין יכול להוות סיכון דרך משאבים חיצוניים:
- Embedded OLE Packages: תוקף יכול להכניס קובץ הפעלה המוסתר כאייקון PDF משובץ ישירות לגיליון.
- External Workbook Links & Web Queries: קובץ XLSX יכול להכיל הפניות חיצוניות שמתחילות באופן אוטומטי בקשות HTTP GET לשרתים מבוקרי‑פקודה (C2) שבשליטת התוקף בעת פתיחת הקובץ, ומשמשות בעיקר לסקירת מודיעין או התקפות איסוף hash של 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 משבית את המקרו לחלוטין ומציג באנר אבטחה אדום: > "סיכון אבטחה: מיקרוסופט חסמה את הרצת המקרו מכיוון שמקור הקובץ אינו מהימן."
פעולה מנהלתית: ודא שההתנהגות הזו נאכפת דרך Group Policy ולא ניתן לעקוף אותה על ידי משתמשי קצה:
- נתיב GPO:
User Configuration > Administrative Templates > Microsoft Excel 2016 > Excel Options > Security > Trust Center - הגדרה: אפשר "חסום הרצת מקרו בקבצי Office מהאינטרנט".
2. קביעת כללי הפחתת משטח התקפה (ASR)
ארגונים המשתמשים ב‑Microsoft Defender for Endpoint צריכים להפעיל את כללי הפחתת משטח ההתקפה המרכזיים שעוצבו במיוחד עבור יישומי Office:
Block Office applications from creating child processes(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 stomping, מנוע זמן הריצה של ה‑VBA מעביר את הפקודות המשוחזרות, הלא מוצפנות, למנוע האנטי‑וירוס/EDR המותקן שלך בדיוק במילישנייה שלפני ההפעלה. ודא שהגנת הקצה שלך מנטרת באופן פעיל אירועי זמן ריצה של AMSI.
4. מעבר למיקומים מהימנים ותעודות דיגיטליות
לארגונים המתבססים על גיליונות אלקטרוניים אוטומטיים לפעילות היומיומית:
- הסר קבצי XLSM רופפים בתיקיות ההורדות או שולחן העבודה של המשתמש.
- השתמש במיקומים מהימנים: הגבל את ביצוע המקרו באופן בלעדי לשיתופי רשת לקריאה בלבד המנוהלים על ידי מנהלי ה‑IT.
- חתימת קוד: דרוש שכל המקרואים שפותחו פנימית יהיו חתומים קריפטוגרפית באמצעות תעודה שהונפקה על ידי תשתית מפתחות ציבוריים (PKI) של הארגון. הגדר את Excel לבצע רק מקרואים חתומים דיגיטלית ולחסום בשקט את הלא‑חתומים.
6. נקודת המבט של המפתחים: בניית אוטומציה מאובטחת
אם אתה בונה תוכנה שמנתחת, מייצרת או צורכת קבצי Excel (למשל, צינורות Python המשתמשים ב-pandas/openpyxl, מיקרו‑שירותי 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 פועלים בסביבת ענן מבודדת ומופעלים בצורה חלקה הן בגרסאות האינטרנטיות והן בגרסאות השולחן העבודה מבלי לחשוף קריאות מערכת OS מקומיות.
- תוספי אינטרנט של Office: נבנים באמצעות HTML, CSS סטנדרטיים ו-JavaScript מודרני, תוספי אינטרנט מתקשרים דרך API‑ים מנוהלים של JavaScript ומבודדים ממערכת ההפעלה המקומית.
7. רשימת בדיקה סיכומית לאבטחת גיליונות אלקטרוניים
- אכוף
.xlsxכברירת מחדל: דרוש מכל זרימות העבודה הסטנדרטיות של המשתמשים לשמור כ-.xlsxללא מקרו. - חסום מקרו שמקורם באינטרנט: אשר שהאכיפה של מדיניות MotW מופעלת ברחבי הארגון שלך דרך GPO או Intune.
- הפעל כללי ASR: אסור למוצרי Office ליצור מפרשי פקודות או תהליכים צאצאים.
- הפסקת תמיכה ב‑Excel 4.0 (XLM): ודא שמנועי המקרו הישנים של XLM מושבתים לצמיתות בכל תחנות העבודה.
- טיהור ייצוא יישומים: הגן על שגרות יצירת CSV ו‑Excel מפני הזרקת CSV/נוסחאות.
- השתנות לכיוון Office Scripts: העבר מקרו מנהליים ישנים ל‑Office Scripts המונעים ב‑TypeScript ול‑API‑ים מנוהלים.
על‑ידי התייחסות לגיליונות אלקטרוניים לא רק כקבצי מסמך, אלא כמכולות תוכנה מובנות הנושאות יכולות ביצוע, צוותי האבטחה והמפתחים יכולים לנטרל ביעילות אחד מהווקטורים הישנים ביותר של התקפות במחשוב ארגוני.
שאלות נפוצות (FAQ)
שאלה 1: האם קובץ שמסתיים ב.xlsx יכול להריץ מאקרו זדוני?
לא, תקן OpenXML אוסר במפורש קוד מאקרו בקבצי .xlsx, ו-Excel ידחה או יסיר כל פרויקט VBA שהוזרק למכולה אמיתית של .xlsx.
שאלה 2: מה עלי לעשות אם קובץ Excel מבקש ממני “הפעל עריכה” או “הפעל תוכן”?
הענק הרשאות רק אם אתה מכיר את השולח וציפית לקובץ; הודעה זו היא נקודת הבדיקה העיקרית שמאפשרת למאקרו לא מהימן להריץ קוד.
שאלה 3: איך Microsoft Excel קובע אם קובץ הגיע מהאינטרנט?
Windows מצרפת זרם מוסתר “סימן האינטרנט” (Zone.Identifier) לקבצים שהורדו, מה שמסמן ל-Excel לפתוח אותם בתצוגה מוגנת ולחסום מאקרו כברירת מחדל.
שאלה 4: האם קבצי CSV בטוחים יותר מקבצי XLSX ו-XLSM?
קבצי CSV אינם יכולים להכיל מאקרו VBA מקורי, אך הם נשארים פגיעים להתקפות הזרקת נוסחאות אם הם מכילים פקודות זדוניות שמבוצעות על ידי Excel בעת הפתיחה.
שאלה 5: איך Office Scripts מודרניים שונים ממאקרו VBA מסורתיים?
סקריפטי Office פועלים על TypeScript בתוך סביבת זמן ריצה מבודדת, מה שמונע מהם לגשת למערכת הקבצים המקומית שלך, לשורת הפקודה או ל-APIs של מערכת ההפעלה.