Обсудить
бизнес-задачи
блог о bi, №1 в рунете

Потенциальные уязвимости платформы 1С версии 8.0

Получение информации об аутентифицированных пользователях посредством чтения файла srvrib.lst


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


Получение информации об аутентифицированных пользователях посредством чтения файла srvrib.lst


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

По умолчанию права на чтение данного файла никак не ограничены.


Рекомендации:


1) Расположить сервер приложений на отдельном компьютере;

2) Закрыть доступ к конфигурационным файлам для всех пользователей;

3) Разрешить доступ на чтение файла srvrib.lst только пользователю, под котоым работает сервер приложений (обычно это пользователь USER1CV8SERVER);

4) Настроить аудит на изменения этого файла.


Возможность регистрации информационной базы без авторизации. Вариант получения файла srvrib.lst


Если пользователь имеет доступ на соединение с сервером приложений, то он имеет возможность запускать любой код на севере приложений. Пользователь, работающий в клиентском приложении 1С, не имеет привилегированного доступа ни к Серверу 1С:Предприятие 8.0, ни к Microsoft SQL Server.

Для получения привилегированного доступа пользователь должен обеспечить работу фиктивного сервера SQL . Это может быть SQL сервер, установленный на компьютере пользователя - если он является локальным администратором, либо на другом компьютере в сети, например, на личном ноутбуке. При этом пользователь должен обладать правами на создание базы данных на фиктивном сервере SQL, что в случае подключения к сети личного ноутбука, не представляется непреодолимым препятствием.


Методология использования уязвимости


Через клиентскую часть Пользователь регистрирует пустую информационную базу на Сервере 1С:Предприятия, которая храниться на фиктивном SQL-сервере.

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

При выполнении на сервере доступны некоторые потенциально небезопасные способы доступа к файловой системе сервера приложений и некоторым COM-объектам. Возможно чтение файла srvrib.lst, в котором в явном виде указываются пароли и имена пользователей SQL сервера, на котором находятся основные информационные базы.


Рекомендации:


1) Ограничить подключение к сети посторонних компьютеров;

2) Настроить firewall на сервере БД таким образом, чтобы он поддерживал соединение только с подлинным сервером приложений;

3) Запретить вход на компьютерах пользователей под локальной учетной записью, входящей в группу Administrators.


Неавторизованный вход в Конфигуратор


Если пользователь тем или иным способом получил прямой доступ к базе данных на SQL сервере, то пользователь сможет запустить Конфигуратор системы без авторизации.


Методология использования уязвимости


Информация о списке пользователей хранится в таблице Params в базе данных SQL сервера. В поле FileName со значением «users.usr» хранится информация о пользователях.

После изменения значения в этих полях, система не сможет найти список пользователей и позволит запустить Конфигуратор без авторизации.


Рекомендации:


1) Использовать триггеры на уровне MS SQL Server. В качестве побочного отрицательного эффекта могут возникнуть проблемы при обновлении версии платформы или изменении списка пользователей;

2) Использовать журнал регистраций 1С, обращая внимание на входы в систему в режиме конфигуратора без указания пользователя;

3) Держать постоянно запущенным SQL Profiler, что можетнегативно сказаться на производительности системы;


DOS-атаки на ключ защиты


Лицензионная 1С использует защиту с помощью HASP-инструментария от компании Aladdin. При работе в сетевой версии для раздачи HASP-ключей необходима установка HASP License Manager, который производит выдачу ключа каждому клиенту. По умолчанию он работает на 475 порту.


Методология использования уязвимости


С помощью специальных средств возможна атака на этот порт, после чего происходит отказ работы Менеджера Лицензий и невозможность работы пользователей.


Рекомендации:


1) Сменить порт по умолчанию с 475 на какой-либо другой;

2) На сервере, на котором установлен Менеджер Лицензий, должен быть установлен и настроен firewall.


Выполнение кода, не содержащегося в конфигурации


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

К таким средствам языка запросов относятся:

1) Процедура Выполнить(<Строка>) . Позволяет выполнить фрагмент кода, который передается ему в качестве строкового значения;

