Estoy trabajando en el análisis de seguridad de un sistema y algunas de sus medidas de seguridad se basan en la propiedad Environment.TickCount
expuesta por .NET Framework. Según lo declarado por Microsoft:
Debido a que el valor de la propiedad TickCount es un entero con signo de 32 bits, si el sistema se ejecuta de manera continua, TickCount aumentará de cero a Int32.MaxValue durante aproximadamente 24.9 días, luego saltará a Int32.MinValue, que es negativo número, luego incremente de nuevo a cero durante los próximos 24.9 días. Puede solucionar este problema llamando a la función GetTickCount de Windows, que se restablece a cero después de aproximadamente 49.7 días , o llamando a la función GetTickCount64.
Entonces, al conocer el tiempo de funcionamiento estimado del servidor, también se puede estimar aproximadamente el valor de Environment.TickCount
. Esto debilitaría significativamente la seguridad del sistema. Un ataque de fuerza bruta en el rango completo de los posibles valores de TickCount llevaría aproximadamente 2 días y medio con mi implementación actual (que tampoco es muy larga), un valor general para elegir un punto de partida en el espacio de valor haría Esta búsqueda es mucho más eficiente.
El servidor se está ejecutando completamente Windows Server 2012 R2 y el único servicio expuesto sería IIS que sirve algunas páginas ASP.NET (tal vez IIS pierde algo de esta información).