
Макросите в Word и останалата част от Office са много полезен инструмент.Те автоматизират отчети, генерират документи в движение и спестяват часове работа всяка седмица. Но същата тази сила има и много неприятен недостатък: те са един от любимите вектори за атака за разпространява зловреден софтуеркражба на данни или проникване в корпоративна мрежа. Ето защо, ако работите с VBA, рано или късно ще трябва да вземете сигурността сериозно. И по-специално, цифров подпис на макроси.
Тази статия предлага най-добри практики, за да гарантирате, че вашите VBA проекти са надеждни и лесни за поддръжка. Обясняваме също как работи цифровото подписване на макроси в Word (и останалата част от Office), какво ви е необходимо, за да го внедрите, как да добавяте времеви печати и какви политики за сигурност можете да комбинирате (надеждни местоположения, защита с парола, одити, обучение на потребителите и др.), за да изградите стабилна и реалистична стратегия за вашата организация.
Защита на макросите в Word и Център за доверие
Първият слой защита за всеки макрос в Word е в Център за доверие на OfficeОттам вие решавате как приложението да се държи с всеки документ, съдържащ VBA код: дали да блокира всичко, да разрешава само подписан код или да иска потвърждение всеки път, когато открие макроси.
на опции за конфигурация на макроси Това обикновено са тези в Центъра за доверие:
- Деактивирайте всички макроси без предупреждение.
- Деактивирайте всички известия.
- Активиране на всички (последната опция силно се не препоръчва в реални условия).
- Деактивирайте всички, освен тези, които са цифрово подписани.
Когато е зададена политиката „Деактивиране на всички макроси с изключение на цифрово подписаните“Word и останалата част от Office изпълняват само VBA код, който има валиден подпис. Ако документът съдържа неподписани макроси, кодът се блокира напълно и в зависимост от версията и канала за актуализация, типичното предупредително съобщение може да не се появи – нещо, което много администратори са забелязали, особено в Excel 2016 и 365 Click-to-Run.
Това поведение може да е в противоречие с описанието в някои официални статии, в които се посочва, че трябва да се показва предупреждение за сигурност, за да може потребителят да се довери на документа. На практика, с опцията „само подписан“, философията е много по-строга: ако няма подпис, нищо не се изпълнява и файлът не се конвертира веднага в надежден документ.
Цифрови сертификати: какво представляват и как да ги получите
За да можете да подписвате цифрово макроси в Word, ви е необходим... цифров сертификат който се използва специално за подписване на код или VBA проекти. Този сертификат може да бъде издаден от търговски сертифициращ орган (CA), от собствената инфраструктура за публични ключове на компанията или, за тестови среди, от самоподписан сертификат, създаден с инструменти на Microsoft.
Търговските сертифициращи органи предлагат стандартни сертификати за подписване на код и все по-често сертификати за разширено валидиране (EV)Последните обикновено изискват защитен хардуер (HSM, USB токени или услуги като Azure Key Vault) за съхранение на частния ключ, което осигурява допълнителна сигурност и контрол върху това кой може да подписва код в организацията.
Ако търсите среда за тестване или вътрешна разработка, можете да изберете да създадете самоподписан сертификат, използващ помощната програма SelfCert.exe, включена в OfficeТова служи само за да накара вашия собствен компютър (или тези, на които е импортиран ръчно) да се доверяват на кода, но е достатъчно да експериментирате с цифрови подписи, преди да преминете към сертификати, издадени от истински CA.
За да генерирате този самоподписан сертификат със SelfCert, просто намерете изпълнимия файл в папката на Office, стартирайте го, въведете описателно име в полето „Име на сертификат“ и потвърдете. Съветникът ще създаде и съхрани сертификата директно в личното хранилище за сертификати на потребителя, което го прави готов за използване от Visual Basic при подписване на проекти.
Създаване, преглед и управление на сертификати за макроси
След като сертификатът е създаден или инсталиран, е важно проверете дали действително се намира в правилния складСертификатите за подписване на код за VBA обикновено се съхраняват в личните сертификати на потребителя и могат да бъдат достъпни чрез инструментите за управление на сертификати на системата или браузъра.
В отбори с Microsoft EdgeНапример, възможно е бързо да проверите личните сертификати, като отворите браузъра и въведете edge://settings/privacy В адресната лента превъртете надолу до секцията за сигурност, където ще намерите опцията „Управление на сертификати“. Оттам можете да преглеждате, импортирате или експортирате сертификати, както и да проверявате датите им на валидност.
Важно е бъдете наясно кои сертификати са валидниПодпис, базиран на изтекъл сертификат, без времева маркировка, може вече да не се счита за валиден. Самият Office ще показва предупреждения, ако открие, че идентификационните данни, използвани за подписване на VBA проекта, са изтекли или са били отменени от издалия орган.
Някои CA, специализирани в подписването на код Те улесняват директното инсталиране на сертификата в HSM на клиента или в облачни хранилища за ключове, без да е необходимо да се обработва частният ключ на отделни компютри. Този подход минимизира риска от кражба или изтичане на ключа за подписване на макроси, което е критично, ако подписаните шаблони се разпространяват до хиляди потребители.