2) Использование внешних отчетов и обработок. Позволяет обойти систему безопасности и нарушить работу сервера приложений. Например, в типовом решении УПП, у всех ролей есть права на работу со справочником дополнительных печатных форм, то позволяет использовать любые внешние обработки.


Рекомендации:


Для интерактивного запуска внешних обработок можно создать отдельную роль и добавить её всем пользователям, которые должны использовать внешние обработки.

Другие уязвимости стандартных механизмов платформы 1С 8.0


Использование внешних отчетов и обработок. Позволяет обойти систему безопасности и нарушить работу сервера приложений. Например, в типовом решении УПП, у всех ролей есть права на работу со справочником дополнительных печатных форм, то позволяет использовать любые внешние обработки.

Обмен данными в распределенной базе. Позволяет выгрузить данные в периферийную базу.

Обмен данными XML. Позволяет задавать в правилах обмена обработчики событий загрузки и выгрузки объектов, с помощью процедуры Выполнить(). Для большинства ролей типовых решений обмен данными XML разрешен.

Консоль отчетов и универсальные отчеты. Позволяют выполнять любые запросы к информационной базе, несмотря на систему прав 1С. Пользователь может получить «лишнюю» информацию, либо выполнить запрос, который захватит все ресурсы сервера.

Общие рекомендации по настройке прав доступа


В заключение приведем общие рекомендации по настройке системы безопасности доступа к данным:

  1. Исключить доступ всех пользователей (кроме администраторов) к компьютерам, на которые установлены SQL-сервер и сервер «1С:Предприятия». Это достигается как организационными мерами, так и с помощью списка пользователей Windows, имеющих право интерактивного входа на сервера;
  2. Запретить доступ к файлам баз данных SQL-сервера всем пользователям Windows, кроме пользователя, от имени которого работает SQL-сервер. Желательно, чтобы этот пользователь был предназначен только для SQL-сервера и не мог входить ни интерактивно, ни удаленно. При необходимости доступ к этим файлам может быть разрешен лишь наиболее квалифицированным администраторам;
  3. Для сервера, на котором установлен SQL-сервер и хранятся базы данных, рекомендуется полностью запретить дистанционный доступ к файлам через сеть;
  4. Включить в SQL-сервере аутентификацию SQL Server and Windows ;
  5. Создать на SQL-сервере пользователя, имеющего полные права на базу данных, хранящую информационную базу с паролем и указать имя этого пользователя и его пароль в диалоге создания информационной базы. Ограничить или запретить доступ к этой базе данных со стороны других пользователей SQL-сервера. Установить пароль пользователю, который должны знать только администраторы;
  6. В компьютере, на котором установлен сервер «1С:Предприятия», запретить доступ к файлам каталога данных сервера 1С:Предприятия (обычно «%system disk%:\Documents and Settings\All Users\Application Data\1C\1Cv8») всем пользователям Windows, а также тому, от имени которого работает сервер «1С:Предприятия» (обычно USER1CV8SERVER) – этой учетной записи необходимо разрешить только чтение;
  7. Для компьютера, на котором установлен сервер приложений рекомендуется полностью запретить дистанционный доступ к файлам через сеть;
  8. Выдать административные права только тем пользователям 1С, которые являются администраторами, поскольку пользователь с административными правами имеет, в частности, возможность осуществить выгрузку-загрузку справочников, а также выполнять любые изменения прав, тем самым получая доступ к любым ее данным;
  9. Выберать необходимый уровень защиты протокола связи сервера 1С с SQL-сервером. Здесь важно, что для повышения защищенности протокола на том компьютере, на котором установлен SQL-сервер, в диалоге SQL Server Network Utility можно установить флаг Force Protocol Encryption, что обеспечит шифрование данных перед их передачей по сети. При этом аналогичный флаг необходимо установить на компьютере с сервером 1С в диалоге SQL Server Client Network Utility. Следует, однако, учитывать, что установка этого флага приведет к некоторому снижению производительности;
  10. Выберать необходимый уровень защиты протокола связи клиента «1С:Предприятия» с сервером. Это можно сделать на серверном компьютере при помощи утилиты Component Services. На закладке Security свойств COM+ приложения 1CV8 выберите необходимое значение Authentication level for calls. Наибольшую защиту обеспечивает режим Packet Privacy, подразумевающий кодирование данных перед тем, как передавать их по сети. Однако использование этого режима также может привести к заметному снижению производительности.

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

