反射有什么风险?(中等信任)

Gab*_*ner 8 asp.net security reflection hosting medium-trust

Medium Trust托管环境中缺乏反射似乎会给许多流行的Web应用程序带来很多问题.

  • 为什么默认情况下使用中等信任禁用ReflectionPermission
  • 反射在共享托管环境中会带来什么风险?

有关随机参考,请参阅MSDN:如何在ASP.NET 2.0中使用中等信任

Jef*_*nal 6

反射允许恶意代码检查各种秘密:不是那么多知识产权(虽然也是肯定的),但是应该是私有和安全的数据,如连接字符串,密码,银行帐户数据等.

当然,许多程序通过更容易受到攻击的向量来理解这些数据,但是没有理由增加应用程序的攻击面.

编辑从评论中引出一些对话:

可能真正的风险是不受限制的文件系统访问,这就是将反射转化为真正的危险.如果一个坏的actor可以将一个程序集(或者被编译成程序集的东西)放到你的虚拟目录中,那么如果他们有反射权限就会遇到麻烦.(当然,如果发生这种情况,还有其他潜在的问题,但这不应该忽视这个特殊的漏洞.)

在一个更难以防止的共享托管环境中,尽管这当然不是不可能的.也许值得将这个问题交叉发布到ServerFault,看看有什么好人可以说.

  • 完全信任是正确的,因为它涉及不受限制的FileIOPermission(这反过来使各种反射恶作剧) - 但可能是启用反射(否则在MediumTrust中运行)是合适的.这取决于托管公司的安全策略对其共享托管服务器的严格程度.如果服务器上的不同客户确实相互保护,则可能是合理的.但是...... (3认同)
  • ...共享服务器上的另一个应用程序存在一个漏洞,允许入侵者获取文件系统访问权限,从而模拟您正在调用的某个程序集.然后,当你召集那个集会时,它可能会造成反射性的恶作剧. (3认同)
  • 如果您(例如)运行网站项目而不是Web应用程序项目,并且您为用户提供了将文件上传到您的站点的方法,那么他们可以上传一个ASPX页面,该页面在被调用时进行编译 - 如果使用的话反射来读取应用程序的状态,然后连接字符串等可能是访问.这是一个很小的可能性,但也是一个,因此你的链接中的"可能".不要忘记,某些主机并不总是运行"vanilla"中等信任环境,而是自定义哪些功能不可用. (2认同)