sociales redes mediatica informacion asp.net security reflection hosting medium-trust

asp.net - redes - informacion mediatica



¿Qué riesgo representa la Reflexión?(Confianza media) (3)

La falta de reflexión en entornos de alojamiento de confianza media parece causar muchos problemas para muchas aplicaciones web populares.

  • ¿Por qué ReflectionPermission está deshabilitado de forma predeterminada con Medium Trust?
  • ¿Qué riesgo plantea la reflexión en un entorno de alojamiento compartido?

Para referencia aleatoria, vea MSDN: Cómo usar Medium Trust en ASP.NET 2.0


Encontré el siguiente artículo de MSDN sobre este tema:

Consideraciones de seguridad para la reflexión

Este artículo repite la respuesta de Jeff:

Reflection proporciona la capacidad de obtener información sobre tipos y miembros y acceder a los miembros. Acceder a miembros no públicos podría crear un riesgo de seguridad. Por lo tanto, el código que accede a miembros no públicos requiere ReflectionPermission con los indicadores apropiados.

Sin embargo, no creo que este riesgo pueda explotarse entre las cuentas de hosting del cliente. Parece que esto solo representaría un riesgo personal. Por ejemplo, usando la reflexión, podría explorar mis propios ensamblajes en mi entorno de alojamiento. Otros clientes, sin embargo, no podían usar la reflexión para explorar mis ensamblajes. Solo pudieron explorar sus asambleas.

Esto podría plantear un problema para una sola aplicación web que involucra múltiples equipos de desarrollo. Un equipo de desarrollo podría usar la reflexión para explorar las asambleas de otro equipo de desarrollo.

Sin embargo, este es un escenario raro para un entorno de alojamiento compartido. La mayoría de los sitios web de alojamiento compartido involucran a un equipo muy pequeño que tiene acceso completo a todo el código. En otras palabras, no hay secretos. Siempre que el ensamblaje esté a salvo de otros clientes de hosting compartido, entonces no es un problema.

La habilitación de la reflexión no debería representar ningún riesgo para la mayoría de las aplicaciones web de alojamiento compartido:

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

Por favor corrígeme si estoy equivocado.


Nunca he encontrado algo "malo" que un usuario pueda hacer usando la reflexión. La gente se asusta porque puede llamar a los métodos que están marcados como privados o protegidos, pero por lo que he visto, ninguno de ellos impone ningún riesgo real.

Lo más probable es que sea, al menos en parte, una técnica de ventas para que desembolses para alojamiento (semi) dedicado :)


La reflexión permite que el código malicioso inspeccione todo tipo de secretos: no tanto la propiedad intelectual (aunque también lo es), sino datos que deben ser privados y seguros, como cadenas de conexión, contraseñas, datos de cuentas bancarias, etc.

Por supuesto, muchos programas exponen estos datos de forma rutinaria a través de vectores aún más fácilmente comprometidos, pero no hay razón para aumentar la superficie de ataque de una aplicación.

Editado para traer algo de la conversación de los comentarios:

Probablemente sea cierto que el riesgo real es el acceso irrestricto al sistema de archivos, que es lo que convierte el reflejo en un peligro real. Si un actor malo puede obtener un ensamblado (o algo que se compila en un ensamblado) en su directorio virtual, tendrá problemas si tienen permiso de reflexión. (Por supuesto, si esto sucede, también hay otros problemas potenciales, pero eso no debería descontar esta vulnerabilidad en particular).

En un entorno de alojamiento compartido que es más difícil de prevenir, aunque ciertamente no es imposible. Quizás valga la pena enviar esta pregunta a ServerFault para ver qué tienen que decir las buenas personas.