Вопрос безопасности при использовании внешних обработок в экосистеме 1С:Предприятие стоит очень остро. В отличие от обычных файлов, обработка — это исполняемый код, который имеет доступ к вашей базе данных, файловой системе сервера и сети. Рассмотрим подробнее, как защитить информационную систему и какие шаги предпринять для проверки полученного от стороннего разработчика файла.
Первым делом проанализируем внутреннее содержимое файла .epf или .erf. Для этого откроем обработку в режиме «Конфигуратор». Поскольку код в большинстве внешних обработок открыт, мы можем детально изучить алгоритмы. Разберем, на что стоит обратить внимание в первую очередь:
Поиск бинарных данных в макетах. Перейдем на закладку «Макеты». Если мы видим макеты с типом «Двоичные данные», это повод для тщательной проверки. В таких макетах могут быть скрыты исполняемые файлы (.exe, .dll, .bat), которые обработка может сохранить на диск и запустить. Проанализируем программный код на предмет вызова методов получения этих макетов.
Пример подозрительного кода, который стоит искать:
Макет = ЭтотОбъект.ПолучитьМакет("ВнешняяКомпонента");
ИмяФайла = КаталогВременныхФайлов() + "lib.dll";
Макет.Записать(ИмяФайла);
ПодключитьВнешнююКомпоненту(ИмяФайла, "Вирус", ТипВнешнейКомпоненты.Native);
Анализ функций динамического исполнения кода. Самый опасный инструмент в руках злоумышленника — функции Выполнить() и Вычислить(). В них может передаваться зашифрованная строка, которая при запуске превращается в команду по удалению данных или рассылке спама. Проанализируем все вхождения этих функций. Особенно подозрительно, если аргумент функции формируется из нечитаемых наборов символов или получается через интернет.
Выясним, как программно ограничить возможности обработки. Платформа 1С:Предприятие поддерживает механизм «Безопасный режим». Если запустить обработку в этом режиме, система автоматически блокирует большинство опасных операций. В безопасном режиме запрещены:
Выполнить() и Вычислить().Разберем по шагам, как программно открыть обработку максимально безопасно:
ПараметрыОткрытия = Новый Структура("Ключ", "Значение");
// Устанавливаем БезопасныйРежим в Истина
ВнешняяОбработка = ВнешниеОбработки.Создать(ПутьКФайлу, Истина);
ВнешняяОбработка.ПолучитьФорму().Открыть();
Также стоит включить в настройках пользователя флаг «Защита от опасных действий». В последних версиях платформы 8.3 это заставляет систему выдавать предупреждение при каждой попытке запуска внешнего кода, требуя подтверждения от пользователя.
Проанализируем ситуацию, когда обработка пытается взаимодействовать с операционной системой напрямую. Использование определенных COM-объектов практически всегда является «красным флагом», если только их использование не было заранее оговорено в техническом задании. Проверим код на наличие следующих конструкций:
Новый COMОбъект("WScript.Shell") — позволяет запускать любые системные команды Windows.Новый COMОбъект("Shell.Application") — предоставляет доступ к управлению файлами и проводником.Новый COMОбъект("ADODB.Stream") — часто используется для скрытой записи файлов на диск.Если мы видим вызов метода ЗапуститьПриложение(), проверим, какой именно файл запускается. Если путь ведет во временную директорию пользователя, велика вероятность, что обработка запускает предварительно сохраненный туда вирус.
Рассмотрим метод проверки, не требующий глубокого знания кода. Попросим системного администратора подготовить изолированную среду — «песочницу». Это может быть виртуальная машина, не имеющая доступа к основной сети и важным данным.
Для мониторинга активности можно использовать инструменты типа Total Uninstall или специализированные утилиты для создания слепков системы (снапшотов). Выполним следующие действия:
Если после работы обработки в системных папках появились новые файлы или изменились ключи реестра, не относящиеся к работе 1С, такая обработка однозначно вредоносна. Также проанализируем сетевую активность через монитор ресурсов: если обычная обработка по загрузке прайсов начинает активно передавать данные на неизвестные IP-адреса, это признак «шпионского» ПО.
Для администраторов больших систем наиболее надежным способом является настройка профилей безопасности на уровне кластера серверов 1С. Мы можем создать профиль, который жестко ограничивает возможности любой внешней обработки, даже если она запущена от имени администратора 1С.
В профиле безопасности можно:
Даже если злоумышленник внедрил в обработку код УдалитьФайлы("C:\Windows\System32"), сервер 1С заблокирует эту попытку, так как она не разрешена в профиле безопасности информационной базы.
Посмотрим на проблему шире: вредоносный код может не сработать мгновенно. Проанализируем код на предмет создания РегламентныеЗадания или ФоновыеЗадания. Коварство заключается в том, что вы можете запустить обработку один раз, она создаст задание в базе, которое выполнится через месяц, когда вы уже забудете о проверке. Обязательно проверяйте, не добавляет ли обработка записи в справочники или константы, которые могут содержать исполняемые скрипты для последующего запуска.
Подведем итог: Безопасная работа с внешними разработками строится на сочетании внимательного чтения кода, использования встроенных механизмов защиты платформы (Безопасный режим, Профили безопасности) и запуска подозрительных файлов в изолированных средах. Если код обработки обфусцирован (намеренно запутан и нечитаем) или закрыт паролем — это повод для безусловного отказа от использования такой разработки.