Как да подпишете цифрово проект с макроси в Word
Цифровият подпис се прилага към целия VBA проект, който съдържа макросите.не за всяка процедура поотделно. Процесът е много подобен в Word, Excel, PowerPoint, Outlook и други приложения на Office, които поддържат VBA.
El типичен поток За да подпишете макро проект в Word, използвайте този метод:
- Отворете документа или шаблона, който съдържа кода.
- Отидете в раздела „Разработчик“.
- В групата „Код“ щракнете върху „Visual Basic“, за да получите достъп до редактора на VBA.
- От менюто „Инструменти“ на редактора изберете опцията „Цифров подпис“.
Когато отворите диалоговия прозорец за цифров подпис, се показва следното: списък със сертификати, налични на компютъра който може да се използва за подписване на проекта. Просто изберете подходящия сертификат (сертификат за подписване на код или самоподписания сертификат, който е създаден преди това) и приемете подписът да бъде приложен към текущия проект.
След запазване на документа или шаблонаПодписът е вграден във файла. Когато друг потребител отвори документа в Word, системата за защита на макросите ще провери подписа и ще провери дали сертификатът е надежден и не е бил отменен. Ако всичко е правилно, потребителят ще може да изпълнява макросите, без да намалява общото ниво на защита.
Жизненоважно е да се разбере, че всяка промяна във VBA кода прави подписа невалиден.Ако даден модул бъде променен, изтрит или бъде добавен нов макрос, предишният подпис става невалиден и документът отново се счита за неподписан. Ако обаче разработчикът все още има същия сертификат, използван за първоначалното подписване, наличен на компютъра си, проектът може да бъде подписан отново след запазване, за да се възстанови доверието.
Рискове от опасен VBA код и използване на функцията Environ
Езикът VBA е много мощен, но неговата гъвкавост го прави и... опасна повърхност за атакаПростият факт, че макросите могат да изпълняват код при отваряне на документ, ги прави отлично средство за злонамерен софтуер, рансъмуер и кражба на информация, ако не се прилага строг контрол.
От гледна точка на разработчикаМного уязвимости възникват, защото макросите са написани без да се взема предвид сигурността: външните данни са надеждни без валидиране, чувствителните действия (достъп до системни файлове, връзки към база данни, изпращане на имейли) са автоматизирани без контрол на разрешенията или автоматичното изпълнение е активирано при отваряне на документа чрез събития като... Document_Open.
Крайните потребители също са част от проблемазащото те често активират макроси в документи, произхождащи от подозрителни имейли или неясни източници. Тези кампании Фишинг Те експлоатират именно това доверие: прикачват Word документ с макроси, които, когато са активирани, изтеглят и изпълняват зловреден код, често невидим за потребителя.
На този етап функцията Environ VBA е особено деликатенТази функция ви позволява да заявявате променливи на системната среда (като например USERNAME, APPDATA, USERPROFILEи др.), което е много полезно за писане на макроси, които автоматично се адаптират към различни компютри, пътища и потребители.
Проблемът е в това Променливите на околната среда също могат да разкрият чувствителна информация или да бъдат използвани злонамерено. Нападателят може да прибегне до Environ да локализира конкретни папки, да профилира системата на жертвата или да насочва полезните ѝ товари към конкретни пътища. Може дори да се опита да повлияе на поведението на макроса, ако успее да манипулира определени променливи на средата на атакуваната система.

