Какой риск представляет Reflection? (Средний траст) - PullRequest
8 голосов
/ 21 июля 2009

Отсутствие отражения в средах хостинга Medium Trust вызывает много проблем для многих популярных веб-приложений.

  • Почему ReflectionPermission по умолчанию отключено с Medium Trust?
  • Какой риск представляет отражение в среде общего хостинга?

Информация о случайной ссылке приведена в MSDN: Как использовать Medium Trust в ASP.NET 2.0

Ответы [ 3 ]

6 голосов
/ 21 июля 2009

Отражение позволяет вредоносному коду проверять все виды секретов: не столько интеллектуальную собственность (хотя и обязательно), но и данные, которые должны быть конфиденциальными и безопасными, например строки подключения, пароли, данные банковского счета и т. Д.

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

Отредактировано, чтобы поднять некоторые разговоры из комментариев:

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

В среде с общим хостингом это просто сложнее предотвратить, хотя, конечно, это не невозможно. Возможно, стоит отправить этот вопрос на ServerFault , чтобы узнать, что там говорят хорошие люди.

4 голосов
/ 21 июля 2009

Я никогда не находил ничего «плохого», что пользователь сможет сделать с помощью отражения. Люди напуганы, потому что вы можете вызывать методы, помеченные как частные или защищенные, но из того, что я видел, никто из них не представляет никакого реального риска.

Скорее всего, это, по крайней мере, частично метод продаж, чтобы заставить вас раскошелиться на (полу) выделенный хостинг:)

3 голосов
/ 22 июля 2009

Я нашел следующую статью MSDN на эту тему:

Вопросы безопасности для отражения

Эта статья повторяет ответ Джеффа:

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

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

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

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

Включение отражения не должно представлять какой-либо опасности для большинства веб-приложений с общим хостингом:

<IPermission class="ReflectionPermission" version="1" Flags="RestrictedMemberAccess"/>

Пожалуйста, поправьте меня, если я ошибаюсь.

...