Hace un mes abordábamos en Genbeta el llamado 'Efecto 2038', potencialmente más catastrófico que el mucho más conocido Efecto 2000. Este nuevo obstáculo que intuimos a 18 años vista viene causado por una combinación fatal del modo en que el estándar POSIX representan el tiempo y de las limitaciones del hardware de 32 bits.
Resumiendo mucho: Los sistemas de 32 bits representan el tiempo mediante 32 dígitos binarios, lo que nos da 2.147.483.647 combinaciones positivas y otras 2.147.483.647 negativas; por otro lado, POSIX cuenta el número de segundos transcurridos desde el 1 de enero de 1970 a la medianoche UTC (la hora de las Islas Canarias).
Si ahora sumamos ambos factores, el resultado es que, para un ordenador de 32 bits, un segundo después del 19 de enero de 2038 a las 03:14:07 UTC, los sistemas de 32 bits pasarán a contar en números negativos y creerán que es el 13 de diciembre de 1901. Con todos los problemas que ello podría conllevar.
A mí plim... ¿o no?
Pero, si la mayoría de nosotros utiliza ya computadoras y smartphones de 64 bits (que tardarán bastante siglos en sufrir un problema equiparable), ¿qué nos importa el Efecto 2038?
Pues, fundamentalmente, porque muchos de los sistemas embebidos y dispositivos del Internet de las Cosas que funcionan hoy en día lo hacen ejecutando sistemas operativos de 32 bits. De hecho, es posible que para 2038 aún sigan lanzándose al mercado dispositivos de esta clase.
¡Habemus parche!
Los sistemas operativos compatibles con POSIX son aquellos derivados de Unix: Linux, BSD y macOS, fundamentalmente. Y la mayoría de ellos comenzaron como sistemas de 32 bits.
Por fortuna, los desarrolladores llevan tiempo viniendo venir este problema, por lo que la próxima actualización del kernel de Linux, la 5.6, probablemente incluya ya el primer parche que permitirá que los sistemas de 32 bits sigan funcionando de manera adecuada tras la madrugada del 19 de enero de 2038.
Dicho parche, que aún debe ser probado en distintas arquitecturas de hardware y dispositivos, ha sido desarrollado por un colaborador habitual del kernel de Linux, Arnd Bergmann, cuya solución pasa por eliminar las librerías time_t / timeval / timespec no utilizadas y por que los desarrolladores compilen una nueva librería time_t capaz de seguir registrando fechas más allá del 19 de enero del 2038.
No todo es tan fácil
Sin embargo, Bergmann también reconoce que ciertas interfaces no podrían ser cambiadas a un modo compatible gracias al parche, y que necesitarán ser reconfiguradas para usar el 'reloj monótono' (CLOCK_MONOTONIC), que solventa por ahora el problema pero que tiene por delante también su propio 'Efecto 2106'. "Pero eso son otros 64 años de margen", pensaréis, "es tiempo de sobra". Pero esa clase de razonamiento fue la que provocó que surgiera este problema.
Pero entonces... ¿está solventado o no el problema del Efecto 2038? Pues... en parte. El parche de Bergmann es un gran avance, pero puede haber miles de dispositivos ahí fuera cuyos administradores jamás se molesten en actualizar su kernel, mucho menos en saber qué es eso de CLOCK_MONOTONIC.
Recordemos que los dispositivos del Internet de las Cosas suelen protagonizar incidentes de ciberseguridad porque la mayoría de ellos conserva su configuración de fábrica, incluida las contraseñas por defecto... y eso no sienta un gran precedente.
Vía | ZDnet & The Register
Ver 24 comentarios