Макросите в Excel са мощен инструмент за Автоматизирайте повтарящи се задачи и създавайте персонализирани решенияНо в същото време те са едни от любимите входни точки за зловреден софтуер. Това ни поставя в деликатна ситуация: или печелим време и производителност с макроси, или засилваме сигурността... или се учим да балансираме и двете интелигентно.
В тази статия ще разгледаме много подробно как работи. Сигурност в макросите на Excel и в други пакети като LibreOfficeКакви конфигурации съществуват, каква роля играят цифровите сертификати и надеждните местоположения, какво включват подписите и какви реални рискове съществуват в корпоративна среда. Идеята е, че можете да автоматизирате уверено, но с добра преценка.
Какво представляват макроикономиката и защо представляват риск?
Макросът в Excel е просто набор от инструкции, програмирани във VBA (Visual Basic for Applications), които се съхраняват в модули във файла. Въпреки че много от тях са създадени с макро рекордера, в основата си всичко е VBA код, който се изпълнява в Excel с реалната възможност да действа върху системата.
В продължение на години макроикономиката успяваше да изпълнява команди, изтегля файлове, изтрива данни или манипулира информация както на локалния компютър, така и на мрежови устройства, външни устройства или дори синхронизирани облачни местоположения, което прави всеки неизвестен макрос потенциален вектор за атака.
В ранните версии на Excel макросите бяха написани на Специфични листове с разширение .XLMБазиран на стария език XLM (Excel 4.0). С появата на Excel 5.0, Microsoft включи VBA и оттогава нататък макросите започнаха да се разработват в кодови модули, много подобни на проектите на Visual Basic, със среда за разработка (IDE), подобна на Visual Studio.
В момента Excel ясно прави разлика между файлове със и без код: Стандартните работни книги се запазват като .xlsx файлове и не могат да съдържат макроси., докато тези, които включват VBA, използват разширението .xlsm. Това разделяне е първи слой сигурност, тъй като .xlsx файлът няма да съхранява изпълним код или ActiveX контроли.
Важно е да се разбере, че дори ако потребителят „записва само макроси“, Всичко, което е записано, се превежда вътрешно във VB кодТози код може да бъде преглеждан и променян в редактора на VBA (Alt+F11), дебъгван стъпка по стъпка, могат да се използват точки на прекъсване, могат да се проверяват променливи и т.н. Excel предоставя огромна йерархия от обекти (работни книги, работни листове, диапазони, диаграми, обобщени таблици и др.) с техните свойства, методи и събития и именно тази мощ оправдава толкова много мерки за сигурност.
Нива на сигурност на макросите в Excel
Вътре в раздела Програмист или разработчик, върху бутона за защита на макросиExcel предлага няколко настройки за контрол на поведението на активното съдържание. Тези опции определят дали макросите се изпълняват и при какви условия.
Деактивиране на VBA макроси без уведомление
С тази конфигурация, Excel Той напълно блокира изпълнението на всеки макрос без предупреждение.Файлът се отваря, но VBA кодът никога не се изпълнява и потребителят не вижда предупредителна лента или бутон за активиране на макроси.
Единственият начин да се позволи на макрос да работи в този сценарий е съхранявайте файла на надеждно мястоС други думи, папка, маркирана като защитена в Центъра за доверие, което ще обсъдим по-късно. Тази опция е много ограничаваща и се използва, когато искате да предотвратите активирането на код от обикновения потребител при каквито и да е обстоятелства, освен в предварително одобрени пътища.
Деактивиране на VBA макроси с уведомление
Това обикновено е конфигурацията по подразбиране и най-балансираната за много потребителиExcel отваря файла и показва известие в горната част (под лентата), което показва, че макросите са деактивирани. След това потребителят може да избере да ги активира или не.
Докато не бъде натиснат бутонът за активиране, макросите остават заключени, което дава време на оценете произхода на файла и, ако е необходимо, проверете кода в редактора на VBA, преди да се позволи изпълнение. За обща употреба това е най-препоръчителната опция, защото дава контрол на потребителя, без да отваря вратата за твърде много риск.
Деактивирайте VBA макроси, с изключение на цифрово подписаните
На това ниво, Excel Позволява изпълнението само на макроси, подписани с надежден цифров сертификат.Ако файлът съдържа макрос, подписан от издател, на когото вече имаме доверие, той ще се изпълни автоматично (или с по-малко затруднения); неподписаните макроси или тези, подписани с ненадеждни сертификати, обаче ще бъдат блокирани.
Този подход е много интересен в корпоративна среда, тъй като налага това вътрешните инструменти са подписани и контролираниТова ви позволява автоматично да приемате макроси от сертифицирани доставчици или отдели и да отхвърляте останалите, като по този начин минимизирате повърхността за атака, без напълно да забранявате автоматизацията.
Активиране на всички VBA макроси (не се препоръчва)
Тази опция отваря широко вратата и Това позволява на всеки макрос да се изпълнява върху всеки файл веднага щом бъде отворен.Excel вече не показва предупреждения или не иска потвърждение; ако работната книга съдържа код със събития за отваряне (например Workbook_Open), този код ще се задейства при зареждане на файл.
Това е конфигурацията по-опасно и непрепоръчителноТъй като само един потребител трябва да отвори злонамерена книга, за да бъде компрометирана машината му, това би имало смисъл само в много специфични, изолирани тестови среди и никога в нормални работни среди или организации.
Други опции за защита на макроси в Excel

