Как проверить внешнюю обработку 1С на наличие вирусов и вредоносного кода?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Вопрос безопасности при использовании внешних обработок в экосистеме 1С:Предприятие стоит очень остро. В отличие от обычных файлов, обработка — это исполняемый код, который имеет доступ к вашей базе данных, файловой системе сервера и сети. Рассмотрим подробнее, как защитить информационную систему и какие шаги предпринять для проверки полученного от стороннего разработчика файла.

1. Ручной аудит кода в Конфигураторе

Первым делом проанализируем внутреннее содержимое файла .epf или .erf. Для этого откроем обработку в режиме «Конфигуратор». Поскольку код в большинстве внешних обработок открыт, мы можем детально изучить алгоритмы. Разберем, на что стоит обратить внимание в первую очередь:

Поиск бинарных данных в макетах. Перейдем на закладку «Макеты». Если мы видим макеты с типом «Двоичные данные», это повод для тщательной проверки. В таких макетах могут быть скрыты исполняемые файлы (.exe, .dll, .bat), которые обработка может сохранить на диск и запустить. Проанализируем программный код на предмет вызова методов получения этих макетов.

Пример подозрительного кода, который стоит искать:


Макет = ЭтотОбъект.ПолучитьМакет("ВнешняяКомпонента");
ИмяФайла = КаталогВременныхФайлов() + "lib.dll";
Макет.Записать(ИмяФайла);
ПодключитьВнешнююКомпоненту(ИмяФайла, "Вирус", ТипВнешнейКомпоненты.Native);

Анализ функций динамического исполнения кода. Самый опасный инструмент в руках злоумышленника — функции Выполнить() и Вычислить(). В них может передаваться зашифрованная строка, которая при запуске превращается в команду по удалению данных или рассылке спама. Проанализируем все вхождения этих функций. Особенно подозрительно, если аргумент функции формируется из нечитаемых наборов символов или получается через интернет.

2. Использование безопасного режима платформы

Выясним, как программно ограничить возможности обработки. Платформа 1С:Предприятие поддерживает механизм «Безопасный режим». Если запустить обработку в этом режиме, система автоматически блокирует большинство опасных операций. В безопасном режиме запрещены:

Разберем по шагам, как программно открыть обработку максимально безопасно:


ПараметрыОткрытия = Новый Структура("Ключ", "Значение");
// Устанавливаем БезопасныйРежим в Истина
ВнешняяОбработка = ВнешниеОбработки.Создать(ПутьКФайлу, Истина); 
ВнешняяОбработка.ПолучитьФорму().Открыть();

Также стоит включить в настройках пользователя флаг «Защита от опасных действий». В последних версиях платформы 8.3 это заставляет систему выдавать предупреждение при каждой попытке запуска внешнего кода, требуя подтверждения от пользователя.

3. Проверка на использование COM-объектов и системных вызовов

Проанализируем ситуацию, когда обработка пытается взаимодействовать с операционной системой напрямую. Использование определенных COM-объектов практически всегда является «красным флагом», если только их использование не было заранее оговорено в техническом задании. Проверим код на наличие следующих конструкций:

Если мы видим вызов метода ЗапуститьПриложение(), проверим, какой именно файл запускается. Если путь ведет во временную директорию пользователя, велика вероятность, что обработка запускает предварительно сохраненный туда вирус.

4. Поведенческий анализ в «песочнице»

Рассмотрим метод проверки, не требующий глубокого знания кода. Попросим системного администратора подготовить изолированную среду — «песочницу». Это может быть виртуальная машина, не имеющая доступа к основной сети и важным данным.

Для мониторинга активности можно использовать инструменты типа Total Uninstall или специализированные утилиты для создания слепков системы (снапшотов). Выполним следующие действия:

  1. Сделаем первый слепок состояния файловой системы и реестра Windows.
  2. Запустим обработку в 1С и выполним в ней целевые действия.
  3. Сделаем второй слепок системы.
  4. Сравним два состояния.

Если после работы обработки в системных папках появились новые файлы или изменились ключи реестра, не относящиеся к работе 1С, такая обработка однозначно вредоносна. Также проанализируем сетевую активность через монитор ресурсов: если обычная обработка по загрузке прайсов начинает активно передавать данные на неизвестные IP-адреса, это признак «шпионского» ПО.

5. Профили безопасности (для серверных баз)

Для администраторов больших систем наиболее надежным способом является настройка профилей безопасности на уровне кластера серверов 1С. Мы можем создать профиль, который жестко ограничивает возможности любой внешней обработки, даже если она запущена от имени администратора 1С.

В профиле безопасности можно:

Даже если злоумышленник внедрил в обработку код УдалитьФайлы("C:\Windows\System32"), сервер 1С заблокирует эту попытку, так как она не разрешена в профиле безопасности информационной базы.

6. Проверка скрытых механизмов (фоновые задания)

Посмотрим на проблему шире: вредоносный код может не сработать мгновенно. Проанализируем код на предмет создания РегламентныеЗадания или ФоновыеЗадания. Коварство заключается в том, что вы можете запустить обработку один раз, она создаст задание в базе, которое выполнится через месяц, когда вы уже забудете о проверке. Обязательно проверяйте, не добавляет ли обработка записи в справочники или константы, которые могут содержать исполняемые скрипты для последующего запуска.

Подведем итог: Безопасная работа с внешними разработками строится на сочетании внимательного чтения кода, использования встроенных механизмов защиты платформы (Безопасный режим, Профили безопасности) и запуска подозрительных файлов в изолированных средах. Если код обработки обфусцирован (намеренно запутан и нечитаем) или закрыт паролем — это повод для безусловного отказа от использования такой разработки.

← На главную