По умолчанию права на чтение данного файла никак не ограничены.


Рекомендации:


  1. Расположить сервер приложений на отдельном компьютере;
  2. Закрыть доступ к конфигурационным файлам для всех пользователей;
  3. Разрешить доступ на чтение файла srvrib.lst только пользователю, под котоым работает сервер приложений (обычно это пользователь USER1CV8SERVER);
  4. Настроить аудит на изменения этого файла.

Возможность регистрации информационной базы без авторизации. Вариант получения файла srvrib.lst


Если пользователь имеет доступ на соединение с сервером приложений, то он имеет возможность запускать любой код на севере приложений. Пользователь, работающий в клиентском приложении 1С, не имеет привилегированного доступа ни к Серверу 1С:Предприятие 8.0, ни к Microsoft SQL Server.

Для получения привилегированного доступа пользователь должен обеспечить работу фиктивного сервера SQL . Это может быть SQL сервер, установленный на компьютере пользователя - если он является локальным администратором, либо на другом компьютере в сети, например, на личном ноутбуке. При этом пользователь должен обладать правами на создание базы данных на фиктивном сервере SQL, что в случае подключения к сети личного ноутбука, не представляется непреодолимым препятствием.


Методология использования уязвимости


Через клиентскую часть Пользователь регистрирует пустую информационную базу на Сервере 1С:Предприятия, которая храниться на фиктивном SQL-сервере.

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

При выполнении на сервере доступны некоторые потенциально небезопасные способы доступа к файловой системе сервера приложений и некоторым COM-объектам. Возможно чтение файла srvrib.lst, в котором в явном виде указываются пароли и имена пользователей SQL сервера, на котором находятся основные информационные базы.


Рекомендации:


  1. Ограничить подключение к сети посторонних компьютеров;
  2. Настроить firewall на сервере БД таким образом, чтобы он поддерживал соединение только с подлинным сервером приложений;
  3. Запретить вход на компьютерах пользователей под локальной учетной записью, входящей в группу Administrators.

Неавторизованный вход в Конфигуратор


Если пользователь тем или иным способом получил прямой доступ к базе данных на SQL сервере, то пользователь сможет запустить Конфигуратор системы без авторизации.


Методология использования уязвимости


Информация о списке пользователей хранится в таблице Params в базе данных SQL сервера. В поле FileName со значением «users.usr» хранится информация о пользователях.

После изменения значения в этих полях, система не сможет найти список пользователей и позволит запустить Конфигуратор без авторизации.


Рекомендации:


1) Использовать триггеры на уровне MS SQL Server. В качестве побочного отрицательного эффекта могут возникнуть проблемы при обновлении версии платформы или изменении списка пользователей;

2) Использовать журнал регистраций 1С, обращая внимание на входы в систему в режиме конфигуратора без указания пользователя;

3) Держать постоянно запущенным SQL Profiler, что можетнегативно сказаться на производительности системы;


DOS-атаки на ключ защиты


Лицензионная 1С использует защиту с помощью HASP-инструментария от компании Aladdin. При работе в сетевой версии для раздачи HASP-ключей необходима установка HASP License Manager, который производит выдачу ключа каждому клиенту. По умолчанию он работает на 475 порту.


Методология использования уязвимости


С помощью специальных средств возможна атака на этот порт, после чего происходит отказ работы Менеджера Лицензий и невозможность работы пользователей.


Рекомендации:


  1. Сменить порт по умолчанию с 475 на какой-либо другой;
  2. На сервере, на котором установлен Менеджер Лицензий, должен быть установлен и настроен firewall.

Выполнение кода, не содержащегося в конфигурации


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

К таким средствам языка запросов относятся:


  1. Процедура Выполнить(<Строка>) . Позволяет выполнить фрагмент кода, который передается ему в качестве строкового значения;
  2. Использование внешних отчетов и обработок. Позволяет обойти систему безопасности и нарушить работу сервера приложений. Например, в типовом решении УПП, у всех ролей есть права на работу со справочником дополнительных печатных форм, то позволяет использовать любые внешние обработки.