Най-добри практики за безопасно използване на Environ
Ключът към usar Environ сигурно в макроси на Word Не става въпрос за забрана, а за третиране на информацията, която връща, като ненадежден вход. Тоест, валидиране, дезинфекция и проверка на всяка стойност, преди да се използва във файлови пътища, връзки или бизнес решения. Ето нашите препоръки:
- Валидирайте всеки маршрут, върнат от
EnvironАко макросът очаква типична потребителска папка на Windows, препоръчително е да проверите дали стойността съответства на разумен шаблон и дали пътят действително съществува. Ако низът съдържа странни символи, опасни относителни пътища или последователности, които могат да показват опит за инжектиране, най-безопасният начин на действие е да прекратите операцията и да предупредите потребителя. - Избягвайте прекомерната зависимост от променливите на околната среда За критични решения, свързани с кода, ако даден маршрут или ключова стойност на практика е фиксирана за всички екипи в организацията, може да е по-безопасно тя да бъде зададена на константа, отколкото динамично да се чете от средата, където някой би могъл да я манипулира.
- Приложете принципа на най-малките привилегии. Потребителският акаунт, който изпълнява макроса, трябва да има само необходимите разрешения. По този начин, дори ако някой манипулира променлива на средата и макросът в крайна сметка сочи към неочакван път, потенциалните щети ще бъдат ограничени от системните ограничения.
- Внедрете стабилна обработка на грешки около извикванията към
EnvironАко дадена променлива не съществува, е променила името си или връща нещо неочаквано, макросът трябва да реагира контролирано: да покаже ясно съобщение на потребителя, да регистрира инцидента, ако е необходимо, и да спре коректно, преди да предизвика верижни реакции или да разкрие допълнителна информация.
Доверени местоположения, политики и цифрови подписи в организацията
В допълнение към цифровите подписи, Word и останалата част от Office също имат концепцията за „доверени места“Това са специфични папки, локални или мрежови, чието съдържание се счита за безопасно по дизайн, така че документите със запазени там макроси могат да се изпълняват без допълнителни предупреждения.
Доверените местоположения са оръжие с две остриета:
- От една страна, те позволяват корпоративните макроси да се изпълняват без неудобство за потребителя.
- От друга страна, ако те се използват прекомерно или са дефинирани твърде много пътища, повърхността за атака се разширява значително, тъй като всеки злонамерен файл, поставен в тези папки, би заобиколил някои от контролите.
Най-разумното нещо обикновено е ограничаване на броя на надеждните местоположения до няколко строго контролирани пътя, в идеалния случай на мрежови сървъри, управлявани от ИТ. Потребителите не трябва да могат свободно да добавят нови местоположения. Препоръчително е също периодично да се преглежда кои пътища са маркирани като безопасни, за да се гарантира, че не са добавени ненужни или временни папки.
Успоредно с това, корпоративни политики за макросигурност Те могат да изискват всяко вътрешно разпространявано VBA решение да бъде подписано с фирмен сертификат. По този начин, дори ако документът е копиран извън надеждно местоположение, подписът все пак ще осигури контрол на целостта и автентичността.
Одити, прегледи и обучение на потребителите
Сериозната политика за макросигурност не е просто конфигуриране на опции веднъж и последно забравяне за тях. Екосистемата от заплахи се променя постоянно, както и начинът, по който служителите използват макроси. Ето защо Препоръчително е да се планират периодични одити на използваните VBA код и шаблони.
От гледна точка на разработката, тези одити включват преглед на кода за остарели функции, опасни зависимости, неадекватна обработка на грешки или незащитен достъп до чувствителни ресурси. Те също така проверяват спазването на вътрешните насоки, като например избягване на ненужни самоизпълняващи се макроси или съхраняване на идентификационни данни в обикновен текст в кода.
Успоредно с това е полезно комбинирайте ръчни прегледи с инструменти за автоматизиран анализТези инструменти са способни да откриват подозрителни модели в макроси, като например извиквания на системен API, манипулиране на файлове извън очакваните пътища или комуникация на данни по мрежата. Те могат да бъдат интегрирани в работния процес на разработка, за да предупреждават програмистите преди пускането на нови версии.
Контролът на версиите и управлението на промените също играят важна роляДокументирането на това кой е променил всеки макрос, кога и защо ви позволява да проследите произхода на потенциални проблеми със сигурността и бързо да се върнете към предишна версия, ако дадена актуализация въведе нежелано поведение.
Когато всички тези мерки се комбинират – цифрови подписи, добре управлявани сертификати, времеви печати, проследяване на местоположението, защита на кода, одити и осведоменост на потребителите –Макросите на Word престават да бъдат неконтролируема заплаха и се превръщат в мощен, но управляван инструмент, който носи продуктивност, без да застрашава сигурността на организацията.