Макроси на Excel 4.0 (XLM)
Преди VBA, Excel позволяваше макроси, написани на XLM език, известен като макроси на Excel 4.0Те са били широко използвани по тяхно време и все още могат да се появят на стари чаршафи или в някои специфични настройки.
Днес, от съображения за сигурност, XLM макросите обикновено са напълно деактивираниИма обаче опция за конфигуриране, която ги активира, когато са активирани VBA макроси. Активирането на тази опция би имало смисъл само ако има реална нужда от използване на стари работни листове и винаги в контролирани среди, тъй като тези макроси могат да бъдат използвани и от злонамерен софтуер.
Доверяване на достъпа до обектния модел на VBA проект
Друга разширена опция позволява предоставяне на разрешения на други приложения или скриптове. програмен достъп до обектния модел на VBA проектТова означава, че външна програма може да проверява и променя VBA кода на проекти на Office.
По подразбиране е логично да оставите това квадратче отметнато. винаги изключенАктивирането му отваря вратата за потенциално злонамерен външен код, който да инжектира или променя макроси в проекти, което значително увеличава риска. Трябва да се активира само ако имате задълбочено разбиране за това, което правите, и използвате високоспецифични и напълно надеждни инструменти за автоматизация.
Надеждни местоположения в Excel
Ключова част от системата за сигурност на офиса е надеждни местоположения на файловеТова са папки (локални или мрежови), които потребителят или администраторът маркира като безопасни в Центъра за доверие. Всяка работна книга, съдържаща VBA код, съхранен там, ще се отвори автоматично с активирани макроси.
В Excel 2007, 2010, 2013 и по-нови версии тези папки се конфигурират от Доверен център > Доверени местоположенияВъзможно е да добавяте, редактирате или премахвате пътища. Често срещана практика е да се създаде папка, например „ДОВЕРЕНИ ФАЙЛОВЕ“, и да се определи като сигурно място; от този момент нататък, Всички книги със запазени макроси се изпълняват без предупреждения..
Тази функция е много полезна за управлявайте макроси, изтеглени от интернет или споделени вътрешноЕдин възможен работен процес би бил: изтеглете макроса, запазете го в надеждната папка и го активирайте там само ако е необходимо. По този начин имате по-добър контрол върху това кои файлове се считат за надеждни в организацията.
Цифрови сертификати и подписване на макроси в Office
За да подобри допълнително сигурността, Office използва технологии Microsoft Authenticode за цифрово подписване на макроси и документиКогато макро проект или файл е цифрово подписан, с него се свързва сертификат, който идентифицира подписващия и позволява проверка дали съдържанието е било променяно след подписването му.
Цифровият сертификат, използван за подписване, изпълнява две функции: Това гарантира самоличността на автора и осигурява целостта на файла.Ако някоя част от документа или макро проекта бъде променена след подписването, тя ще стане невалидна след проверката.
Има няколко начина за получаване на сертификат:
- Придобийте го от търговски сертифициращ орган (CA)., който ще издаде публично признат сертификат.
- Заявете го от администратор по сигурността или вътрешен ИТ отдел, в случай че организацията разполага със собствена инфраструктура с публични ключове.
- Създайте a тестов сертификат с помощта на инструмента Selfcert.exeпредназначен за среди за разработка и тестване.
След като сертификатът е инсталиран на компютъра, е възможно Подписвайте цели файлове или само макро проектиВ Excel подписването на код се управлява от VBA редактора, в менюто Инструменти > Цифров подпис, чрез избиране на желания сертификат.
Голямото предимство е, че чрез комбиниране на този подпис с настройката „Деактивиране на всички макроси освен цифрово подписаните“ и с надеждни местоположения, можете да изградите стабилен модел на доверие за използване на макроси в бизнесаВътрешните макроси се подписват и разпространяват от контролирани хранилища; външните макроси, освен ако не идват от сертифицирани доставчици, са или напълно блокирани, или се изпълняват с много ограничения.
Защита на макросите в LibreOffice
Пакетът LibreOffice също така включва собствена система от нива на сигурност за макросиМного подобен по концепция на Microsoft Office, макар и със свои собствени нюанси. При отваряне на документ с макроси (подписани или неподписани) от неизвестен източник се показва предупреждение за сигурност; външният му вид и поведение зависят от конфигурираното ниво на сигурност.
Целта на това известие е да предупреди, че макросите могат да съдържат вирус или зловреден код, който засяга целостта на даннитеТе могат да изпълняват команди, способни да изтриват файлове на твърдия диск или на устройства, достъпни от компютъра, така че не е разумно да ги активирате лекомислено.
LibreOffice ви позволява да конфигурирате макроси на четири нива, достъпни от Инструменти > Опции > LibreOffice > Защита > Бутон „Защита на макроси“Доверените източници и местоположения също се дефинират оттам.
Много високо ниво на сигурност
На това ниво, Макросите се изпълняват само от документи, намиращи се в надеждни папки.Всеки друг макрос, независимо от произхода му или дали е подписан или не, се деактивира без колебание.
Това е много строга конфигурация, но е подходяща, когато искате напълно да ограничите използването на макроси до много малък набор от документи, съхранявани в специфични, предварително проверени пътища.
Високо ниво на сигурност
Това е нивото, което LibreOffice задава настройките по подразбиране след първата инсталация.Когато се отвори документ с макроси, се показва предупреждение, което показва, че макросите са деактивирани и файлът се отваря, без да се разрешава тяхното изпълнение.
Въпреки това, се прави изключение за макроси, намиращи се в надеждни източници или цифрово подписани от надеждни издателикоето може да се изпълни. Това е разумна конфигурация за повечето потребители, тъй като ги принуждава да бъдат селективни по отношение на това кои документи се считат за безопасни.
Средно ниво на сигурност
На средно ниво LibreOffice показва диалогов прозорец при отваряне на документи с макроси което ви позволява изрично да избирате между „Активиране на макроси“ или „Деактивиране на макроси“. Отново, макросите от надеждни местоположения или редактори се активират без проблем.
Този режим дава на потребителя по-голяма свобода, позволявайки му да взема решения във всеки отделен случай, но изисква повече преценка и обучение за да се избегне активиране на опасни макроси по погрешка или по навик.
Ниско ниво на сигурност
В този случай, LibreOffice не показва никакви предупреждения и позволява автоматично изпълнение на макроси. веднага щом документът бъде отворен. Това е най-незащитеният метод и изобщо не се препоръчва.
Тъй като много макроси могат да бъдат конфигурирани да се изпълняват при отваряне на файл, тази конфигурация оставя системата изложена на риск от всеки злонамерен документ, изтеглен или получен по имейл, давайки ѝ пълна свобода да действа, без потребителят да има възможност да реагира.
Доверени местоположения и източници в LibreOffice
Подобно на Excel, LibreOffice ви позволява да обозначавате папки като надеждни местоположения на файловеДокументите, съдържащи макроси, се считат за безопасни и техните макроси винаги се изпълняват, независимо от другите настройки на нивото.
Тези папки са дефинирани в раздела Източници на доверие в диалога МакросигурностТези местоположения ви позволяват да добавяте и премахвате маршрути, като използвате съответните бутони. Напълно логично е да резервирате тези пространства за вътрешни шаблони и инструменти, които са били предварително прегледани и валидирани.
Подписване на макроси в LibreOffice
В LibreOffice макросите са част от самия документ, така че Чрез цифрово подписване на файла, макросите също се подписват.Възможно е обаче да се приложат отделни подписи, за да се разграничи подписът на съдържанието от подписа на кода.
За да подпишете макросите, просто отидете на Инструменти > Макроси > Цифров подписТова ще отвори диалоговия прозорец за цифров подпис. Оттам се избира подходящият сертификат и подписът се прилага съгласно обичайната процедура.
След като кодът е подписан, средата за разработка Basic показва икона на индикатора в лентата на състояниетоОттам можете да видите сертификата с двойно щракване. Това ви помага бързо да проверите дали кодът идва от надежден автор и дали документът е бил променен след подписването му.
Реални рискове и макрополитики в корпоративна среда
В много организации използването на макроси и добавки на Office е тема на Постоянен дебат между производителността и безопасносттаОт една страна, има много бизнес процеси, изградени върху електронни таблици на Excel с VBA код и COM или VSTO добавки; от друга страна, всеки файл с макроси, който потребителят отваря на свой собствен риск, може да се превърне в входна врата за атака.
Често срещан проблем е, че Няма ясна картина за това колко макроса всъщност се използват или какво правят.Много инструменти се раждат като бързи решения за напреднал потребител и в крайна сметка се превръщат в критични компоненти, без да преминават през официални контроли за сигурност, преглед на кода или цифрови подписи.
Предвид този сценарий, някои компании обмислят затягане на политиките си по следния начин:
- Деактивирайте всички макроси и плъгини по подразбиранетака че потребителят да не може просто да приеме предупреждението и да продължи напред.
- Позволете само изпълнение на цифрово подписани макросиили от доверени доставчици, или от самата организация чрез вътрешни сертификати.
- Създаване на по-разрешителни политики за определени потребителски групи които наистина се нуждаят от разширена автоматизация, управляваща изключенията централизирано.
Този подход драстично намалява риска, но носи със себе си и значително увеличение на административната тежестНеобходимо е да се поддържат подписани версии на всички вътрешни инструменти, да се управляват сертификати, да се преглеждат и актуализират политики и да се предоставя поддръжка на потребителите, когато обичайните им макроси спрат да работят.
Освен това, много организации допълват тези мерки с правила за Намаляване на повърхността за атака (ASR) на Microsoft DefenderТези правила ограничават какво могат да правят приложенията на Office (например, блокиране на създаването на дъщерни процеси, предотвратяване на изпълнението на скриптове или подозрителни изтегляния и др.), намалявайки въздействието на злонамерени макроси, дори ако те успеят да се изпълнят.
Големият въпрос, който си задава ИТ секторът, обикновено е триъгълен: Какво ниво на реален риск е свързано с разрешаването на потребителя да активира макроси при поискване?, ако правилата за ASR намалят този риск до приемливо ниво и ако повишената безопасност компенсира оперативното въздействие.
Няма еднозначен отговор, но в среди с чувствителни данни или висока степен на експозиция, най-разумното нещо, което можете да направите, е Комбинирайте рестриктивни макро политики, систематично използване на цифрови подписи и добре конфигурирани ASR правилаВ допълнение към инвентаризирането и рационализирането на съществуващите макроси, в по-малки или по-малко критични контексти, поддържането на режим на известия, добър, актуален антивирус и обучение на потребителите може да са достатъчни.
Накратко, сигурността на макросите в Excel, LibreOffice и други приложения на Office не е маловажен проблем: зад една обикновена електронна таблица може да се крие код с мощен достъп до вашата система и вашите данни.
Разбирането на пакети като нива на сигурност, надеждни местоположения, цифрови сертификати, подписване на макроси и ролята на инструменти като ASR ви позволява да извлечете максимума от автоматизацията, без да превръщате инфраструктурата в сито, поддържайки разумен баланс между удобство и защита. Споделете тази информация и повече потребители ще научат за защитата на макросите в Excel..