Рекомендации


Для интерактивного запуска внешних обработок можно создать отдельную роль и добавить её всем пользователям, которые должны использовать внешние обработки.

Другие уязвимости стандартных механизмов платформы 1С 8.0


Использование внешних отчетов и обработок. Позволяет обойти систему безопасности и нарушить работу сервера приложений. Например, в типовом решении УПП, у всех ролей есть права на работу со справочником дополнительных печатных форм, то позволяет использовать любые внешние обработки.

Обмен данными в распределенной базе. Позволяет выгрузить данные в периферийную базу.

Обмен данными XML. Позволяет задавать в правилах обмена обработчики событий загрузки и выгрузки объектов, с помощью процедуры Выполнить(). Для большинства ролей типовых решений обмен данными XML разрешен.

Консоль отчетов и универсальные отчеты. Позволяют выполнять любые запросы к информационной базе, несмотря на систему прав 1С. Пользователь может получить «лишнюю» информацию, либо выполнить запрос, который захватит все ресурсы сервера.

Общие рекомендации по настройке прав доступа


В заключение приведем общие рекомендации по настройке системы безопасности доступа к данным:

  1. Исключить доступ всех пользователей (кроме администраторов) к компьютерам, на которые установлены SQL-сервер и сервер «1С:Предприятия». Это достигается как организационными мерами, так и с помощью списка пользователей Windows, имеющих право интерактивного входа на сервера;
  2. Запретить доступ к файлам баз данных SQL-сервера всем пользователям Windows, кроме пользователя, от имени которого работает SQL-сервер. Желательно, чтобы этот пользователь был предназначен только для SQL-сервера и не мог входить ни интерактивно, ни удаленно. При необходимости доступ к этим файлам может быть разрешен лишь наиболее квалифицированным администраторам;
  3. Для сервера, на котором установлен SQL-сервер и хранятся базы данных, рекомендуется полностью запретить дистанционный доступ к файлам через сеть;
  4. Включить в SQL-сервере аутентификацию SQL Server and Windows ;
  5. Создать на SQL-сервере пользователя, имеющего полные права на базу данных, хранящую информационную базу с паролем и указать имя этого пользователя и его пароль в диалоге создания информационной базы. Ограничить или запретить доступ к этой базе данных со стороны других пользователей SQL-сервера. Установить пароль пользователю, который должны знать только администраторы;
  6. В компьютере, на котором установлен сервер «1С:Предприятия», запретить доступ к файлам каталога данных сервера 1С:Предприятия (обычно «%system disk%:\Documents and Settings\All Users\Application Data\1C\1Cv8») всем пользователям Windows, а также тому, от имени которого работает сервер «1С:Предприятия» (обычно USER1CV8SERVER) – этой учетной записи необходимо разрешить только чтение;
  7. Для компьютера, на котором установлен сервер приложений рекомендуется полностью запретить дистанционный доступ к файлам через сеть;
  8. Выдать административные права только тем пользователям 1С, которые являются администраторами, поскольку пользователь с административными правами имеет, в частности, возможность осуществить выгрузку-загрузку справочников, а также выполнять любые изменения прав, тем самым получая доступ к любым ее данным;
  9. Выбрать необходимый уровень защиты протокола связи сервера 1С с SQL-сервером. Здесь важно, что для повышения защищенности протокола на том компьютере, на котором установлен SQL-сервер, в диалоге SQL Server Network Utility можно установить флаг Force Protocol Encryption, что обеспечит шифрование данных перед их передачей по сети. При этом аналогичный флаг необходимо установить на компьютере с сервером 1С в диалоге SQL Server Client Network Utility. Следует, однако, учитывать, что установка этого флага приведет к некоторому снижению производительности;
  10. Выбрать необходимый уровень защиты протокола связи клиента «1С:Предприятия» с сервером. Это можно сделать на серверном компьютере при помощи утилиты Component Services. На закладке Security свойств COM+ приложения 1CV8 выберите необходимое значение Authentication level for calls. Наибольшую защиту обеспечивает режим Packet Privacy, подразумевающий кодирование данных перед тем, как передавать их по сети. Однако использование этого режима также может привести к заметному снижению производительности.