Millones de sistemas de TI, algunos de ellos industriales y de IoT, pueden comenzar a comportarse de manera impredecible el 19 de enero. Algunos errores potenciales incluyen los siguientes: fallos en los pagos con tarjeta de crédito; falsas alarmas de los sistemas de seguridad; funcionamiento incorrecto de equipos médicos; fallos en los sistemas automatizados de iluminación, calefacción y suministro de agua; y muchos tipos de errores de mayor o menor gravedad. Esto sucederá el 19 de enero de 2038. No es que esa sea una razón para relajarse, el tiempo que queda para prepararse puede que ya no sea suficiente. La causa de este conjunto de problemas será un desbordamiento en los números enteros que almacenan la fecha y la hora. Si bien la causa raíz del error es sencilla y clara, su reparación requerirá un gran esfuerzo sistemático en todos los niveles, desde los gobiernos y los organismos internacionales, hasta las organizaciones y los particulares.
El estándar no escrito del epoch de Unix
El epoch de Unix es el sistema de registro de horas adoptado por los sistemas operativos Unix, que se hizo popular en toda la industria de TI. Cuenta los segundos desde las 00:00:00 UTC del 1 de enero de 1970, que se considera el punto cero. Cualquier momento dado se representa como el número de segundos que han pasado desde esa fecha. Para fechas anteriores a 1970, se utilizan valores negativos. Los desarrolladores de Unix eligieron este enfoque por su simplicidad: en lugar de almacenar el año, el mes, el día y la hora por separado, solo se necesita un número. Esto facilita operaciones como ordenar o calcular el intervalo entre fechas. Hoy en día, el epoch de Unix se usa mucho más allá de los sistemas Unix: en bases de datos, lenguajes de programación, protocolos de red y en teléfonos inteligentes con iOS y Android.
La bomba de tiempo de Y2K38
Inicialmente, cuando se desarrolló Unix, se tomó la decisión de almacenar la hora como un entero de 32 bits con signo. Esto permitió representar un rango de fechas desde aproximadamente 1901 hasta 2038. El problema es que el 19 de enero de 2038, a las 03:14:07 UTC, este número alcanzará su valor máximo (2 147 483 647 segundos) y se desbordará, volviéndose negativo y causando que los ordenadores se “teletransporten” desde enero de 2038 hasta el 13 de diciembre de 1901. En algunos casos, sin embargo, puede ocurrir un “viaje en el tiempo” más corto, al punto cero, que es el año 1970.
Este evento, conocido como el “problema del año 2038”, “Epochalypse” o “Y2K38”, podría provocar fallos en los sistemas que todavía utilizan la representación de la hora de 32 bits, desde terminales de punto de venta, sistemas integrados y routers, hasta automóviles y equipos industriales. Los sistemas modernos resuelven este problema mediante el uso de 64 bits para almacenar la hora. Esto extiende el rango de fechas a cientos de miles de millones de años en el futuro. Sin embargo, todavía hay millones de dispositivos con fechas de 32 bits en funcionamiento que deberán actualizarse o reemplazarse antes de que llegue el “día Y”.
En este contexto, 32 y 64 bits se refieren específicamente al formato de almacenamiento de fecha. El hecho de que un sistema operativo o procesador sea de 32 o 64 bits no significa que almacene automáticamente la fecha en su formato de bits “nativo”. Además, muchas aplicaciones almacenan fechas de formas completamente diferentes y podrían ser inmunes al problema de Y2K38, independientemente de su valor de bits.
En los casos en que no es necesario gestionar fechas anteriores a 1970, la fecha se almacena como un entero de 32 bits sin signo. Este tipo de número puede representar fechas desde 1970 hasta 2106, por lo que el problema llegará en un futuro más lejano.
Diferencias con el problema del año 2000
El infame problema del año 2000 (Y2K) de finales del siglo XX era similar, ya que los sistemas que almacenaban el año con dos dígitos podían confundir la nueva fecha con el año 1900. Tanto los expertos como los medios de comunicación temían un apocalipsis digital, pero al final solo se produjeron numerosas manifestaciones aisladas que no condujeron a fallos catastróficos globales.
La diferencia clave entre Y2K38 y Y2K es la escala de digitalización en nuestras vidas. La cantidad de sistemas que necesitarán actualizarse es mucho mayor que la cantidad de equipos en el siglo XX, y el recuento de tareas y procesos diarios administrados por los ordenadores es incalculable. Mientras tanto, el problema de Y2K38 ya se ha solucionado, o se solucionará pronto, en los ordenadores y sistemas operativos normales con sencillas actualizaciones de software. Sin embargo, es muy posible que los microordenadores que gestionan aires acondicionados, ascensores, bombas, cerraduras y cadenas de montaje de fábricas sigan funcionando durante la próxima década con versiones de software obsoletas y vulnerables al Y2K38.
Problemas potenciales de la Epochalypse
El traspaso de la fecha a 1901 o 1970 afectará a los distintos sistemas de distintas formas. En algunos casos, como un sistema de iluminación programado para encenderse todos los días a las 7 p. m., puede pasar completamente desapercibido. En otros sistemas que dependen de marcas de tiempo completas y precisas, podría ocurrir un fallo total; por ejemplo, en el año 2000, las terminales de pago y los molinetes de transporte público dejaron de funcionar. También son posibles casos cómicos, como la emisión de un certificado de nacimiento con fecha de 1901. Mucho peor sería el fallo de sistemas críticos, como el cierre completo de un sistema de calefacción o el fallo de un sistema de análisis de médula ósea en un hospital.
La criptografía ocupa un lugar especial en la Epochalypse. Otra diferencia crucial entre 2038 y 2000 es el uso omnipresente de cifrado y firmas digitales para proteger todas las comunicaciones. Los certificados de seguridad por lo general fallan en la verificación si la fecha del dispositivo es incorrecta. Esto significa que un dispositivo vulnerable quedaría incomunicado, incluso si sus aplicaciones comerciales principales no tienen ningún código que gestione la fecha de manera incorrecta.
Lamentablemente, el espectro completo de consecuencias solo se puede determinar mediante pruebas controladas de todos los sistemas, con análisis independiente de una posible cascada de fallos.
El aprovechamiento malicioso de Y2K38
Los equipos de TI y seguridad de la información deben tratar el Y2K38 no como un simple error de software, sino como una vulnerabilidad que puede conducir a varios fallos, incluida la denegación de servicio. En algunos casos, incluso pueden ser explotados por agentes maliciosos. Para hacer esto, necesitan la capacidad de manipular la hora en el sistema de destino. Esto es posible en al menos dos escenarios:
- Interferir con los datos del protocolo NTP al alimentar el sistema atacado con un servidor de hora falso
- Falsificar la señal de GPS, si el sistema utiliza la hora del satélite
El aprovechamiento de este error es más probable en los sistemas de TO e IoT, donde las vulnerabilidades son tradicionalmente lentas de corregir y las consecuencias de un fallo pueden ser mucho más sustanciales.
Un ejemplo de una vulnerabilidad fácilmente explotable relacionada con el registro del tiempo es CVE-2025-55068 (CVSSv3 8.2, CVSSv4 base 8.8) en las consolas automáticas de medición de tanques de combustible ProGauge MagLink LX4 de Dover. La manipulación de la hora puede causar una denegación de servicio en la estación de servicio y bloquear el acceso al panel de administración web del dispositivo. Este defecto se ganó su propia advertencia de la CISA.
El estado actual de la mitigación de Y2K38
Las bases para resolver el problema de Y2K38 se han establecido con éxito en los principales sistemas operativos. El núcleo de Linux añadió compatibilidad para la hora de 64 bits incluso en arquitecturas de 32 bits a partir de la versión 5.6 en 2020, y Linux de 64 bits siempre estuvo protegido contra este problema. La familia BSD, macOS y iOS usan hora de 64 bits en todos los dispositivos modernos. Todas las versiones de Windows lanzadas en el siglo XXI no son susceptibles a Y2K38.
La situación a nivel de almacenamiento y aplicación de datos es mucho más compleja. Los sistemas de archivos modernos como ZFS, F2FS, NTFS y ReFS se diseñaron con marcas de tiempo de 64 bits, mientras que los sistemas más antiguos como ext2 y ext3 siguen siendo vulnerables. Ext4 y XFS requieren que se activen indicadores específicos (inodo extendido para ext4 y bigtime para XFS) y es posible que sea necesario convertir los sistemas de archivos existentes sin conexión. En los protocolos NFSv2 y NFSv3, persiste el formato de almacenamiento de hora desactualizado. Es un panorama de entramado similar en las bases de datos: el tipo TIMESTAMP en MySQL está fundamentalmente limitado al año 2038 y requiere la migración a DATETIME, mientras que los tipos de marca de tiempo estándar en PostgreSQL son seguros. Para las aplicaciones escritas en C, se han creado rutas para usar la hora de 64 bits en arquitecturas de 32 bits, pero todos los proyectos requieren una recompilación. Los lenguajes como Java, Python y Go por lo general usan tipos que evitan el desbordamiento, pero la seguridad de los proyectos compilados depende de si interactúan con bibliotecas vulnerables escritas en C.
Una gran cantidad de sistemas de 32 bits, dispositivos integrados y aplicaciones siguen siendo vulnerables hasta que se reconstruyan y prueben, y luego todos sus usuarios instalen las actualizaciones.
Varias organizaciones y entusiastas están tratando de sistematizar la información al respecto, pero sus esfuerzos están fragmentados. En consecuencia, no existe una “base de datos común de vulnerabilidades Y2K38” (1, 2, 3, 4, 5).
Enfoques para la reparación de Y2K38
Las metodologías creadas para priorizar y corregir vulnerabilidades son directamente aplicables al problema del año 2038. El desafío clave será que, en la actualidad, ninguna herramienta puede crear una lista exhaustiva de software y hardware vulnerables. Por lo tanto, es esencial actualizar el inventario de los activos de TI corporativos, asegurarse de que el inventario se enriquezca con información detallada sobre el firmware y el software instalados, y luego investigar sistemáticamente la cuestión de la vulnerabilidad.
La lista se puede priorizar según la importancia de los sistemas comerciales y los datos de la pila de tecnología en la que se basa cada sistema. Los siguientes pasos son los siguientes: estudiar el portal de soporte del proveedor, realizar consultas directas a los fabricantes de hardware y software sobre su estado con respecto a Y2K38 y, como último recurso, la verificación mediante pruebas.
Al probar los sistemas corporativos, es fundamental tomar precauciones especiales:
- Nunca realices pruebas en los sistemas de producción.
- Crea un depósito de copias de seguridad de los datos inmediatamente antes de la prueba.
- Aísla el sistema que se está probando de las comunicaciones para que no pueda confundir a otros sistemas de la organización.
- Si el cambio de fecha utiliza NTP o GPS, asegúrate de que las señales de prueba de 2038 no puedan llegar a otros sistemas.
- Después de la prueba, vuelve a configurar los sistemas a la hora correcta y documenta en detalle todos los comportamientos observados del sistema.
Si se determina que un sistema es vulnerable a Y2K38, se debe solicitar al proveedor una línea de tiempo de reparación. Si no se puede implementar una reparación, planifica una migración; afortunadamente, el tiempo que nos queda aún permite actualizar incluso sistemas bastante complejos y costosos.
Lo más importante al abordar Y2K38 es no pensar en él como un problema de un futuro lejano cuya solución puede esperar fácilmente otros cinco a ocho años. Es muy probable que ya no tengamos tiempo para erradicar por completo el defecto. Sin embargo, dentro de una organización y su flota de tecnología, una planificación cuidadosa y un enfoque sistemático para resolver el problema permitirán llegar a tiempo.
estrategia
Consejos