#std669¶
Ограничение на выполнение "внешнего" кода¶
Внешний код может быть подключен с помощью:
- внешних отчетов
- внешних обработок
- расширений конфигурации
- внешних компонент
- другими способами (какими?)
Внешний код может содержать деструктивные действия:
- в самом коде выполнить действие
- запустить внешнее приложение
- внешнюю компоненту
- создать COM-объект
Пример уязвимости Информация для пользователей и партнеров №21537 от 22.06.2016
1.¶
Запрещено выполнение на сервере в небезопасном режиме любого кода, который не является частью программы.
Запускать можно код, прошедший аудит. Или код на клиенте.
Например
- внешние отчеты и обработки, расширения, внешние компоненты, любые аналоги подключения внешнего кода
- алгоритмы на встроенном языке, тексты запросов и фрагменты текстов запросов, используемые в методах
ВыполнитьиВычислить. См. #std770: Ограничения на использование Выполнить и Вычислить на сервере - изменение схем компоновки данных, в которых разрешено использование внешних функций, а так же загрузку схем компоновки данных из файлов
При использовании БСП внешний код надо подключать только средствами БСП:
- расширения - через механизм базовой функциональности
- внешние отчеты и обработки - через подсистему "Дополнительные отчеты и обработки"
- внешние компоненты - через подсистуму "Внешние компоненты"
- для запуска внешних программ - См. #std774: Безопасность запуска приложений
2.¶
По умолчанию требуется отключить интерактивное открытие внешних отчетов и обработок через меню Файл - Открыть. В том числе у администратора.
См. пп. 2.2 и 2.3 #std488: Стандартные роли
Администратор может разрешить интерактивное открытие.
При интерактивном открытии надо уведомлять об опасности действия

3.¶
Предупреждайте администратора об опасности подключения любого внешнего кода.
3.1.¶
Предупреждение должно содержать:
Цитата
Внешний код, полученный из недостоверных источников (с которыми, например, нет договоренности о разработке такого кода), может нанести вред компьютерам пользователей, серверным компьютерам, а также данным в программе.
Дайте возможность администратору прервать загрузку, провести аудит, а потом заново повторить загрузку.
При загрузке расширения

При загрузке дополнительной обработки

При загрузке внешней компоненты

3.2.¶
Подключенный администратором внешний код другие пользователи могут использовать без предупреждений.
Механизм защиты от опасных действий платформы во всех случаях отключать запрещено.
Руководство разработчика 7.10.2. Отключение механизма защиты от опасных действий
4.¶
Средства обновления конфигурации (из файлов .cf или .cfu), средства восстановления из резервной копии или загрузки из dt-файла
- должны быть доступны только администратору
- должно выполняться только интерактивно
- администратору надо показать предупреждение
- при получении обновления из сети Интернет, надо использовать защищенное соединение
5.¶
Произвольные файлы могут содержать вредоносный код.
Предусмотрите блокировку загрузки файлов по списку разрешенных (запрещенных) расширений.
Открывать исполняемые файлы из программы запрещено. Даже если их разрешено загрузить и хранить в программе.
Вредоносный код может содержаться в макросах Microsoft Office. При работе с такими файлами используйте средства безопасности, заложенные в их программы просмотра. См #std775: Безопасность программного обеспечения, вызываемого через открытые интерфейсы
Используйте БСП подсистему "Работа с файлами".
6.¶
Безопасность внешних компонент.
6.1.¶
Внешние компоненты можно размещать:
- в макетах конфигурации - они являются частью конфигурации
- сторонние - они потенциально опасны
Сторонние внешние компоненты, предназначенные для подключения на сервере, устанавливать должен только администратор.
Внешние компоненты, предназначенные для подключения на клиенте, устанавливать может любой пользователь, с показом предупреждения.
6.2.¶
Сторонние внешние компоненты должны храниться в специальном справочнике. Запись в такой справочник должен иметь только администратор. Подключать сторонние внешние компоненты допустимо только по навигационной ссылке на реквизит справочника.
Не подключайте сторонние внешние компоненты по имени файла или по идентификатору программы. Так компоненту легко подменить.
6.3.¶
Внешние компоненты в составе конфигурации должены хранится в макетах типа "Внешняя компонента". Макет не локализуется. Компоненты должны локализовываться через интерфейс компоненты.
6.4.¶
Используйте БСП для подключение внешних компонент.
Неправильно
Для подключения компонент из хранилища внешних компонент
Для подключения компонент из хранилища внешних компонент на сервере
7.¶
Загружать код из внешнего удаленного источника следует:
- если источник надежен, когда ему доверяем
- только по защищенным каналам
- защищенный канал должен быть с проверкой подлинности сервера
Пример установки защищенного соединения с проверной подлинности сервера
Вне зависимости от протокола и типа канала, канал должен быть защищенным: HTTPСоединение, FTPСоединение, WSПрокси, WSОпределения, WSСсылкаМенеджер.СоздатьWSПрокси.
В БСП есть конструктор защищенного соединения
8.¶
Регламентные задания по-умолчанию запускаются под полными правами. Установка безопасного режима не уменьшает прав пользователя.
Ограничивайте права в сеансе регламантного задания. Для этого программно создайте и укажите служебного пользователя.
Стратегии ограничения прав:
- пустой список ролей, вычисления без прав, чтение и изменение выполнять в привилегированном режиме установленном вручную, исполнение произвольного кода производить в безопасном режиме
- назначить реального пользователя (для одноразовых заданий ок)
- создавать специальный профиль и специальные роли для чтения таблиц
Для БСП в подсистеме "Регламентные задания" в начале обработчика регламентного задания разместите код:
В БСП есть установка служебного пользователя
См. также¶
- #std770: Ограничения на использование Выполнить и Вычислить на сервере
- Облачные технологии
- #std678: Безопасность прикладного программного интерфейса сервера
- #std485: Использование привилегированного режима