Son Güncelleme: 28 Eyl, 2026

Excel Dosya Güvenliği Açıklaması: XLSX, XLSM ve Makro Riskleri
Onlarca yıldır Microsoft Excel, iş operasyonlarının evrensel motoru olarak durmaktadır. Kurumsal bütçeleri dengeler, karmaşık veri setlerini görselleştirir, envanteri izler ve neredeyse her sektörde analitik süreçleri destekler.
Bununla birlikte, aynı hesaplama esnekliği, elektronik tabloları siber saldırganların sürekli tercih ettiği bir araç haline getiriyor. Saldırganlar, 1990’ların sonundaki makro virüslerinin ilk günlerinden beri elektronik tabloları silah haline getirdi. Microsoft ve sistem yöneticileri, dosya formatı ayrımı ve varsayılan makro engelleme gibi birden fazla savunma katmanı getirmiş olsa da, sosyal mühendislik ve ince mimari riskler Excel odaklı saldırıların hâlâ geçerli olmasını sağlıyor.
Dayanıklı bir güvenlik duruşu oluşturmak için geliştiriciler, yöneticiler ve yetkili kullanıcılar çalışma kitabı arayüzünün altında neler olduğunu incelemelidir. Temel OpenXML formatının nasıl çalıştığını, .xlsx ve .xlsm dosyalarının mimari açıdan nasıl farklılaştığını ve makro yürütme mekaniklerinin nasıl işlediğini anlamak, modern uç noktaları savunmak için hayati öneme sahiptir.
1. Modern Excel Dosyalarının Anatomisi: OpenXML’in Çözülmesi
Microsoft Office 2007 sürümünden önce, Excel dosyalarını öncelikle tescilli ikili formatlar kullanarak kaydediyordu; en çok kullanılanı .xls formatıdır (Binary Interchange File Format, yani BIFF8 tarafından yönetilir). .xls dosyalarında veri kayıtları, biçim tanımları, formüller ve Visual Basic for Applications (VBA) makro akışları tek bir yapılandırılmış depolama konteynerine paketlenirdi. Bu durum programatik incelemeyi zorlaştırdı ve saldırganların kötü amaçlı yükleme betiklerini opak ikili sektörlerin içinde gizlemelerine olanak tanıdı.
Excel 2007’den itibaren Microsoft, Office Open XML (OOXML) standardını (ECMA-376 ve ISO/IEC 29500 olarak standartlaştırılmış) tanıttı. OOXML altında, Excel çalışma kitapları artık tek parça ikili bloklar değildir. Bunun yerine, XML belgelerinin, ilişki tablolarının ve gömülü medya varlıklarının hiyerarşik yapısını içeren sıkıştırılmış arşivlerdir.
ZIP Kapsayıcısının İçinde
Herhangi bir standart modern Excel çalışma kitabını alıp uzantısını .zip olarak değiştirirseniz, içeriğini herhangi bir standart sıkıştırma açma aracıyla çıkarabilirsiniz:
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
Bu yapısal değişim anında güvenlik faydaları sağladı:
- DPI (Derin Paket İncelemesi) & Ağ Geçidi Görünürlüğü: Güvenlik cihazları, proxy’ler ve uç nokta ajanları arşivi anında açabilir ve düz metin XML ağaçlarını analiz ederek şüpheli dizeleri, dış URL’leri veya gömülü nesneleri tanımlayabilir.
- Deterministik Dosya Doğrulama: Bir dosya OpenXML belgesi olduğunu iddia edip şema kısıtlamalarını ihlal ediyorsa, Excel onu açmayı reddeder veya izole bir kurtarma modunda çalıştırır.
- Biçim Ayrımı: Microsoft, normal hesaplama tablolarını gömülü prosedürel betikleri çalıştırabilen dosyalardan ayırdı.
2. XLSX vs. XLSM: Mimari Sınır
.xlsx ve .xlsm arasındaki temel fark, dosya yapısının yürütülebilir makro projelerinin eklenmesine izin verip vermemesidir.
| Özellik / Boyut | .xlsx (Excel OpenXML Çalışma Sayfası) | .xlsm (Excel Makro Etkin Çalışma Sayfası) |
|---|---|---|
| MIME İçerik Türü | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | application/vnd.ms-excel.sheet.macroEnabled.12 |
| VBA Depolama Konteyneri | Kesinlikle Yasak. vbaProject.bin dosyası depolanamaz | İzin Verilir. xl/vbaProject.bin içerir |
| Yerel Çalıştırma Riski | Makro yürütmesi için önemsiz; formül enjeksiyonu/DDE ile sınırlıdır | Yüksek; çalışma kitabı etkileşimi sırasında otomatik VBA kodu çalıştırabilir |
| OpenXML Katı Şeması | Katı, makro içermeyen XML tanımlarına uyar | Eski ve modern otomasyon uzantıları için tanımları içerir |
| Kullanıcı Görsel Göstergesi | Standart yeşil elektronik tablo simgesi | Üzerinde ünlem işareti bulunan elektronik tablo simgesi |
Uygulama Mekanizması: XLSX’in Makroları Neden Çalıştıramadığı
Kıdemli olmayan yöneticiler ve geliştiriciler arasında yaygın bir soru şudur: Bir saldırgan kötü amaçlı bir .xlsm dosyasını alıp çalıştırılabilir kod enjekte eder ve dosya uzantısını .xlsx olarak değiştirirse ne olur?
Kısa cevap: Dosya makroyu çalıştırmayacaktır.
Excel, yürütme kurallarını belirlemek için yalnızca dosya uzantısına dayanmaz. .xlsx adlı bir dosya açıldığında:
- Excel zip içeriğini inceler ve
[Content_Types].xmldosyasına referans verir. - Gerçek bir
.xlsxdosyasında, tanımlanan tüm içerik türleri standart veri öğelerini temsil eder (örneğinworksheet,sharedStringsveyastyles). - Bir saldırgan, derlenmiş bir VBA akışını (
xl/vbaProject.bin) manuel olarak bir.xlsxpaketine enjekte eder ve ilişkileri güncellerse, Excel açık bir şema çelişkisiyle karşılaşır:- Makro yeteneğini gösteren içerik türlerine bağlı bir
.xlsxuzantısı gördüğünde. - Excel ölümcül bir bütünlük hatası verir: "Excel, dosya formatı veya dosya uzantısı geçerli olmadığı için ‘filename.xlsx’ dosyasını açamıyor. Dosyanın bozulmadığını doğrulayın…"
- Makro yeteneğini gösteren içerik türlerine bağlı bir
- Saldırgan iç tipleri kayıtlara almadan aynı şekilde bırakırsa, Excel
vbaProject.bindosyasını zip arşivindeki referanssız, sahipsiz bir ek olarak değerlendirir ve yükleme döngüsü sırasında tamamen atar.
Sonuç olarak, gerçek bir .xlsx konteyneri gibi kesinlikle çalışan bir dosya yerel VBA kodu çalıştıramaz. Ancak, bu .xlsx dosyalarının tüm saldırı vektörlerinden tamamen muaf olduğu anlamına gelmez; bu daha sonra bu rehberde incelenecektir.
3. Makro Riskleri ve Saldırı Yaşam Döngüsü
Makrolar, Visual Basic for Applications (VBA) aracılığıyla tekrarlayan muhasebe, finansal modelleme ve veri işleme görevlerini otomatikleştirmek için tasarlandı. VBA, iş yeri otomasyonu için geliştirildiği için, Component Object Model (COM), Windows Script Host (WSH) ve doğrudan Win32 API çağrıları aracılığıyla temel Windows işletim sistemine geniş erişim sağlandı.
Güvenilmeyen bir makro çalıştırıldığında, oturum açmış kullanıcıyla aynı ayrıcalıklarla çalışır. Sanal bir JavaScript tarzı tarayıcı sandbox’ına hapsedilmez.
+--------------------------------------------------------------------------------+
| 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.
Yaygın Makro Giriş Teknikleri
Otomatik Çalıştırma Kancaları: Saldırganlar giriş noktalarını
Sub Auto_Open()veyaPrivate Sub Workbook_Open()gibi içsel olay işleyicilerine yerleştirir. Kullanıcı yürütme izinlerini verdiği anda, bu rutinler elektronik tablo içinde herhangi bir tıklama gerektirmeden tetiklenir.Karmaşıklaştırma ve Stomping:
- String Karmaşıklaştırması: Yükler, karakter dizileri, XOR kodlaması, Base64 çözümlemesi veya ortam değişkeni birleştirmesi (ör.
Chr(112) & Chr(111) & Chr(119)...) kullanarak URL’leri ve sistem çağrılarını gizler. - VBA Stomping: VBA,
vbaProject.biniçinde iki biçimde bulunur: yorumlanmış kaynak kodu ve derlenmiş p-code (derleyen belirli Office sürümüne yönelik pseudo-kod). Saldırganlar, açık metin kaynak kodunu tamamen silebilir ve yalnızca derlenmiş p-code’u bırakabilir. Birçok temel antivirüs çözümü ve statik analizör yalnızca kaynak akışını inceler, bu da p-code’un eşleşen bir Office sürümü tarafından çalıştırılana kadar tespit edilmemesine yol açar.
- String Karmaşıklaştırması: Yükler, karakter dizileri, XOR kodlaması, Base64 çözümlemesi veya ortam değişkeni birleştirmesi (ör.
Living off the Land (LotL): Modern kötü amaçlı makrolar nadiren bir
.exedosyasını doğrudan diske bırakır, bu da Endpoint Detection and Response (EDR) ajanlarını hemen uyarır. Bunun yerine, yerleşik sistem araçlarıyla etkileşime girerler:WScript.Shellörneği oluşturarak komut satırı argümanlarını yürütmek.PowerShell.exe‘yi yürütme politikası atlamalarıyla (-ExecutionPolicy Bypass -WindowStyle Hidden) çağırmak.Declare PtrSafe Function CreateProcessveyaVirtualAllocaracılığıyla yerel Win32 API’lerini çağırarak kabuk kodunu doğrudan sistem belleğine enjekte etmek.
4. Diğer Elektronik Tablo Tehdit Vektörleri (Standart VBA’nın Ötesinde)
Bir ortamı .xlsm dosyalarına karşı güvence altına almak sadece mücadelenin yarısıdır. Saldırganlar ayrıca geleneksel VBA’dan bağımsız çalışan mekanizmalar da kullanır.
Dinamik Veri Değişimi (DDE) ve CSV Enjeksiyonu
Excel, çalışan uygulamalar arasında veri paylaşımına izin vermek için tasarlanmış Dinamik Veri Değişimi (DDE) adlı eski bir protokol sunar (örneğin, ayrı bir programdan canlı hisse senedi verilerini bir Excel hücresine akıtmak).
- Formül Enjeksiyonunun Nasıl Çalıştığı:
Bir elektronik tablo hücresi
=,@,+veya-gibi karakterlerle başladığında, Excel içeriği bir formül olarak yorumlar. Bir saldırgan, bir web uygulamasındaki temizlenmemiş “Comments” alanı gibi bir girdiyi CSV veya XLSX olarak dışa aktarıp bir tabloya yerleştirirse, şunları enjekte edebilir:=cmd|'/C powershell.exe -w hidden -enc <base64_payload>'!A0 - Açıldığında, Excel formülü değerlendirir, dış bir uygulamayı başlatma konusunda kullanıcıyı bir uyarı ile bilgilendirir ve onaylanırsa sistem kabuğunu çalıştırır.
Excel 4.0 (XLM) Eski Makrolar
VBA 1993’te tanıtılmadan önce, Excel Excel 4.0 (XLM) makroları olarak bilinen formül tabanlı bir makro sistemi kullanıyordu. Bu makrolar ayrı bir VBA projesi yerine özel makro sayfalarında bulunur.
XLM makroları hücre formülleri (örneğin =EXEC("calc.exe")) olarak yazıldığı için birçok standart VBA statik inceleme motorunu atlar. Saldırganlar, Microsoft’un modern kurumsal sürümlerde varsayılan olarak devre dışı bırakmasından önce, otomatik tespitten kaçınmak için 2010’ların sonları ve 2020’lerin başında XLM makrolarını tercih etti.
Kötü Amaçlı Dış Bağlantılar ve OLE Nesneleri
Sıradan bir .xlsx çalışma kitabı hâlâ harici kaynaklar aracılığıyla risk oluşturabilir:
- Gömülü OLE Paketleri: Bir saldırgan, yürütülebilir dosyayı gömülü bir PDF simgesi olarak taklit edip doğrudan çalışma sayfasına ekleyebilir.
- Harici Çalışma Kitabı Bağlantıları ve Web Sorguları: Bir XLSX, dosya açıldığında otomatik olarak saldırgan kontrolündeki komut ve kontrol (C2) sunucularına HTTP GET istekleri başlatan harici referanslar içerebilir; bu genellikle keşif veya netNTLM hash toplama saldırıları için kullanılır.
5. Kurumsal Sertleştirme ve Derin Savunma Stratejileri
Excel kaynaklı tehditlere karşı savunma, ağ denetimi, sistem yapılandırması, erişim kontrolleri ve operasyonel süreçleri kapsayan katmanlı bir yaklaşım gerektirir.
+─────────────────────────────────────────────────────────+
| 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. Web İşareti (MotW) Makro Engellemesini Zorunlu Kıl
2022 yılında, Microsoft Office uygulamalarının varsayılan davranışını güncelledi: internetten gelen dosyalardaki makrolar varsayılan olarak engellenir.
Bir kullanıcı bir dosyayı tarayıcı veya harici bir istemci aracılığıyla indirdiğinde, Windows dosyayı Zone.Identifier adlı bir alternatif veri akışı (ADS) ile etiketler (Bölge 3, İnterneti gösterir). Bu işareti taşıyan dosyalar için Excel makroları tamamen devre dışı bırakır ve kırmızı bir güvenlik banner’ı gösterir: > "GÜVENLİK RİSKİ: Microsoft, bu dosyanın kaynağı güvenilmez olduğu için makroların çalıştırılmasını engelledi."
Yönetim Eylemi: Bu davranışın Grup İlkesi aracılığıyla uygulanmasını ve son kullanıcılar tarafından değiştirilememesini sağlayın:
- GPO Yolu:
User Configuration > Administrative Templates > Microsoft Excel 2016 > Excel Options > Security > Trust Center - Ayar: "İnternetten gelen Office dosyalarında makroların çalıştırılmasını engelle" seçeneğini etkinleştirin.
2. Saldırı Yüzeyi Azaltma (ASR) Kurallarını Yapılandır
Microsoft Defender for Endpoint kullanan kuruluşlar, özellikle Office uygulamaları için tasarlanmış temel Saldırı Yüzeyi Azaltma kurallarını etkinleştirmelidir:
Office uygulamalarının alt süreçler oluşturmasını engelle(GUID:D4F940AB-401B-4EFC-AADC-AD5F3C50688A)- Excel’in PowerShell, CMD veya betik motorlarını başlatmasını önler.
Office uygulamalarının diğer süreçlere kod enjekte etmesini engelle(GUID:75668C1F-73B5-4CF0-BB93-3ECF5CB7CC84)Office makrolarından Win32 API çağrılarını engelle(GUID:92E6390C-CF9E-43CE-BD8C-0E6F0FE66680)
3. Antimalware Tarama Arayüzünü (AMSI) Kullanın
Microsoft 365’in modern sürümleri VBA yürütmesini doğrudan AMSI ile bütünleştirir. Bir saldırgan karmaşık dize gizleme veya VBA stomping uygulasa bile, VBA çalışma zamanı motoru yeniden oluşturulmuş, şifrelenmemiş komutları yürütmeden tam bir milisaniye önce yüklü antivirüs/EDR motorunuza iletir. Uç nokta korumanızın AMSI çalışma zamanı olaylarını aktif olarak izlediğinden emin olun.
4. Güvenilir Konumlara ve Dijital Sertifikalara Geçiş
Günlük operasyonlar için otomatikleştirilmiş elektronik tablolara bağımlı olan organizasyonlar için:
- Kullanıcı İndirilenler veya masaüstü klasörlerindeki gevşek XLSM dosyalarını ortadan kaldırın.
- Güvenilir Konumları Kullanın: Makro yürütmesini yalnızca BT yöneticileri tarafından yönetilen salt okunur ağ paylaşımlarına sınırlayın.
- Kod İmzalama: Tüm dahili geliştirilen makroların, kurumun Kamu Anahtarı Altyapısı (PKI) tarafından verilen bir sertifika ile kriptografik olarak imzalanmasını zorunlu kılın. Excel’i yalnızca dijital olarak imzalanmış makroları çalıştıracak şekilde yapılandırın ve imzasız olanları sessizce engelleyin.
6. Geliştiricinin Bakış Açısı: Güvenli Otomasyon Oluşturma
Excel dosyalarını ayrıştıran, üreten veya tüketen bir yazılım (ör. pandas/openpyxl kullanan Python veri akışları, Node.js mikro hizmetleri veya C#/.NET uygulamaları) geliştiriyorsanız, bu geliştirme önlemlerini uygulayın:
Yükleme Sınırında Beklenmeyen Dosya Biçimlerini Reddet: Uygulamanız finansal raporlar bekliyorsa, gelen dosyaların kesinlikle
.xlsxformatına uygun olduğunu doğrulayın. İç magic byte’ları (standart zip başlığı50 4B 03 04) inceleyin ve arşiv indeksindevbaProject.bingirdilerinin bulunmadığını doğrulayın; ardından bulut kovalarına veya veritabanı depolarına kaydedin.Formül Enjeksiyonuna Karşı Veriyi Temizle: Kullanıcı tarafından oluşturulan girdileri CSV veya XLSX dosyalarına dışa aktarırken, tehlikeli karakterlerle (
=,+,-,@,\t,\r) başlayan her hücrenin önüne bir tek tırnak (') veya bir boşluk ekleyin:def sanitize_for_spreadsheet(value: str) -> str: if value and value[0] in ('=', '+', '-', '@', '\t', '\r'): return f"'{value}" return valueVBA’dan Office Scripts veya Web Eklentilerine Geçiş Yapın: Modern kurumsal otomasyon için, eski VBA’yı tamamen aşamalı olarak kaldırın:
- Office Scripts: TypeScript ile yazılan Office Scripts, izole bir bulut ortamında çalışır ve yerel işletim sistemi çağrılarını ortaya çıkarmadan web ve masaüstü sürümleri arasında sorunsuz bir şekilde çalışır.
- Office Web Eklentileri: Standart HTML, CSS ve modern JavaScript kullanılarak oluşturulan web eklentileri, yönetilen JavaScript API’leri aracılığıyla iletişim kurar ve yerel işletim sisteminden izole edilmiştir.
7. Elektronik Tablo Güvenliği İçin Özet Kontrol Listesi
- Varsayılan olarak
.xlsxzorunlu kıl: Tüm standart kullanıcı iş akışlarının makro içermeyen.xlsxolarak kaydetmesini zorunlu kıl. - İnternet kaynaklı makroları engelle: MotW politikası uygulamasının kuruluşunuzda GPO veya Intune aracılığıyla dağıtıldığını doğrula.
- ASR kurallarını etkinleştir: Office ürünlerinin komut yorumlayıcıları veya alt süreçler başlatmasını engelle.
- Excel 4.0 (XLM)‘i kullanımdan kaldır: Eski XLM makro motorlarının tüm iş istasyonlarında kalıcı olarak devre dışı bırakıldığından emin ol.
- Uygulama dışa aktarmalarını temizle: CSV ve Excel oluşturma rutinlerini CSV/formül enjeksiyonuna karşı koru.
- Office Scripts’e yönel: Eski yönetim makrolarını TypeScript tabanlı Office Scripts ve yönetilen API’lere geçiş yap.
Elektronik tabloları yalnızca belge dosyaları olarak değil, yürütme yeteneklerine sahip yapılandırılmış yazılım kapsayıcıları olarak ele alarak, güvenlik ekipleri ve geliştiriciler kurumsal bilişimdeki en eski saldırı vektörlerinden birini etkili bir şekilde etkisiz hale getirebilir.
Sıkça Sorulan Sorular (SSS)
S1: .xlsx uzantılı bir dosya kötü amaçlı bir makro çalıştırabilir mi?
Hayır, OpenXML standardı .xlsx dosyalarında makro kodunu kesinlikle yasaklar ve Excel, gerçek bir .xlsx konteynerine enjekte edilen herhangi bir VBA projesini reddeder veya kaldırır.
S2: Bir Excel dosyası “Düzenlemeyi Etkinleştir” veya “İçeriği Etkinleştir” istediğinde ne yapmalıyım?
Yalnızca göndericiyi tanıyorsanız ve dosyayı bekliyorsanız izin verin; bu uyarı, güvenilmeyen makroların kod çalıştırmasına izin veren temel kontrol noktasıdır.
S3: Microsoft Excel bir dosyanın internetten gelip gelmediğini nasıl belirler?
Windows, indirilen dosyalara gizli bir “Web İşareti” (Zone.Identifier) akışı ekler; bu, Excel’in dosyaları Koruma Görünümü’nde açmasını ve varsayılan olarak makroları engellemesini sağlar.
S4: CSV dosyaları XLSX ve XLSM dosyalarından daha güvenli mi?
CSV dosyaları yerel VBA makroları içeremez, ancak açıldığında Excel tarafından yürütülen kötü amaçlı komutlar içeriyorsa formül enjeksiyon saldırılarına karşı hâlâ savunmasızdır.
S5: Modern Office Script’leri geleneksel VBA makrolarından nasıl farklıdır?
Office Scripts, bir sandbox ortamında TypeScript üzerinde çalışır ve yerel dosya sisteminize, komut satırına veya işletim sistemi API’lerine erişimini engeller.