Alexander Speshilov (speshuric) wrote,
Alexander Speshilov
speshuric

Паранойя

Прямо сейчас. Сижу, ковыряю 1С 8.1, в фоне, пока одна обработка тестируется ковыряю 8.2... И вот такой вопрос возник: а это нормально, что внешние обработки в управляемых формах бодро посылают код на исполнение серверу предприятия? Ой, что-то мне это не нравится... А учитывая, что подписывать код в 1С пока инструментов нет, я прям не знаю как это назвать. И не надо мне тут заяснять, что мол доступ к ним можно зарубить: в типовых конфах я еще ни в одной не видел, чтобы нельзя было запустить внешнюю обработку любому пользователю. В нетиповых - тоже не видел, но чисто теоретически может быть такая конфа, что я не смогу запустить обработку.

Для тех кто не в курсе, краткий экскурс в историю.
Версия 7.7 - основная программа на языке 1С хранится в файле конфигурации, который доступен всем по сети (как минимум на чтение). Есть механизм "внешних обработок" - это подгружаемые модули. В силу того, что в 7.7 безопасности на уровне 1С тупо не было, и весь код выполнялся клиентом, но хоть какая-то видимость безопасности была нужна, то пользователю можно было назначить или отобрать право "открывать интерактивно внешние обработки". Программно обработки открывать можно всегда. Это, конечно, обходилось десятком способов, но защита полне соответствовала общему уровню защиты (на картонную коробку ставить железную дверь достаточно бессмысленно). Неинтерактивный запуск внешних обработок используется для дополнительных печатных форм форм документов и некоторых других функций.

Версия 8.0 - появилось есть 2 варианта работы: файловый (примерно как Access по сети) с одним общим файлом, в котором лежит программа и данные и клиент-серверный, когда данные и программа лежат в БД на сервере. Появился "сервер предприятия" - некое подобие сервера приложений. Основная часть ограничений доступа (что логично) выполняется на сервере предприятия. Внешние обработки работают по тем же принципам, что и в 7.7 (могут запускаться, если есть разрешение), но выполняются всегда на клиенте. Таким образом, код выполняемый на сервере легко контролируется. Также дополнительные печатные формы (и еще некоторый подобный функционал) реализуются через внешние обработки. Тут, кстати, есть лазейка - эти обработки приходилось сохранять на диск для запуска и чисто теоретически это была лазейка для их запуска. На практике этим а) никто не пользовался потому что дыр и других достаточно, б) конфигурация должна быть организована таким образом, что окончательный о основной контроль прав на доступ к данным находится на стороне сервера.

Версия 8.1 особых изменений в этот механизм не внесла. Т.е. там много было изменений, но этот механизм не тронули.

Версия 8.2. Появился новый супер-пупер-мегазащищённый и гипер-прогрессивный режим управляемого приложения. Достаточно радикальный уход от старой модели - более чётко стал виден клиент-серверный режим работы и всё стало более надёжниым, модульным и т.д. Теоретически. На практике в режиме "толстого клиента" в формах внешних обработок появилась возможность запуска серверного кода. При той же системе разрешения интерактивного запуска внешних обработок. Ну тут или "крест сними или трусы надень": либо надо как-то убеждаться, что код действительно одобрен администратором системы (той жэ ЭЦП, благо в 8.2 криптография начала появляться), либо не допускать его выполнения на сервере. Учитывая типичные рекомендации по настройке и типичные уязвимости систем, выполнение кода на сервере позволяет слишком многое, чтобы его допускать "всяким клиентам". Даже новая возможность установки "Безопасного режима", не сильно спасает: во первых он устанавливается на клиенте (бугугашечки), во-вторых если уж поимели доступ к запуску внешних отчетов и обработок, то явно неинтерактивный (интерактивный-то запретить можно), а раз неинтерактивный, то режим работы явно указан (который надо - тот и указан).

Я в панике. Ладно, когда уязвимость на уровне плохо реализованного кода, можно простить, когда "ну проебали момент", но тут какой-то дикий диссонанс, несоответствие: куча новых наворотов "для безопасности", и тут же в дизайне безопасности приложения дыры просто навылет.
С учетом тех мелких и крупных дыр которые я вижу - безопасности в 1С нет и не светит до появления архитектора, который продавит эту тему.
Tags:
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments