Ir al contenido principal
2038 Guía de Supervivencia de Errores: Lecciones de Problemas de Código en Año Bisiesto
Explicaciones

2038 Guía de Supervivencia de Errores: Lecciones de Problemas de Código en Año Bisiesto

Descubra qué es el error 2038 , por qué es importante y cómo evitar que provoque fallos en sus sistemas en el futuro

The 2038 bug refers to a known issue with how millions of systems store and calculate dates and times. Se prevé que este error provoque que las fechas y las horas sean incorrectas starting January 19, 2038.

Quizá esté pensando: «¿Una fecha errónea?». ¿Un mal momento? «¡Y qué!» Pero, ¿qué ocurre si hay una fecha errónea en una base de datos bancaria que programa de forma rutinaria transferencias y pagos? ¿O una hora incorrecta en un servidor que provoque que caduque el certificado SSL de un sitio web, lo que expondría a los visitantes a posibles riesgos de seguridad?

The reality is the 2038 bug isn't the first and won't be the last time date and time calculation issues have affected the systems we use daily.

De hecho, dado que el año 2024 es bisiesto, podemos establecer numerosos paralelismos entre los problemas relacionados con el tratamiento contable de los años bisiestos en los sistemas y el próximo año 2038 bug to , lo que nos ayudará a comprender mejor qué puede provocar cálculos erróneos de fecha y hora, así como su posible impacto.

El 2038 bug is no es un escenario hipotético, sino una amenaza real que podría afectar a una amplia gama de sistemas, tales como sistemas y dispositivos integrados, dispositivos del Internet de las cosas (IoT), sistemas operativos, bases de datos, servidores, redes, aplicaciones y servicios web. El objetivo de esta publicación es ofrecer una comprensión más profunda de lo que es el « 2038 bug is», incluyendo algunos ejemplos reales y buenas prácticas que puede empezar a aplicar hoy mismo para ayudar a prevenir problemas graves en un futuro no muy lejano.

First, we'll provide a brief overview of similar problems that can occur when calculating leap years in systems to help set the stage for understanding the more complex 2038 bug and why it matters for device security.

Lo que los años bisiestos pueden enseñarnos sobre los cálculos de fecha y hora

En el año 2024, el mundo vivirá un acontecimiento poco habitual: un año bisiesto. Esto significa que febrero tendrá 29 days instead días de los 28 previstos, lo que supone añadir un día más al calendario... y un día que no aparece en algunos sistemas de software y hardware.

¿A qué se debe eso? Muchos sistemas heredados contienen una lógica excesivamente simplificada para los años bisiestos, lo que puede provocar que los sistemas pasen incorrectamente de February 28 a March 1, lo que, a su vez, puede causar fallos en los cálculos de fecha y hora.

Una regla habitual que se utiliza para determinar si un año es también un año bisiesto consiste en comprobar si es divisible por cuatro. Sin embargo, existen otras excepciones que no suelen tenerse en cuenta en este cálculo y que pueden hacer que este resulte incorrecto: un año debe ser divisible por cuatro , salvo si el año también es divisible por 100, y , salvo si también es divisible por 400.

Tomemos el the year 2100 como ejemplo. Dado que 2100 es divisible por cuatro, algunos sistemas pueden suponer erróneamente que será un año bisiesto. Utilizando el resto de la lógica de cálculo de los años bisiestos, podemos determinar que, si bien 2100 es divisible por 100, no es divisible por 400. Por lo tanto, el 2100 es, en realidad, y no , un año bisiesto.

Omitir un día cada cuatro años puede parecer un detalle sin importancia, pero problemas como este en el cálculo de la fecha y la hora pueden acarrear graves consecuencias para los sistemas y sus usuarios.

Otro ejemplo, aún más preocupante, de los problemas relacionados con el cálculo de fechas y horas es el próximo 2038 bug, que podría causar graves problemas a los ordenadores y dispositivos. Analicemos con más detalle en qué consiste y por qué ocurre esto.

¿En qué consiste el « 2038 bug»?

El « 2038 bug», también conocido como el «error del milenio de Unix» o « Y2K38», es un problema que se deriva de la forma en que algunos sistemas almacenan y representan los valores de fecha y hora mediante un número denominado «marca de tiempo».

Una marca de tiempo es el número de segundos que han transcurrido desde el January 1, 1070, lo que se conoce como la «época Unix». Por ejemplo, the timestamp for January 1, 2024, en 01:00:00 UTC, is 1704070800, lo que supone que han transcurrido means 1704070800 segundos desde la época.

Sin embargo, algunos sistemas utilizan un tipo de datos denominado a signed 32-bit integer to que almacena la marca de tiempo en el sistema operativo Unix y sus derivados. A signed 32-bit integer can solo almacena números comprendidos entre -2147483648 y 2147483647. Esto significa que la marca de tiempo más alta que estos sistemas pueden gestionar es 2147483647, lo que corresponde a to January 19, 2038, a las 03:14:07 UTC. A partir de ese momento, la marca de tiempo se desbordará y pasará a ser un número negativo, lo que provocará que la fecha y la hora sean erróneas.

Por ejemplo, the timestamp for January 20 y 2038 equivalen a 2147483648 en tiempo Unix. Dado que no se trata de una marca de tiempo válida en formato Unix, se producirá un desbordamiento y pasará a ser -2147483648, lo que corresponde a las December 13, 1901, a las 20:45:52 UTC. Esto es el curso the year 2038 bug.

Tipos de sistemas afectados por el error 2038

Muchas personas prevén que este fallo provocará graves problemas en los sistemas que utilizan enteros con signo de 32 bits para almacenar la fecha y la hora, lo que dará lugar a un comportamiento incorrecto e impredecible que podría afectar al funcionamiento y a la seguridad, como fallos del sistema, errores y pérdida de datos.

Analicemos los tipos de sistemas que, según se sabe, utilizan marcas de tiempo basadas en Unix para almacenar fechas y horas que podrían verse afectadas por el error 2038 :

  • de bases de datos: varios tipos de bases de datos, incluidas las relacionales y las NoSQL
  • Programas en C: programas en C y otros programas escritos en lenguajes basados en C, como C++ y PHP
  • Sistemas y dispositivos integrados: dispositivos médicos, sistemas de control industrial para instalaciones como centrales eléctricas, sistemas de transporte, automóviles con sistemas informáticos a bordo que supervisan el control electrónico de estabilidad y el control de tracción, routers, conmutadores, sensores y dispositivos del Internet de las cosas (IoT), como los electrodomésticos inteligentes
  • Sistemas operativos: Windows, Linux y sistemas operativos basados en Linux, como Android e iOS para teléfonos móviles

Ejemplos recientes del error del año 2038

Algunos sistemas ya están mostrando el impacto de la 2038 bug in de diversas maneras.

Por ejemplo, los desarrolladores pueden utilizar fechas muy lejanas en el futuro para aspectos como la programación, la caducidad o el cifrado; por ejemplo, pueden emplear la fecha 9999-12-31 como marcador de posición para indicar un período indefinido o infinito. Sin embargo, esta fecha equivale aproximadamente a 253402236000 y supera con creces el valor máximo del formato de tiempo Unix.

Es posible que otros utilicen fechas futuras superiores a 2038 con fines de prueba o simulación, o para representar acontecimientos históricos o geológicos que tuvieron lugar antes de la era común. En todos estos casos, el año 2038 problem can provoca resultados incorrectos, errores y conclusiones poco fiables.

A continuación se presentan algunos ejemplos reales de sistemas que ya han experimentado problemas similares relacionados con el uso de las marcas de tiempo de Unix:

Consejos para prevenir la 2038 bug

Corregir la actualización de la versión 2038 bug requires , eliminando o sustituyendo el tipo de datos «entero con signo de 32 bits» en los sistemas y en cualquier código con el que interactúe, lo cual puede resultar costoso y llevar mucho tiempo. No obstante, adoptar ahora las siguientes medidas preventivas para actualizar sus sistemas, aplicaciones y dispositivos podría marcar una diferencia significativa a partir del 19 de enero:

  • El uso de un formato de 64 bits para almacenar y representar valores de fecha y hora ampliará el rango de valores posibles a miles de millones de años.
  • Utilización de distintos formatos de fecha y hora para almacenar y representar valores, como el formato ISO 8601
  • Realización de pruebas y auditorías en para detectar posibles problemas relacionados con la fecha y la hora, con el fin de identificar código, bibliotecas o software obsoletos que puedan ser vulnerables al error 2038 .
  • Actualizar y aplicar parches al código, el software y los dispositivos de con regularidad para garantizar que sean compatibles con los estándares y la tecnología más recientes

Muchas empresas ya son conscientes de the year 2038 problem and y están tomando medidas proactivas para actualizar their systems to use 64-bit data los tipos o las representaciones alternativas de las marcas de tiempo y los valores de fecha. Por ejemplo, Apple comenzó a incorporar la compatibilidad con 64 bits en macOS a partir de la versión 2003 (se abre en una nueva pestaña), lo que puede contribuir a garantizar que los usuarios de Mac no se encuentren con issues with dates after January 2038.

¿Se ha resuelto el problema the year 2038 problem be ?

Tanto el año 2038 bug and como el 2024 , que son años bisiestos, nos recuerdan que los cálculos de fecha y hora no son algo trivial, sino aspectos complejos y fundamentales del desarrollo de código y software. La buena noticia es que el the year 2038 problem is no es el apocalipsis inevitable que algunos artículos dan a entender, siempre y cuando se adopten medidas proactivas.

Si es consciente de los posibles problemas y da prioridad a las soluciones, podrá minimizar más fácilmente el impacto de los 2038 bug and y garantizar que sus sistemas funcionen sin problemas y de forma segura durante mucho tiempo.

How can you begin addressing the 2038 bug in your environment? Una forma de hacerlo es obtener una visión global de sus activos y del estado de su software. By monitoring and scanning your endpoint devices (opens in a new tab) regularly, you can more easily identify devices running outdated code or software, replace any devices near the end of their life cycles, or update those using 32-bit systems that may be more prone to the 2038 bug.

Dado que modificar el tipo de datos y el código que gestiona el error 2038 puede provocar errores, problemas de compatibilidad y una disminución del rendimiento, disponer de visibilidad en tiempo real de sus dispositivos puede ayudarle a prevenir mejor las posibles vulnerabilidades y los riesgos de seguridad de los puntos finales (se abre en una nueva pestaña).

Descubra cómo la plataforma de Tanium está diseñada para simplificar la gestión de terminales (se abre en una nueva pestaña) y ofrece funciones para optimizar sus tareas, al tiempo que da más autonomía a los usuarios, como la automatización de la aplicación de configuraciones, la respuesta rápida ante amenazas y la posibilidad de que los empleados solucionen por sí mismos los problemas habituales, todo ello en una única solución.

Además, nuestro enfoque respecto a la gestión autónoma de terminales (AEM) de , (se abre en una nueva pestaña),, , integrará nuevas capacidades asistidas por IA en la plataforma Tanium XEM para ofrecer recomendaciones de automatización y acciones inteligentes asociadas y altamente personalizables, diseñadas teniendo en cuenta la seguridad, la protección y la escalabilidad.